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

时间:2016-09-10 02:22:39

标签: 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.**)

谢谢!

1 个答案:

答案 0 :(得分:9)

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

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

这将隐含其他一切。 如果需要,您仍然可以为您的类添加额外的 -keep 规则。

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

-dontwarn !my.package.name.**,**

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