我使用的是 gradle 1.10,android 插件的版本是 0.8.0。我的 android 项目需要这两个 jar:jackson-core-asl-1.9.11.jar
和 jackson-mapper-asl-1.9.11.jar
。我这样添加文件:
dependencies {
compile files('libs/jackson-core-asl-1.9.11.jar')
compile files('libs/jackson-mapper-asl-1.9.11.jar')
}
在 gradle 构建期间,我收到一条错误消息,指出这两个文件在 META-INF/ASL2.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/notice.txt'
exclude 'META-INF/license.txt'
}
我必须排除所有这些,因为它们显然都有一个重复的文件。
我想知道为什么会出现这个问题。它是android插件的错误还是gradle本身的错误?排除上述文件会导致任何问题吗?我只是排除了上述 jar ,还是那些 META-INF 文件中还有其他内容?我不想排除我的项目需要的任何东西
最佳答案
首先,这不是 gradle 的错误。 它发生在 MergeJavaResourcesTransform 任务中:
众所周知,APK只是一个zip文件,所以当将META-INFO/xxx放入zip文件时,如果之前已经添加过文件,我们不能再次放入。
并且 META-INFO 文件没有合并规则,所以我们只能添加名称为 NOTICE 等的文件
关于android - Gradle 将重复文件放入 apk 文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21547438/