Ped*_*dro 21 android android-gradle-plugin android-proguard
我试图构建一个包含La带有proguard 的库模块的应用程序,我注意到该库没有被混淆.试图理解为什么.在这个时刻,这是我的buildType:
release {
minifyEnabled false
useProguard true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
Run Code Online (Sandbox Code Playgroud)
经过一些搜索后,我遇到了ConsumerProguardFiles函数,该函数指出:
ProGuard规则文件将包含在已发布的AAR中.
然后,任何使用AAR的应用程序项目都会使用这些proguard规则文件(如果启用了ProGuard).
这允许AAR指定收缩或混淆排除规则.
这仅适用于Library项目.这在Application项目中被忽略.
现在buildType,我的库La中有以下内容:
release {
minifyEnabled false
useProguard true
consumerProguardFiles 'proguard-rules.pro'
}
Run Code Online (Sandbox Code Playgroud)
现在我的库La正在使用它的proguard规则,库代码被混淆了.
所以我的问题是:
1)这种不同行为的原因是什么.为什么ProguardFiles不会混淆库的规则,而是忽略它?
2)我猜测ConsumerProguardFiles所做的是将库的规则与主应用程序proguard规则合并.这个假设是否正确?
3)简而言之:对应用程序使用proguardFiles,对库使用ConsumerProguardFiles.正确?
感谢您抽出宝贵的时间阅读!
Fab*_*tel 13
据我了解,这minifyEnabled false意味着ProGuard 不会运行来缩小/混淆您的库模块.这是您想要的,因为库模块无法知道它将在您的应用程序模块中使用哪些部分.
相反,库模块必须向app模块提供其相关的proguard规则(通过consumerProguardFiles),然后app模块将运行ProGuard,同时具有自己的规则和库的规则,以最小化最终的应用程序APK.
| 归档时间: |
|
| 查看次数: |
7933 次 |
| 最近记录: |