问题
I'm using Proguard to obfuscate my code, and I need to keep every third party libraries like:
-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.**)
Thanks!
回答1:
To keep everything except classes in your own package you can use the rule that you already pointed out (excluding the brackets):
-keep class !my.package.name.** { *; }
This will implicitly keep everything else. You still can add additionally -keep rules for your classes if needed.
The rule for the -dontwarn should work in a similar way:
-dontwarn !my.package.name.**,**
You can also add similar -dontnote rules if needed.
来源:https://stackoverflow.com/questions/39421910/proguard-how-to-keep-everything-except-specific-condition