快速完成Android混淆之道

2017-03-14  本文已影响587人  G米

此篇文章将快速混淆 无需自己动手配置及混淆过程中出现的问题作为记录
说实话第一次看混淆 密密麻麻 自己都被混淆了 但静下心来 混淆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 查看源码的顺序也乱了 总算把衣服穿好了
相信也有遇到类似问题 在此记录下混淆过程遇到几个问题 ,
喜欢的就点个赞吧

上一篇下一篇

猜你喜欢

热点阅读