Android源码很容易被工具反编译出来,因此,对源码做混淆是一种非常常用的保护源码的方式。不仅如此,proguard还会对源码做一些优化。
因为我们项目中使用了第三方jar,也集成第三方sdk,所以需要排除。
1.首先编辑工程下的project.properties,打开混淆功能。如下:去掉#号注释就行了。
2.编辑工程下的proguard-project.txt配置文件。
#-keepclassmembers class fqcn.of.javascript.interface.for.webview { # public *; #}
这个是保持自己包中不需要混淆的类,如果有些类调用了jni也不需要混淆,不然会出错。还有如果项目中有其他项目作为library引入,那这些项目的一些类也不能混淆。在我们项目中没有使用到,所以这里只贴出示例。
-ignorewarnings -optimizationpasses 5 -dontusemixedcaseclassnames -verbose
这个是忽略控制台的一些警告,优化参数optimizationpasses设为5。
-libraryjars libs/android-support-v4.jar -libraryjars libs/fastjson-1.1.45.android.jar -libraryjars libs/okhttp-2.0.0.jar -libraryjars libs/okhttp-urlconnection-2.0.0.jar -libraryjars libs/okio-1.0.1.jar -libraryjars libs/passguard.jar -libraryjars libs/statistics_sdk.jar
3.排除第三方的jar包。
设置完后打包导出,发现代码已被混淆。
在自动生成的proguard目录下的mapping.txt中可以看到混淆的对映关系。