代码混淆的确是一个操蛋的问题,不过也没有想象中那么操蛋。
首先说明一下混淆的意义:1.增加反编译的难度;2.压缩apk的大小。
下面我来简单介绍一下,eclipse中怎么去混淆代码 ,到AndroidStudio应该也是一样的?
步骤如下
1.首先将project.properties的11行前面的#号去掉,将改行替换成
proguard.config =proguard-android.txt
2.去sdk\tools\proguard目录下复制proguard-android.txt文件当eclipse项目的根目录中。
3.理论上准备工作已经完成了,接下来export就可以生成一个混淆过的apk了。
4.但是,有可能你的部分jar或者部分.java文件不希望被混淆。那么你可以keep掉。具体如何操作?比如,我想要保留BBBBBBBB的类名不被混淆,我就这样写;比如我要保留CCCCCCCCCCC的类名以及全部的属性方法不被混淆,我就这么写;比如,我想保留CCCCCCCCCCC的内部类DUCK的全部属性和方法,我就这么写。
-keep class com .pythonCat .indictors .BBBBBBBB
-keep class com .pythonCat .indictors .CCCCCCCCCCC {*
-keep class com .pythonCat .indictors .CCCCCCCCCCC $DUCK {*
5.如果是你项目中使用到的jar包呢,理论上是直接被混淆,那么我想保留呢?可以参照保留CCCCCCCCCCC的属性方法类名的方式来。但是jar包中往往有很多类,这么弄比较麻烦,那么我怎么弄呢?比如,我引用了gsonjar包,直接这样
-keep class com .google .** { *; }
-keep class com .pythonCat .indictors .BBBBBBBB
-keep class com .pythonCat .indictors .CCCCCCCCCCC {*; }
-keep class com .pythonCat .indictors .CCCCCCCCCCC $DUCK {*; }
-keep class com .google .** { *; }
-keep class com .pythonCat .indictors .Bean { *; }