背景
好了,就也不多bb了,那就开始今天的主题吧。前段时间我们公司上架马甲包到Google Play,结果全军覆没了。老板就“召开”紧急会议,讨论马甲包上架的问题。从运维的账号申请到技术代码编写,一一讨论哪些可能优化的,或者说有可能是因为我们哪一点的不小心触犯了Google审查的规则。会后,猪猪侠也是“积极”的思考啊,思考代码方面能做什么优化。思考了半天啊,终于一种方式,那就是加入混淆的垃圾代码。
如果将垃圾代码集成apk中
下面有几个名词,“混淆”、“拆包”、“重打包”、“Smali”、“签名”。我们都知道,安卓项目开启混淆,就会将我们代码将类和方法名等变成a、b等的名字,同时最重要的是它会把我们没有用到的代码直接移除掉,因为我们加的垃圾代码肯定是不会被调用的,所以打开混淆后我们的垃圾代码肯定是会被移除的。有的同学肯定会说,那我们用keep啊,可以让垃圾代码不要移除。我们的目的是加入混淆的垃圾代码,如果用keep,那垃圾代码是没有被混淆,和我们目的就背道而驰了。那下面介绍流程:
第一步,新建library,然后在build.gradle中加入相关代码,网上有很多关于这方面的文章,我这里就不多说了。
lintOptions { abortOnError false } def _BASENAME = "rubbish"; def _VERSION = "_v1.0"; def _DestinationPath = "build/outputs/jar"; //生成jar包的位置 def zipFile = file('build/intermediates/aar_main_jar/debug/classes.jar'); //待打包文件位置 task deleteBuild(type:Delete){ delete _DestinationPath + _BASENAME + _VERSION + ".jar" } task makeJar(type:Jar){ from zipTree(zipFile) baseName = _BASENAME + _VERSION destinationDir = file(_DestinationPath) } makeJar.dependsOn(deleteBuild, build)
需要注意的是zipFile,就是原始jar的目录,不同的AndroidStudio路径可能不一样,这个要注意,还有上面代码开始的地方,要忽略警告,否则可能会报错。
得到jar后,下面我们开始混淆jar包。用的工具是proguardgui,在我们的sdk中就有,在sdk目录的tools\proguard\bin\proguardgui.bat,打开后是如下图所示
风赚网专注购买苹果开发者账号、购买苹果开发者个人账号、购买苹果开发者公司账号、购买苹果开发者企业账号,购买iOS开发者账号、iOS开发者账号购买、苹果开发者账号购买、苹果开发者账号个人购买、苹果开发者公司账号购买、苹果开发者企业账号购买、出售苹果开发者账号、出售苹果开发者个人账号、出售苹果开发者公司账号、出售苹果开发者企业账号,出售iOS开发者账号,超级签名、TF签名、企业签名、苹果TestFlight签名、苹果ios超级签名、苹果马甲包上架开发、苹果IOS应用商店代上架、苹果APP代上架、苹果马甲包上架、苹果马甲包现包、苹果马甲包购买出售、购买苹果马甲包、安卓马甲包上架、安卓谷歌马甲包上架开发、安卓谷歌APP代上架、安卓谷歌马甲包现包、谷歌马甲包上架、安卓谷歌马甲包购买出售、购买安卓谷歌马甲包、安卓IOS应用商店代上架、小米代上架、华为代上架、vivo代上架、应用宝代上架、oppo代上架、软件著作申请、苹果ASO、安卓ASO、小米ASO、华为ASO、谷歌ASO、谷歌开发者账号、小米开发者账号、华为开发者账号、应用宝开发者账号