所以,我想在我的项目中添加一个外部库。这个库本身很小,大约有300个方法。但是它的proguard配置非常自由。我在一个准系统项目中运行了一个简单的测试,有/没有这个库,有/没有proguard,这就是我得到的结果
Proguard Lib Method Count
N N 15631
Y N 6370
N Y 15945
Y Y 15573
字符串
正如您所看到的,启用proguard后,计数为~6000。但是当我添加库时,计数飙升至~15000,尽管库本身只有~300个方法。
所以我的问题是,我如何忽略这个特定库的proguard配置?
更新:
这是不可能的Android gradle插件现在.我发现android bug根本没有优先级.请避免回答提到“这是不可能的”,并保持问题开放,直到一个变通办法或官方决定是可能的.否则,你将收集赏金的一半没有增加价值.谢谢!
3条答案
按热度按时间7d7tgy0s1#
在这种情况下,您有几个选择:
将以下内容添加到您的build.gradle:
字符串
使用DexGuard(7.2.02+)时,您可以将以下代码段添加到build.gradle中:
型
请注意,逻辑与上面的ProGuard示例相反,consumerRuleFilter将仅包括与模式匹配的消费者规则。
bttbmeg02#
如果您使用的是R8(自Android Gradle插件3.4.0起取代了ProGuard)-您可以通过向模块的
build.gradle
添加以下解决方案来过滤掉特定的消费者规则文件:字符串
上述变通方法已确认适用于Android Gradle插件4.2.2
如果决定依赖这样的解决方案-这可能是一个好主意,也添加某种自动检查和/或测试,以确保此过滤工作.鉴于该解决方案是相当脆弱的,可以打破与Android Gradle插件的未来更新.
sycxhyv73#
编辑:在Gradle 7.3中,您可以通过一种方法指定要忽略哪些依赖项的保持规则:https://developer.android.com/reference/tools/gradle-api/7.3/com/android/build/api/kitches/KeepRules#kitreExternalapplications(Kotlin.Array)
举例来说:
字符串
旧答案:受Jonas' answer启发,针对KotlinDSL进行了修改,并确认可在Android Gradle插件7.2.1上工作:
型