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

Rom*_*'ai 2 proguard

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

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

每当我添加一个新的第三方库时,我需要检查其包名并将其添加到我的proguard配置文件中,否则应用程序可能会崩溃.

我不能像这样写规则吗?我不关心那些不是我的代码.

-keep class !(my.package.name.**)
-dontwarn !(my.package.name.**)
Run Code Online (Sandbox Code Playgroud)

谢谢!

T. *_*art 9

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

-keep class !my.package.name.** { *; }
Run Code Online (Sandbox Code Playgroud)

这将隐含地保留其他所有内容.您仍然可以添加额外-keep如果需要为您的类的规则.

-dontwarn的规则应该以类似的方式工作:

-dontwarn !my.package.name.**,**
Run Code Online (Sandbox Code Playgroud)

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