umeng-muti-channel-build-tool友盟渠道打包工具
友盟渠道打包工具主要是提供基本的通過工程源碼打包的功能。
常見錯誤見這里目前不支持的Apk特性見這里(可能會導(dǎo)致發(fā)布的SDK產(chǎn)生嚴(yán)重bug)。
Google 現(xiàn)在已經(jīng)發(fā)布了最新的構(gòu)建系統(tǒng)(New Building System) , 在 Android Studio 中已經(jīng)支持了最新的 構(gòu)建系統(tǒng),如果開發(fā)者已經(jīng)遷移,可以使用新的系統(tǒng)方面的生成渠道包,這是取代渠道打包工具的最佳方式。
1. 工程結(jié)構(gòu)
工程結(jié)構(gòu)圖 :
- CommonTools 共用的工具類,包括對 `Apktool` , `Jarsigner` , `zipalign` 的封裝 - UIControls_35 共用的UI類,對大部分控件的樣式都是在這里設(shè)置的 - UmengMarket Marekt 組件,現(xiàn)在還沒有實現(xiàn) - UmengPackage 打包組件 - UmengTools 工程主要UI,管理 UmengMarket, UmengPackage, UmengTools 三個組件 - UmengWidget 小工具組件,目前僅有解包分析的功能
打包工具組件:
- Source - Builder - ApkBuilder.cs 通過 APK 打包的 Builder 實現(xiàn) - Builder.cs 抽象 Builder 類,提供打包的主要邏輯 - SourceBuilder.cs通過源碼打包的 Builder 實現(xiàn) (目前代碼還沒有實現(xiàn)) - Worker.cs 打包過程對外接口
3. 打包流程
V2.0 版本僅實現(xiàn)了通過 .apk 打包的方式,本質(zhì)上對 apk 文件進(jìn)行反編譯,修改 AndroidManifest.xml 文件后,再重新打包,我們使用的工具是開源的拆包工具 Apktool
-
將
apktool添加到當(dāng)前process的環(huán)境變量 -
執(zhí)行
apktool d --no-src -f xxxx.apk temp拆解apk -
替換或者添加
AndroidManifest.xml中的 友盟channel -
執(zhí)行
apktool b temp unsigned.apk重新打包apk -
執(zhí)行
SignApk.jar生成簽名后的 apk 文件 -
執(zhí)行
zipAlign生成對齊優(yōu)化后的 apk 文件 -
回到 3 替換新的渠道
-
完成打包
使用 JarSigner.jar 給 Apk 簽名, SignApk.jar 文件是我們修改過的 apk 簽名工具,實現(xiàn)了和 ADT 中一樣的簽名方式,使用如下:
Usage: signapk file.{keystore} keystore_password key_entry key_password
input.apk
output.apk
