在我的gradle文件中,我具有以下内容:

packagingOptions {
    exclude 'META-INF/LICENSE'
    exclude 'META-INF/LICENSE.txt'
    exclude 'META-INF/NOTICE'
}

根据文档:
/**
 * Adds an excluded paths.
 * @param path the path, as packaged in the APK
 */

这是什么意思?有人可以给我一个现实的例子,说明为什么需要进行这些排除吗?

最佳答案

如果要将几个aar文件的扩展名更改为zip并打开它们,最终将有两个aar文件,这些文件的路径相同。

SomeDependency-A.aar
-META-INF/LICENSE
...

SomeDependency-B.aar
-META-INF/LICENSE
...

合并aar依赖项时,它会失败,因为它尝试添加文件LICENSE且该文件已经存在。

我们通过排除重复的文件来解决此问题
android {
    packagingOptions {
        exclude 'META-INF/LICENSE'
    }
}

关于android - 为什么需要gradle build PackagingOptions?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35417464/

10-12 05:09