以下适用场景:eclipse中的maven项目
为什么将这两个问题放在一起讲?
因为反编译才能将代码混淆的效果直接展现。
这两个问题网络上的参考资料很多,我的这一份也就是从这么多资料中遴选出对我帮助较大的一些,并记录当前的解决进度,分享给大家。
参考资料及所需工具:
代码混淆——
1.Eclipse+ADT进行Android应用程序的代码混淆和签名
讲述了如何启动代码混淆功能:在project.properties中添加
proguard.config=proguard.cfg
及生成签名发布apk(附图)
2.混淆打包及出错信息的解决方法
讲述了可能出现的问题:
例1(由于混淆找不到所需的类):Warning: com.baidu.frontia.api.FrontiaPush$a$1:
can't find superclass orinterfacecom.baidu.frontia.module.push.
FrontiaPushListenerImpl$CommonMessageListenerImpl
解决(将所需的类排除):添加
-dontwarn com.baidu.**
及
-keep class com.baidu.** { *; }
例2(依赖的文件被混淆):Warning: libraryclassandroid.graphics.drawable.
NinePatchDrawable depends on programclassorg.xmlpull.v1.XmlPullParser
解决(将依赖文件排除):在proguard.cfg中添加
-dontwarn org.xmlpull.v1.**
及
-keep class org.xmlpull.v1.** { *; }
提供了proguard.cfg文件的示例
3.Unable to execute dex: GC overhead limit exceeded
解决的一个问题 在export的最后一步可能出现 需要修改eclipse.ini
添加
-vm
C:\Program Files\Java\jdk1.7.0_21\bin\javaw.exe
将
-Xms40m
-Xmx512m
修改为
-Xms256m
-Xmx1024m
4.android混淆代码总结
总结及另一份proguard.cfg文件示例
5.android 通过eclipse混淆代码 打包 + proguard 总结
对proguard.cfg文件中可能用到的内容的参数描述及配置选项
反编译——
Android APK反编译详解(附图)
过程简述:将apk文件后缀改为zip并解压,得到其中的classes.dex,将classes.dex复制到dex2jar.bat所在文件夹,在命令行下定位到dex2jar.bat所在目录,运行
dex2jar.bat classes.dex
,生成classes_dex2jar.jar
然后,进入jdgui,打开上面生成的jar包classes_dex2jar.jar,即可看到源代码
工具下载
反编译工具包(包含Androidfby、apktool、dex2jar)
dex2jar官网下载(没有试过)
jdgui官网下载(没有试过)
网友评论