通过代码混淆不仅能够提高APK的反编译,还能较小APK大小;混淆可以删除注释和无用的代码;可以将Java文件,变量,方法名登改为短名,这样就可以缩减字符所占的空间,但并不是所有的文件都可以混淆;比如res下的文件,文件res下的资源文件在R.java 文件中都会有对应的ID,如果直接将文件名改了,资源和ID就不对应了。导致程序崩溃。
debug {//为了方便调试微信支付、登陆、分享等把deug签名配置成了Release版的签名
proguard-rules.pro是我们自定义的混淆规则,位于app根目录下,默认为空,需要我们自己添加规则。这里贴出一根模板:
# 移除Log类打印各个等级日志的代码,打正式包的时候可以做为禁log使用,这里可以作为log打印的功能使用
打正式包的时候了混淆,打包结束后会在appbuildoutputsmappingrelease目录成一个mapping.txt文件,是代码混淆前后的名字对应关系。
提到,res下的资源文件不能混淆,如果我们可以将res下的资源文件名也改成短名,并且ID对应关系也改成对应的;这样就可以实现资源文件的“混淆了”,apk解压后会有一个resources.arsc文件:资源索引表,资源的描述文件,用来描述具有ID值的资源的对应关系。所以我们把res下的文件改成短名后,还需要更改resources.arsc中的对应关系。这里使用的是微信开源的资源混淆工具
2.可以在app下的build.gradle中直接配置混淆,为了更直观一些,这里在工程的根目录中单独建立了一个gradle文件:and_res_guard.gradle内容如下:
keepRoot =lse// 打开这个开关,会keep住所有资源的原始径,只混淆资源的名字
我们APP每次迭代需要记录APP的版本信息和对应的变化信息,以某一特定的格式记录,方便以后对比管理。我们可以写一个gradle脚本来自动实现。
打正式包结束后会在app的根目录成一个releaseInfo.xml文件,内容格式如下:
渠道包就是要在安装包中添加渠道信息,也就是channel,对应不同的渠道,例如:小米市场、360市场、应用宝市场等,我们要在安装包中添加不同的标识,应用在请求网络的时候携带渠道信息,方便后台做运营统计。
环太平洋 彩蛋本文由来源于财鼎国际(www.hengpunai.cn)
网友评论 ()条 查看