Search code examples
androidproguardobfuscationandroid-proguard

Proguard for android obfuscation


Is there an easy way to handle this rather than changing the package name. Eg: I have the following 10 package names and I wish to obfuscate just one of them and keep rest of the other packages.

  • com.myOrg.myApp.pkgNameA
  • com.myOrg.myApp.pkgNameB
  • com.myOrg.myApp.pkgNameC
  • com.myOrg.myApp.pkgNameD
  • com.myOrg.myApp.pkgNameE
  • com.myOrg.myApp.pkgNameF
  • com.myOrg.myApp.pkgNameG
  • com.myOrg.myApp.pkgNameH
  • com.myOrg.myApp.pkgNameI
  • com.myOrg.myApp.pkgNameJ

I wish to obfuscate "com.myOrg.myApp.pkgNameA" and leave the other packages as is. I am presently listing down packages B-J in my proguard file to avoid obfuscating it. If I put "com.myOrg.myApp.**{*;}" this doesn't obfuscate "com.myOrg.myApp.pkgNameA" too.

Part of my proguard file:

-keep class com.myOrg.myApp.pkgNameB.** { *; }
-keep class com.myOrg.myApp.pkgNameC.** { *; }
-keep class com.myOrg.myApp.pkgNameD.** { *; }
-keep class com.myOrg.myApp.pkgNameE.** { *; }
-keep class com.myOrg.myApp.pkgNameF.** { *; }
-keep class com.myOrg.myApp.pkgNameG.** { *; }
-keep class com.myOrg.myApp.pkgNameH.** { *; }
-keep class com.myOrg.myApp.pkgNameI.** { *; }
-keep class com.myOrg.myApp.pkgNameJ.** { *; }

Is there any easy way to let proguard file know to keep all the packages except one which needs to be obfuscated?


Solution

  • can you use the negation operator on the class name?

    -keep class !com.myOrg.myApp.pkgNameA.** { *; }