当前位置:  开发笔记 > Android > 正文

ConsumerProguardFiles vs ProguardFiles

如何解决《ConsumerProguardFilesvsProguardFiles》经验,为你挑选了1个好方法。

我试图构建一个包含La带有proguard 的库模块的应用程序,我注意到该库没有被混淆.试图理解为什么.在这个时刻,这是我的buildType:

release {
 minifyEnabled false
 useProguard true
 proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
} 

经过一些搜索后,我遇到了ConsumerProguardFiles函数,该函数指出:

ProGuard规则文件将包含在已发布的AAR中.

然后,任何使用AAR的应用程序项目都会使用这些proguard规则文件(如果启用了ProGuard).

这允许AAR指定收缩或混淆排除规则.

这仅适用于Library项目.这在Application项目中被忽略.

现在buildType,我的库La中有以下内容:

release {
 minifyEnabled false
 useProguard true
 consumerProguardFiles 'proguard-rules.pro'
}

现在我的库La正在使用它的proguard规则,库代码被混淆了.

所以我的问题是:

1)这种不同行为的原因是什么.为什么ProguardFiles不会混淆库的规则,而是忽略它?

2)我猜测ConsumerProguardFiles所做的是将库的规则与主应用程序proguard规则合并.这个假设是否正确?

3)简而言之:对应用程序使用proguardFiles,对库使用ConsumerProguardFiles.正确?

感谢您抽出宝贵的时间阅读!



1> Fabian Strei..:

据我了解,这minifyEnabled false意味着ProGuard 不会运行来缩小/混淆您的库模块.这是您想要的,因为库模块无法知道它将在您的应用程序模块中使用哪些部分.

相反,库模块必须向app模块提供其相关的proguard规则(通过consumerProguardFiles),然后app模块将运行ProGuard,同时具有自己的规则和库的规则,以最小化最终的应用程序APK.


有没有办法从consumerProguardFiles覆盖或替换proguard
推荐阅读
Gbom2402851125
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有