美文网首页
快速完成Android混淆之道

快速完成Android混淆之道

作者: G米 | 来源:发表于2017-03-14 17:25 被阅读587次

    此篇文章将快速混淆 无需自己动手配置及混淆过程中出现的问题作为记录
    说实话第一次看混淆 密密麻麻 自己都被混淆了 但静下心来 混淆so easy

    目前的app 基本都是经过混淆了的,如果不混淆, 发布出去,别人一反编译 就可以直接看你的源码了那跟没有穿衣服有什么区别

    ok 来说一下混淆吧:
    首先在build中配置

        buildTypes {
            release {
                minifyEnabled true
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    
            }
        }
    

    在查阅多片文章后 大多数都是要自己手写 ,有没有什么偷懒的办法呢。比如插件 没错就是 Proguard 插件
    自动为你的 proguard-rules.pro文件添加混淆代码
    前提是怎么使用呢 快速传送门:
    http://www.cnblogs.com/common1140/p/5569934.html
    添加代码完成后 插件几乎涵盖了所有的混淆的代码块
    若项目没有用到混淆代码可删除

    先来编译打包apk试试

    H69(4AH7XJO80TVQWZLWM{K.png

    仔细查看 已经给出了参考链接
    https://www.guardsquare.com/en/proguard/manual/troubleshooting#unresolvedlibraryclassmember
    试图忽略警告
    解决方案:
    在proguard-rules.pro文件中添加

    -ignorewarnings #忽略

    基本指令区代码

    #-------------------------------------------基本不用动区域--------------------------------------------
    #---------------------------------基本指令区----------------------------------
    -optimizationpasses 5
    -dontskipnonpubliclibraryclassmembers
    -printmapping proguardMapping.txt
    -optimizations !code/simplification/cast,!field/*,!class/merging/*
    -keepattributes *Annotation*,InnerClasses
    -keepattributes Signature
    -keepattributes SourceFile,LineNumberTable
    -verbose
    -ignorewarnings
    #----------------------------------------------------------------------------
    
    

    关于环信混淆
    按照官网的环信方法 打包后出错 有点坑
    给出正确解决方案

    #下面几行 是环信即时通信的代码混淆
    #-keep class com.easemob.** {*;}
    #-keep class org.jivesoftware.** {*;}
    #-dontwarn  com.easemob.**
    
    
    
    -keep class com.hyphenate.** {*;}
    -dontwarn com.hyphenate.**
    -keep class com.superrtc.** {*;}
    -keep class com.hyphenate.chat.** {*;}
    -keep class org.jivesoftware.** {*;}
    -keep class org.apache.** {*;}
    #另外,demo中发送表情的时候使用到反射,需要keep SmileUtils,注意前面的包名,
    #不要SmileUtils复制到自己的项目下keep的时候还是写的demo里的包名
    -keep class com.hyphenate.chatuidemo.utils.SmileUtils {*;}
    
    再来编译打包试试  出现以下错误
    
    [DaoConfig init failure with greendao on Samsung Devices with Android 5.0]
    

    由于项目中使用到了GreenDao 在集成过程出错
    经过在http://stackoverflow.com/ 好一顿查找最终给出答案

    ![JNF38]G(GK_K8@3G%(6Q5KV.png](https://img.haomeiwen.com/i1820728/da63a25415ac77fc.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

    代码如下

    -keepclassmembers class * extends de.greenrobot.dao.AbstractDao {
        public static java.lang.String TABLENAME;
    }
    -keep class **$Properties
    
    

    参考:http://stackoverflow.com/questions/34216163/daoconfig-init-failure-with-greendao-on-samsung-devices-with-Android-5-0

    一波三折 再试试 编译成功 ,大功告成。
    使用反编译工具apktool 查看源码的顺序也乱了 总算把衣服穿好了
    相信也有遇到类似问题 在此记录下混淆过程遇到几个问题 ,
    喜欢的就点个赞吧

    相关文章

      网友评论

          本文标题:快速完成Android混淆之道

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