Android如何使用Proguard将所有类放在一个包中

我正在开发SDK,我的环境有SDK库和一个使用它的testing项目。

我想保护我的图书馆的代码,我的图书馆用户,因为我需要混淆它,但只是它。

所以在我的库模块中的Android Studio中,在proguard-rules.pro文件中添加了下一个脚本:

-dontpreverify -optimizations !code/simplification/arithmetic -keep class !com.example.**{ *; } -keep public class com.example.sdk.Example{*;} -keep public class com.example.sdk.IExampleCallback{*;} -keep public class com.example.sdk.ui.ExampleActivity -dontwarn android.util.Log -repackageclasses 'com.example.security' -allowaccessmodification 

这些类被混淆了,但是它们的包没有被改变。 我restEric Lafortune (Proguard的作者)build议增加allowaccessmodification ,但它没有帮助。 我也尝试使用flattenpackagehierarchy ,但它没有效果。

帮帮我,如何把我所有的课程放在一个包里?

Solutions Collecting From Web of "Android如何使用Proguard将所有类放在一个包中"

解决了这个问题:添加这些线后,它做了这项工作

 -useuniqueclassmembernames -keeppackagenames doNotKeepAThing 

这是我的完整脚本

 -optimizationpasses 30 -mergeinterfacesaggressively -dontpreverify -optimizations !code/simplification/arithmetic -repackageclasses 'com.example' -allowaccessmodification -useuniqueclassmembernames -keeppackagenames doNotKeepAThing -keep class !com.example.**{ *; } -keep public class com.sdk.example{ *; } -keep public class com.sdk.IExampleCallback{ *; } -keepclasseswithmembernames public class com.sdk.ui.activity.ExampleActivity{ public <methods>; protected <methods>; } -keepclasseswithmembernames public class com.example.sdk.ExampleReciever{ public <methods>; } -assumenosideeffects class android.util.Log { public static boolean isLoggable(java.lang.String, int); public static int v(...); public static int i(...); public static int w(...); public static int d(...); public static int e(...); }