【安卓之巅】如何混淆Activity等四大组件(非标题党非自动生成)

如果把默认打包好的release.apk拖入android studio,双击打开dex文件,可以看到里面的Activity、View、布局等等全部都有是原来取的名字,感觉底裤都不剩了,怎么办?公开的有以下两种方案:

一、使用第三方加固服务

缺点:1.性能贼低,包括启动慢和运行慢。启动慢大多是冷启动慢,最多也就多出1~2秒的样子,可以接受。但在有的设备上,加固后的Java层代码可有十倍性能损失(测试出来的数据,是真的十倍!),需在Java层开多线程、多任务的慎重使用。2.不开源,产品不受开发者本人控制,对于开发者来说就是个黑盒子。3.说不定哪天不给你免费用了。

二、饿了么Mess插件

Mess插件很有意思,Groovy写的Gradle插件,这还是我第一次接触到这个领域。Groovy基于Java,这种插件开发起来,Android Studio里面也是有语法提示的,不过gradle接口的文档不好找,特别是搜索引擎出来,4.0、3.5各个版本接口不一致、资料混乱,高版本还是kotlin写的,各种群魔乱舞。

原理是在编译过程中挂钩某些任务,从而在混淆前,修改临时文件中的混淆规则.txt等等,缺点是不支持新的gradle插件,已停止维护。

打破枷锁,返璞归真

以上均非良策,那我们就真的没有办法了么?其实办法很简单:直接shift+f6手动混淆不就成了?完全没有任何问题,就是有点费手。

重构?不就是批量替换么,用脚本也很容易解决。混淆后的类名、包名、文件名可以是随机的名字,也可以是各种摘要或Hash的组合(参考),

清单文件.xml用 org.jdom:jdom:2.0.2 解析,其余直接用正则表达式简单替换即可。替换完后,再打包Release,不就混淆了四大组件了吗!

可以在打包前将源代码、资源文件备份到zip压缩包(参考)。打包Release完成后,再手动删除“混淆”后的文件,将备份的内容解压回来。保险起见,建议提交本地的修改至.git文件夹,然后备份.git文件夹到其他硬盘、网盘,或直接上传github、gitee。

手动混淆大法好,将Java层拧成一股绳,啊纤绳荡悠悠。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值