开始,初始化代码文件
从主包remote 仓库Fork仓库
相关命令
git clone -b remote_branch_name--depth 1 remote_url 克隆remote_branch_name的最后一次comment
git fetch --depth 1 origin remote_branch_name 拉取remote_branch_name最后一次comment
修改包名
studio中move package to替换包名,文件路径,
Run,全局搜索,替换未自动替换的包名路径
查漏修改后run起来,方可进行下一步
修改包名2
若上述失败(文件太过于复杂)经过多次探索和尝试,ide的替换包名的方法太过于笨重
系统方式暴力修改包结构,然后全局替换包名字符串:
直接修改对应的包名,app+module等路径一定要记得删除
然后进入androidstudio,Ctrl+shift+R,全局查找替换,
如:com.alibaba.aa原包名
搜索,com.alibaba.aa 再更改com.alibaba,因为匹配机制问题,先替长再替短
注意:util/SrtingUtils中的getPassword,getPayPassword中,password的md5加密字符串,不改
Constants中的??APPLICATION_ID_YBB字符串判断主包?isYBB?别改
混淆文件中的包名记得改
AppUtil.getAppVersion()同步主包:
BaseReqEntity,ReqRecommendConfig,ConfigApi.getRecommendConfig(),BaseApi.signatureString()
加入垃圾代码
apply plugin引入插件
一(插入activity,xml,value等的插件)二(插入方法接口等的插件)
./gradlew build --info -dry-run查看task是否按照预期运行,
编译成功,release包反编译后使用GUI工具查看打包混淆代码后代码是否符合预期
混淆资源
Gradle配置资源不优化(具体根据包体积看效果)
logo,图片md5替换、接口,各种sdk的key等配置替换等
替换logo,baseurl等,后台接口替换,run起来,ok,GUI工具查看打包混淆代码后代码是否符合预期
替换第三方库的key等,不可使用同一个key
根据UI设计改UI页面
提审包
签名:
keytool -importkeystore -srckeystore oldKey.jks -destkeystore newKey.jks -deststoretype pkcs12
加固(仅国内,Google play不允许加固)
马甲包和主包之间,马甲包和马甲包之间,不可有账号环境关联(尽量用4G网,热点注册并提交)避免马甲包对主包的影响