Android 如何使用 Proguard 将我所有的 类 放在一个包中
Android how to place all my classes in one package using Proguard
我正在开发 SDK,我的环境有 SDK 库和一个使用它的测试项目。
我想保护我的库代码不受库用户的影响,因此我需要对其进行混淆处理,但仅此而已。
所以在我的库模块的 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
类 被混淆了,但他们的包没有改变。我休假 Eric Lafortune(Proguard 的作者)建议添加 allowaccessmodification
,但它没有帮助。我也尝试使用flattenpackagehierarchy
,但没有效果。
帮帮我,如何把我所有的类放在一个包裹里?
已解决:添加这些行后它完成了工作
-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(...);
}
我正在开发 SDK,我的环境有 SDK 库和一个使用它的测试项目。
我想保护我的库代码不受库用户的影响,因此我需要对其进行混淆处理,但仅此而已。
所以在我的库模块的 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
类 被混淆了,但他们的包没有改变。我休假 Eric Lafortune(Proguard 的作者)建议添加 allowaccessmodification
,但它没有帮助。我也尝试使用flattenpackagehierarchy
,但没有效果。
帮帮我,如何把我所有的类放在一个包裹里?
已解决:添加这些行后它完成了工作
-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(...);
}