一、在Apk中的APK Signature Block區塊添加自定義的渠道信息
原理:在Apk中的APK Signature Block區塊添加自定義的渠道信息
優點:支持Android Signature V2 Scheme
https://github.com/Meituan-Dianping/walle
二、使用aapt 替換 asssets目錄的channel
優點:不用解包回包、方案通用、不依賴簽名方案
缺點:需要重新簽名
三、修改APK META-INF打包
原理:每次修改 APK META-INF
優點:速度快,不需要源代碼和簽名文件,使用簡單
缺點:沒有使用Android的productFlavors,無法利用flavors條件編譯的功能
https://github.com/MasonLiuChn/BatchPackApk
https://github.com/GavinCT/AndroidMultiChannelBuildTool
四、修改APK註釋字段打包
原理:每次修改 APK註釋字段
優點:速度快,不需要源代碼和簽名文件,使用簡單
缺點:沒有使用Android的productFlavors,無法利用flavors條件編譯的功能
https://github.com/mcxiaoke/packer-ng-plugin
https://github.com/seven456/MultiChannelPackageTool
五、gradle打包-manifestPlaceholders
描述:使用gradle 腳本打包
原理:批量build工程,處理 AndroidManifest.xml 文件時使用manifestPlaceholders
優點:穩定
缺點:耗時=一次build * 渠道數,需要提供源代碼和簽名文件
https://github.com/mcxiaoke/gradle-packer-plugin
六、gradle打包-hook
描述:使用gradle 腳本打包
原理:批量build工程,處理 AndroidManifest.xml 文件時添加一個鉤子(hook)替換渠道
優點:穩定
缺點:耗時=一次build * 渠道數,需要提供源代碼和簽名文件
https://github.com/umeng/umeng-muti-channel-build-tool/tree/master/Gradle
七、友盟多渠道打包工具
描述:友盟提供的圖形化打包工具
原理:方案一:每次反編譯APK,修改 AndroidManifest.xml裏的渠道號,重新打包簽名;方案二:直接編輯二進制的AndroidManifest.xml文件,重新簽名。
優點:圖形化操作、不需要源代碼、速度快
缺點:兼容性差、需要提供簽名文件
https://github.com/umeng/umeng-muti-channel-build-tool
八、Ant腳本打包
描述:這是一種比較陳舊的打包方式,記得我在2012年時是這樣用的。
原理:批量build工程,build 前修改 AndroidManifest.xml裏的渠道號。
優點:穩定
缺點:耗時=一次build * 渠道數,需要提供源代碼和簽名文件