Proguard:如何保留除特定条件外的所有内容?

标签 proguard

我正在使用 Proguard 来混淆我的代码,我需要保留每个第三方库,例如:

-keep class com.layer.**
-dontwarn com.layer.**
-keep class com.twitter.**
-keep class android.support.**
-keep class com.crashlytics.** { *; }
-dontwarn com.crashlytics.**
...

And whenever I add a new third party library, I need to check its package name and add it to my proguard config file, or the app may crashes.

Can't I write the rule just like this? I don't care about codes that's not mine.

-keep class !(my.package.name.**)
-dontwarn !(my.package.name.**)

谢谢!

最佳答案

要将除类之外的所有内容保留在您自己的包中,您可以使用您已经指出的规则(不包括括号):

-keep class !my.package.name.** { *; }

这将隐式保留其他所有内容。
您还可以另外添加 -保持如果需要,您的类(class)规则。

的规则-dontwarn 应该以类似的方式工作:
-dontwarn !my.package.name.**,**

您也可以添加类似的 -dontnote 如果需要,规则。

关于Proguard:如何保留除特定条件外的所有内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39421910/

相关文章:

android - android proguard在build.gradle中动态应用映射

android - 用于SpringAndroid库的Android Proguard配置

java - ClassNotFoundException:twitter4j.conf.PropertyConfigurationFactory:Android

java - 使用 Proguard 在 dist 上混淆 Play 2 网络应用程序?

java - jar 或类混淆的最佳工具,无需编写任何额外的配置文件

proguard - 您如何解读反混淆后的 Android 崩溃报告?

android - Proguard 关于重复类定义的警告,但不会打印出重复类

java - 在Java源代码中隐藏密码

android - SBT Android-Plugin 中 "proguardInJars"的语义是什么?

android - Proguard 混淆注解