android编译与反编译

1、代码混淆

1)      查看项目中有没有proguard.cfg。

如果没有的话下载,然后将proguard.cfg复制到项目中。

2) 在项目中的project.properties文件中添加:proguard.config=proguard.cfg

3) 然后按照正常的签名对自己的应用进行签名,生成后的apk经过反编译后就会和源代码有很大的不一样。

注意:一定要通过正常的签名方式对应用进行签名,项目bin目录中生成的apk文件是使用系统默认签名的方式,没有达到代码混编的效果的。

如果签名不成功请往下看:

4) 不过这一步你会遇到很多问题,根本就签名不成功。例如:①如果工程引入了android-support-v4的jar类库,那么在工程打包混淆时,就会出现报错提示你:You may need to specify additional library jars (using'-libraryjars')。②引用第三方包等问题

如果工程引入了android-support-v4的jar类库,那你就在proguard.cfg里的后面,添加如下内容:

-libraryjars /android-support-v4.jar

-dontwarn android.support.v4.**

-keep class android.support.v4.** { *; }

-keep public class * extendsandroid.support.v4.**

-keep public class * extendsandroid.app.Fragment

然后你再打包看看,应该可以正常生成apk安装包了。

如果出现:"类1 can't find referenced class 类2" 字面上的意思就是类1找不到类2的引用;它会建议你:"You may need to specify additional library jars (using'-libraryjars').";

需要使用-libraryjars加上项目中使用到的第三方库就OK了。

例如:-libraryjars /android-support-v4.jar

注意:这里引用方式是当前工程的根目录(也可以配置其他目录),也就是说,你要把第三方jar放到当前目录下,否则就会警告说找不到jar文件!

        如果出现: can't find superclass or interfaceandroid.os.Parcelable$ClassLoaderCreator,碰到这样的情况,可以使用-dontwarncom.xx.yy.**,不对错误提出警告。

注意:使用这个方式的话,要确保自己没有用到这个库里面的类!否则就会抛ClassNotFoundException

如果在工程中确实用到了该类,采用上面方式还是不行。这个时候就要再增加一项:-keep class com.xx.yy.** { *;},让当前类不混淆。

总结:

对于引用第三方包的情况,可以采用下面方式避免打包出错:

-libraryjars /aaa.jar

-dontwarn com.xx.yy.**

-keep class com.xx.yy.** { *;}

最后打包成功!

2、反编译

参考:

点击打开链接http://mp.weixin.qq.com/s?__biz=MzA5MzY4NTQwMA==&mid=402793194&idx=1&sn=c065974423a485461e51b7724fb92bb2&scene=0#wechat_redirect


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值