開始,初始化代碼文件
從主包remote 倉庫Fork倉庫
相關(guān)命令
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,全局搜索,替換未自動(dòng)替換的包名路徑
查漏修改后run起來,方可進(jìn)行下一步
修改包名2
若上述失敗(文件太過于復(fù)雜)經(jīng)過多次探索和嘗試,ide的替換包名的方法太過于笨重
系統(tǒng)方式暴力修改包結(jié)構(gòu),然后全局替換包名字符串:
直接修改對(duì)應(yīng)的包名,app+module等路徑一定要記得刪除
然后進(jìn)入androidstudio,Ctrl+shift+R,全局查找替換,
如:com.alibaba.aa原包名
搜索,com.alibaba.aa 再更改com.alibaba,因?yàn)槠ヅ錂C(jī)制問題,先替長(zhǎng)再替短
注意: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是否按照預(yù)期運(yùn)行,
編譯成功,release包反編譯后使用GUI工具查看打包混淆代碼后代碼是否符合預(yù)期
混淆資源
Gradle配置資源不優(yōu)化(具體根據(jù)包體積看效果)
logo,圖片md5替換、接口,各種sdk的key等配置替換等
替換logo,baseurl等,后臺(tái)接口替換,run起來,ok,GUI工具查看打包混淆代碼后代碼是否符合預(yù)期
替換第三方庫的key等,不可使用同一個(gè)key
根據(jù)UI設(shè)計(jì)改UI頁面
提審包
簽名:
keytool -importkeystore -srckeystore oldKey.jks -destkeystore newKey.jks -deststoretype pkcs12
加固(僅國(guó)內(nèi),Google play不允許加固)
馬甲包和主包之間,馬甲包和馬甲包之間,不可有賬號(hào)環(huán)境關(guān)聯(lián)(盡量用4G網(wǎng),熱點(diǎn)注冊(cè)并提交)避免馬甲包對(duì)主包的影響