首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Android如何使用Proguard将我的所有类放在一个包中

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

Stack Overflow用户
提问于 2015-10-15 07:12:24
回答 1查看 5.4K关注 0票数 19

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

我想保护我的库代码不受我的库用户和那里,因为我需要混淆它,但只是它。

因此,在我的库模块中的Android中,我添加了下一个脚本:

代码语言:javascript
运行
复制
-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,但没有效果。

帮帮我,怎么把我所有的课都放在一个包里?

EN

Stack Overflow用户

回答已采纳

发布于 2015-10-26 08:58:11

解决这个问题:在加上这些行之后,它完成了任务。

代码语言:javascript
运行
复制
-useuniqueclassmembernames
-keeppackagenames doNotKeepAThing

这是我的完整剧本

代码语言:javascript
运行
复制
-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(...);
}
票数 17
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33142101

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档