在我将Studio从0.3.7更新到0.4.0之后,我无法编译我的项目.我在stackoverflow上找到了一个解决方案:复制了重复文件(Android Studio 0.4.0)
我将我的项目更新为graged 0.7.+,但我不知道我必须把下一个字符串放在哪里:
android { packagingOptions { exclude 'META-INF/LICENSE.txt' } }
我的logcat:日志
Execution failed for task ':Prog:packageDebug'. > Duplicate files copied in APK META-INF/LICENSE.txt File 1: /home/scijoker/AndroidStudioProjects/ProgProject/Prog/libs/httpclient-4.1.1.jar File 2: /home/scijoker/AndroidStudioProjects/ProgProject/Prog/libs/httpclient-4.1.1.jar
PS开发在ubuntu 13.04
将dependecies放在顶部,最后的packageOptions为我工作.
apply plugin: 'android'.
这是我在app文件夹中的完整build.gradle.
dependencies { compile 'com.android.support:support-v4:+' compile files('libs/apache-mime4j-0.6.jar') compile files('libs/httpmime-4.0.jar') } android { compileSdkVersion 19 buildToolsVersion "19.0.1" defaultConfig { minSdkVersion 7 targetSdkVersion 10 versionCode 1 versionName "1.0" } buildTypes { release { runProguard false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard- rules.txt' } packagingOptions { exclude 'META-INF/DEPENDENCIES.txt' exclude 'META-INF/LICENSE.txt' exclude 'META-INF/NOTICE.txt' exclude 'META-INF/NOTICE' exclude 'META-INF/LICENSE' exclude 'META-INF/DEPENDENCIES' exclude 'META-INF/notice.txt' exclude 'META-INF/license.txt' exclude 'META-INF/dependencies.txt' exclude 'META-INF/LGPL2.1' } }
编辑:几乎所有操作系统许可证都包含"在您的项目中包含许可证副本"的义务.这意味着,您必须包含您在项目中使用的所有操作系统许可证的副本.通过在gradle中"排除"它们,您违反了许可证.
将它们从项目中排除可能不是最佳选择.谢谢RS的信息.
您可以通过添加以下代码来修复它project/app/build.gradle
:
android { // Fixed build error : Duplicate files copied in APK META-INF/xxx packagingOptions { exclude 'META-INF/DEPENDENCIES' exclude 'META-INF/NOTICE' exclude 'META-INF/LICENSE' exclude 'META-INF/NOTICE.txt' exclude 'META-INF/LICENSE.txt' } }
注意!!可能的OpenSource许可证违规.
如上所述排除license.txt文件,您可能违反了一些开源许可证,因为它是开源许可证中的一个共同点,同意将其添加到您的源代码中.更好地检查您的开源许可证.
更新: 在有更好的解决方案之前,请使用
packagingOptions { pickFirst 'META-INF/license.txt' }
像这样,你至少履行了许可义务的一部分
加上
android { packagingOptions { exclude 'META-INF/LICENSE.txt' } }
在build.gradle中
插入此代码时
android{ packagingOptions{ exclude 'META-INF/notice.txt' exclude 'META-INF/license.txt' } }
如果错误显示,请确认
>在APK META-INF/LICENSE.txt中复制的重复文件
然后加
android{ packagingOptions{ exclude 'META-INF/LICENSE.txt' } }
如果错误显示
>在APK META-INF/LICENSE中复制的重复文件
然后加
android{ packagingOptions{ exclude 'META-INF/LICENSE' } }
如果错误显示
>在APK META-INF/license.txt中复制的重复文件
然后加
android{ packagingOptions{ exclude 'META-INF/license.txt' } }
简而言之,CASE和文档FORMAT(.txt)非常重要.
(此错误也存在于Android Studio 1.1.0中)
我遇到了与新版本gradle相同的问题,下面的build.gradle文本格式适用于我:
我的libs文件夹中有两个jackson jar.
android { compileSdkVersion 21 buildToolsVersion "21.1.2" defaultConfig { applicationId "com.omtlab.myapplication" minSdkVersion 14 targetSdkVersion 21 versionCode 1 versionName "1.0" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } packagingOptions { exclude 'libs/jackson-core-asl-1.9.13.jar' exclude 'libs/jackson-mapper-asl-1.9.13.jar' exclude 'META-INF/ASL2.0' exclude 'META-INF/LICENSE' exclude 'META-INF/NOTICE' } } dependencies { //compile fileTree(include: ['*.jar'], dir: 'libs') compile 'com.android.support:appcompat-v7:21.0.3' compile files('libs/jackson-core-asl-1.9.13.jar') compile files('libs/jackson-mapper-asl-1.9.13.jar') }
这将有助于您解决问题
packagingOptions { exclude 'META-INF/ASL2.0' exclude 'META-INF/LICENSE' exclude 'META-INF/NOTICE' exclude 'META-INF/LICENSE.txt' exclude 'META-INF/NOTICE.txt' exclude 'META-INF/DEPENDENCIES' }
添加:
packagingOptions { exclude 'META-INF/LICENSE' exclude 'META-INF/NOTICE' exclude 'META-INF/NOTICE.txt' }
为我工作,biniam_Ethiopia的解决方案可能是最安全的