Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android Multi channel package tool (安卓多渠道打包工具)

Android Multi channel package tool (安卓多渠道打包工具)

編輯:關於Android編程

為什麼需要這個工具

1、國內應用市場繁多,上線的apk應用需要知道自己在哪個渠道下載的;
2、簡直是急速啊:5M的apk,1秒種能打300個;
3、因為是急速,可以做網頁下載時動態打渠道包功能(如:分享apk給好友,好友下載打開apk後直接計算准確的分享量);

該工具的原理

利用的是Zip文件“可以添加comment(摘要)”的數據結構特點,在文件的末尾寫入任意數據,而不用重新解壓zip文件(apk文件就是zip文件格式);
所以該工具不需要對apk文件解壓縮和重新簽名即可完成多渠道自動打包,高效速度快,無兼容性問題;

另外美團的適配渠道包方案(不同的渠道嵌入不同的SDK):
美團Android自動化之旅—適配渠道包(Gradle flavor解決內嵌第三方SDK適配)(http://tech.meituan.com/mt-apk-adaptation.html)

與現有多渠道打包工具的對比

友盟(https://github.com/umeng/umeng-muti-channel-build-tool)
    打包:解壓apk文件 -> 替換AndroidManifest.xml中的meta-data -> 壓縮apk文件 -> 簽名
    讀取渠道號:直接通過Android的API讀取meta-data
    特點:需要解壓縮、壓縮、重簽名耗費時間較多,重簽名會導致apk包在運行時有兼容性問題;
美團(http://tech.meituan.com/mt-apk-packaging.html)
    打包:解壓apk文件 -> META-INF目錄下創建一個以渠道號為文件名的空文件 -> 壓縮apk文件
    讀取渠道號:解壓已安裝的data/app/.apk -> 讀取以渠道號為文件名的空文件的文件名
    特點:比友盟高效點,只有解壓縮和壓縮,沒有簽名,兼容性也比較好,但是讀取渠道號需要解壓縮apk,速度比較慢;
我自己
    打包:直接寫入渠道號到apk文件的末尾
    讀取渠道號:直接讀取data/app/.apk文件末尾的渠道號
    特點:沒有解壓縮、壓縮、重簽名,沒有兼容性問題,速度最快;寫入的渠道號數據支持加密,安全可靠;

除了多渠道打包,我還能做什麼?

由於速度極快,我還可以作為服務器端下載apk時動態寫入“特定數據”,用戶下載到apk後安裝啟動,讀取“特定數據”完成特定的操作;
如:加好友功能,下載前寫入用戶ID,用戶下載後啟動apk,讀取寫入的用戶ID,完成加好友操作,用戶體驗大大提升,沒有斷裂感;
當然,也可以寫入JSON數據,想做什麼就做什麼;

如何使用

1、命令行使用說明:
用法:java -jar MCPTool.jar [-path] [arg] [-contents] [arg] [-password] [arg]
-path       APK文件路徑
-outdir     輸出路徑(可選),默認輸出到APK文件同一目錄
-contents   寫入內容集合,多個內容之間用“;”分割,如:googleplay;m360; 當沒有“-contents”參數時輸出已有文件中的content
-password   加密密鑰(可選),長度8位以上,如果沒有該參數,不加密
-version    顯示版本號
例如:
寫入:java -jar MCPTool.jar -path D:/test.apk -outdir ./ -contents googleplay;m360; -password 12345678
讀取:java -jar MCPTool.jar -path D:/test.apk -password 12345678

2、Android代碼中讀取寫入的渠道號:
導入MCPTool.jar中的MCPTool類,MCPTool.getChannelId(context, mcptoolPassword, defValue)讀出寫入的渠道號;

3、jenkins、hudson、ant使用說明:
請看MultiChannelPackageTool\build-ant\MCPTool\build.xml文件;

4、Windows下bat腳本運行說明:
拖拽文件即可完成多渠道打包:MultiChannelPackageTool\build-ant\MCPTool\MCPTool.bat;
拖拽文件檢查渠道號是否寫入成功:MultiChannelPackageTool\build-ant\MCPTool\MCPTool-check.bat;
上面2個bat文件中有密碼,可以自行修改;

更新日志

V1.1
20150829    更新內容
    修復Android5.0及以上系統不能安裝打出的渠道包問題(校驗apk文件的comment數據的長度)
V1.0
20141216    更新內容
    創建項目

License

Copyright (C) 2014 [email protected]

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
源碼下載地址:https://github.com/seven456/MultiChannelPackageTool
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved