混淆器proguard-android.txt 送300分

Birds2018 2014-08-26 04:25:58
hi guys

本人对混淆器有些迷糊,最近的一个android项目 上面关联了3,4个lib,有纯JAVA的,也有jni 的,所以配置了混淆器后 运行总是报错找不到方法或者类找不到。

哪位仁兄比较擅长这个,我本意是不想混淆关联的lib,比如ActionBarSherlock,JNI,视频播放JNI等,
这个文件混淆文件应该怎样写。 感谢 。

以下是错误:


08-26 04:18:40.558: E/AndroidRuntime(956): Caused by: java.lang.RuntimeException: java.lang.NoSuchMethodException: <init> [class android.app.Activity, int]
08-26 04:18:40.558: E/AndroidRuntime(956): at com.actionbarsherlock.ActionBarSherlock.wrap(ActionBarSherlock.java:232)
08-26 04:18:40.558: E/AndroidRuntime(956): at com.actionbarsherlock.app.SherlockFragmentActivity.getSherlock(SherlockFragmentActivity.java:32)
08-26 04:18:40.558: E/AndroidRuntime(956): at com.actionbarsherlock.app.SherlockFragmentActivity.requestWindowFeature(SherlockFragmentActivity.java:265)


等着。。。。
...全文
246 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
s278777851 2014-08-27
  • 打赏
  • 举报
回复
JNI部分, Java和JNI层关联的类名和方法名是不能混淆的, 混淆以后就找不到的方法了。例子 -keep public class com.xxxx.xxxxx.xxxxx{ public protected <methods>; } 如果有用到gson, 需要添加以下代码 -keep class sun.misc.Unsafe { *; } -keep class com.google.gson.examples.android.model.** { *; } 用到jar包, 则添加 -ignorewarnings -libraryjars libs/xxxxx.jar (修改成对应的jar包名字) 如果用到第三方lib项目,由于第三方的项目一般都是开源的, 都不混淆的了 -keep public class com.actionbarsherlock.** { *; } 以上内容都是配置在 proguard-project.txt (名字可以修改)里, 然后在project.properties里面引用 proguard.config=proguard-project.txt
Birds2018 2014-08-27
  • 打赏
  • 举报
回复
我再试试看,哈哈。
lionfresh 2014-08-27
  • 打赏
  • 举报
回复
楼上的答案都正确...
  • 打赏
  • 举报
回复
把不该混淆的代码混淆了导致方法找不到了吧? actionbarsherlock? try -keep class android.support.v4.app.** { *; } -keep interface android.support.v4.app.** { *; } -keep class com.actionbarsherlock.** { *; } -keep interface com.actionbarsherlock.** { *; } -keepattributes *Annotation*
  • 打赏
  • 举报
回复
引用 6 楼 hjywyj 的回复:
把不该混淆的代码混淆了导致方法找不到了吧? actionbarsherlock? try -keep class android.support.v4.app.** { *; } -keep interface android.support.v4.app.** { *; } -keep class com.actionbarsherlock.** { *; } -keep interface com.actionbarsherlock.** { *; } -keepattributes *Annotation*
+1 把不要混淆的都排除
Birds2018 2014-08-26
  • 打赏
  • 举报
回复
我要多试试看咯。
xiejiangquan 2014-08-26
  • 打赏
  • 举报
回复
我觉得是不是这个原因:你把你文中出问题的函数给混淆了,然后执行找不到了,所以出错?
hubujun 2014-08-26
  • 打赏
  • 举报
回复
导入lib文件,并且用-dontwarn 和 keep class结合试试,例如:-libraryjars libs/log4j.jar-dontwarn org.apache.log4j.*-keep class org.apache.log4j.** { *;}将-dontwarn和-keep 结合使用,意思是保持包里面的所有类和所有方法而不混淆,接着还叫ProGuard不要警告找不到这个包里面的类的相关引用。

80,350

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧