学习Android开发当中,会遇到很多的代码误区,Android环境就提供了proguard来进行代码混淆,这确实是一个非常有用的工具,但用起来也并不是那么容易的。下面就由卓跃教育为大家做一个介绍。 1.基本的配置 eclipse下建立的android工程,就会生成proguard.cfg和project.properties,在后面的文件追加proguard.config=proguard.cfg就可以让前面的配置文件在export时生效。默认的那个文件有一些内容,这里给一个更通用点的。 2.打包出来的程序如何进行调试 一旦打包出来,就不能用eclipse的logcat去看了,这里可以用android sdk中ddms.bat的tool来看,一用就发现和logcat其实还是一个东西,就是多了个设备的选择。 3.解决export打包的报错 这个时候export提示“conversion to Dalvik format failed with error 1”错误,网上说法有非常多种,最后还是把proguard从4.4升级到4.8就解决了。升级办法很简单,就是把android sdk目录下的tool/proguard目录覆盖一下即可。 4.使用gson需要的配置 当Gson用到了泛型就会有报错,会提示“Missing type parameter”。最后找到一个资料给了一个解决办法,另外用到了JsonObject,提交的Object里面的members居然被改成了a。所以上面给的东西还不够,还要加上用到自己拼接的JsonObject keep class com.google.gson.JsonObject { *; } 个人建议减少这些依赖包混淆带来的麻烦,干脆都全部保留不混淆。例如 keep class com.badlogic.** { *; } keep class * implements com.badlogic.gdx.utils.Json* keep class com.google.** { *; } 5.验证打包效果 利用了apktool的反编译工具,把打包文件又解压了看了一下,如果包路径、变量名、类名、方法名这些变化和你期望一致,那就可以了。 命令:apktool.bat d xxx.apk destdir。 总结:这个东西用起来也不是很简单,特别当大家的程序用到的高级特性多,这就更容易出问题。另外proguard的参数看起来确实也有点不好理解,打包过程慢,测试也比较浪费时间。东西虽好用,但真不是那么容易上手看,需要大家在这方面下一番功夫去了解的。
|