Android Studio 0.4复制在APK META-INF / LICENSE.txt中复制的文件
在我的Studio从0.3.7更新到0.4.0之后,我无法编译我的项目。 我发现了一个解决scheme在stackoverflow: 重复的文件复制(Android Studio 0.4.0)
我把我的项目更新为0.7 +,但是我不知道我必须把下一个string放在哪里:
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开发
把依赖关系放在最上面,packageOptions放在最后。
apply plugin: 'android'.
这是我的完整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' } }
编辑:几乎所有的操作系统许可证都包含将“许可证副本”包含在项目中的义务。 所以这意味着你必须在你的项目中包含你使用的所有操作系统许可证的副本。 通过“排除”他们,你违反了许可证。
从项目中排除他们可能不是最好的select。 感谢RS的信息。
注意!! 可能的OpenSource许可证违规。
如果不包含上面提出的license.txt文件,您可能会违反一些开源许可证,因为这是开源许可证中的一个共同点,即同意将其添加到源代码中。 更好地检查你的开源许可证。
更新:直到有一个更好的解决scheme,使用
packagingOptions { pickFirst 'META-INF/license.txt' }
像这样你至less完成了许可证义务的一部分
只需添加
android { packagingOptions { exclude 'META-INF/LICENSE.txt' } }
在build.gradle
您可以通过将以下代码添加到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' } }
我正在面对同样的问题,因为每个新版本的gradle,下面build.gradle文本格式为我工作:
在我的libs文件夹中有两个jacksonjar子。
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/LICENSE' exclude 'META-INF/NOTICE' exclude 'META-INF/NOTICE.txt' }
为我工作,biniam_Ethiopia的解决scheme可能是最安全的
插入此代码
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中)
这将帮助您解决问题
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' }
我只是加2:
android{ packagingOptions{ exclude 'META-INF/LICENSE.txt' exclude 'META-INF/LICENSE' } }
我有一个类似的错误,并解决它没有packingOptions()
和exclude
function。 我添加了两个依赖关系,但是其中一个是第一个子组。 这导致了错误,一旦我删除其中一个我得到一个干净的构build。 我build议在依赖块中检查类似的错误。
当一起使用java-jwt
和jackson-core
时,请使用以下命令:
exclude("META-INF/maven/com.fasterxml.jackson.core/jackson-annotations/pom.properties") exclude("META-INF/maven/com.fasterxml.jackson.core/jackson-annotations/pom.xml") exclude("META-INF/maven/com.fasterxml.jackson.core/jackson-core/pom.properties") exclude("META-INF/maven/com.fasterxml.jackson.core/jackson-core/pom.xml") exclude("META-INF/maven/com.fasterxml.jackson.core/jackson-databind/pom.properties") exclude("META-INF/maven/com.fasterxml.jackson.core/jackson-databind/pom.xml")
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' }
添加build.gradle文件和syn项目
这可能是不好的做法,但是如果你包括多个大型图书馆,你可能会发现自己正在经历数百种这样的冲突。
下面列出的是这种情况下的一个超级简单的修复:
android { .... packagingOptions { // Allow the compilation process to choose the dependencies for us. pickFirst "**" } }