美文网首页
防反编译利器-Android studio混淆代码压缩apk包体

防反编译利器-Android studio混淆代码压缩apk包体

作者: shawnleng | 来源:发表于2018-08-24 11:50 被阅读0次

    前言

    打包混淆对初学者小冷来说是很抗拒的,刚开始我只是知道在build.gradle文件 minifyEnabled下设置为true,可是proguard-rules.pro文件里面什么都没有,就这样签名打包了,结果必然是打包不成功的。后来又在网上粘了一堆proguard-rules.pro文件,结果还是打包失败,陆陆续续的经过了很长一段时间,这个问题就被我搁置了,以致于apk包一直处于“裸奔”状态。

    介绍

    直到小冷亲自打jar包时候才发现了一些端倪,代码在做混淆时候,如果proguard-rules.pro文件里面什么都没配置,那默认你的大部分代码要被混淆的找不到了,即使能打包成功。在做混淆时候一定要注意引用的部分库,是否避免被混淆。如果打包后产生crash那就要根据提示查看是那些库被混淆了。

    常用混淆语句

    1. 保留部分包中的所有类不被混淆
    $ -keep class com.chad.baserecyclerviewadapterhelper.entity.** {*;}
    
    图一
    1. 保留某一个文件不被混淆
    $   -keep class com.chad.baserecyclerviewadapterhelper.util.SpannableStringUtils{*;}
    
    图二
    1. 保留继承的某一类文件不被混淆
    $   -keep public class * extends android.app.Activity
    
    1. 不提示警告
    $   -dontwarn com.handmark.pulltorefresh.library.**
    

    小冷用到的避免混淆文件(仅供参考)

    proguard-rules.pro在这里可能会被复制到,简书复制粘贴有点扯点我查看

    其他

    如果已经在gradle文件设置了混淆,但始终不能打包成功,那也没有关系,还可以通过360加固工具或腾讯加固工具混淆代码
    比如说我在gradle中未设置混淆,只使用了360加固工具(前提是得签名成功,往往混淆后才导致签名打包失败),在反编译代码时候,代码如图。


    反编译后代码

    总结

    一些跟so库相关的类千万要保留避免被混淆,因为他的类名往往是跟so库中c代码文件名是绑定的,混淆后就会找不到so库。Model类也不可混淆,使用Gson自动解析的Model如果被混淆了将会报错。混淆后代码高度压缩apk明显变小,大量类名被abc等代替,即使被反编译看代码估计也是件痛苦的事。

    相关文章

      网友评论

          本文标题:防反编译利器-Android studio混淆代码压缩apk包体

          本文链接:https://www.haomeiwen.com/subject/insbiftx.html