我已经在 Android 中创建了一个模块以在我的主应用程序中使用,并且似乎有两个文件
Consumer-rules.pro 和 proguard-rules.pro。
我想知道以下事情
- 所有模块代码是否都会被主模块亲卫规则的规则混淆
即使模块没有指定任何规则?
- Android 中的 Consumer-rules.pro 和 proguard-rules.pro 有什么区别?
- 我应该在我的模块中启用 minifyEnabled 吗?
- 我注意到我可以在主模块中为我的模块添加混淆规则,这是否意味着
模块中的亲卫规则在主模块中被覆盖吗?
请指教。
我会尽力回答每个问题,但如果有些问题没有意义,请告诉我!
1. 即使模块没有指定任何规则,所有模块代码是否都会被主模块亲卫规则的规则混淆?
混淆不是这样的。当您启用minifyEnabled
属性,它会尝试混淆应用程序模块中可用的代码及其第 3 方依赖项,并且您的库模块将被视为第 3 方依赖项。但它不会触及第三方依赖项的任何传递依赖项.
2. Android 中的 Consumer-rules.pro 和 proguard-rules.pro 有什么区别?
proguard-rules.pro是您为模块及其依赖项声明与 Proguard 相关的规则的文件。
消费者规则.pro是您声明可由使用者应用于您的模块的规则的文件(无论是谁使用你的模块/库作为依赖项——通常是库开发人员).
3. 我应该在我的模块中启用 minifyEnabled 吗?
我建议你这样做(每个开发者都应该发布 APK),但要确保一切都按预期工作,因为底层类.dex申请后的变化minifyEnabled
。它有助于减少输出 APK 大小、优化代码、混淆类文件等等......
4. 我注意到我可以在主模块中为我的模块添加 proguard 规则,那么这是否意味着模块中的 proguard 规则在主模块中被覆盖?
不,基本上图书馆规则是从消费者规则文件来自库模块本身,因此当您在应用程序模块中声明库的这些规则时,它会以相同的方式应用消费者规则,这基本上表明消费者在缩小时应该使用这些规则。
proguard-rules.pro库的 是您声明库的第三方依赖项规则的地方(这被认为是您的应用程序模块/主模块的传递依赖项),并且它不会被应用程序模块规则覆盖。
我希望这是有道理的!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)