目前國內的安卓渠道有幾百家,我們要根據不同的渠道打不同渠道的apk來統計每個渠道帶來的使用者數,統計每個渠道使用者的存活率和活躍度等等資訊,但是手動對每個渠道的APK進行簽名打包實在是讓人感到厭煩且低效,這時我們需要一個全自動化的打包工具----ant。Android SDK的tools中已經包括了ant的打包工具,那麼我們該如何運用它達到我們的要求呢?之前鹵煮做這塊的時候也參考了很多前輩的文章,首先向前輩們致敬,下面說下鹵煮的方法,有什麼不對的地方或者疑問歡迎大家留言交流。(以下步驟均在MAC系統下完成)
一.打包前準備工作
1.首先確定你的JDK版本為1.6!
2.在AndroidManifest.xml中application標籤下添加一個用來識別渠道的標籤:
<meta-data android:name="qudao" android:value="channel" />3.為了讓ant支援迴圈功能,我們要在Android SDK/tools/lib下放一個ant-contrib-1.0b3.jar包
4.項目中放置第三方jar包的檔案夾必須叫libs而不是lib
二.build.xml等檔案的產生和配置
1.通過終端(cmd)命令自動產生build.xml和local.properties兩個檔案,方法如下:
<sdk>/tools/android update project -p <project> -t <target>例如:
/Users/moushou/Downloads/AndroidSDK/tools/android update project -p /Users/moushou/Documents/workspace/HelloWorld -t 14其中<sdk>為SDK全路徑,<project>為項目全路徑,<target>為API版本。
執行完成如下:
執行完成後,Refresh你的項目就會發現項目的根目錄下多了兩個檔案:build.xml和local.properties
其中local.properties的內容是:
# This file is automatically generated by Android Tools.
# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
#
# This file must *NOT* be checked into Version Control Systems,
# as it contains information specific to your local configuration.
# location of the SDK. This is only used by Ant
# For customization when using a Version Control System, please read the
# header note.
sdk.dir=/Users/moushou/Downloads/AndroidSDKproject.properties的內容如下:
# This file is automatically generated by Android Tools.
# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
#
# This file must be checked in Version Control Systems.
#
# To customize properties used by the Ant build system use,
# "ant.properties", and override values to adapt the script to your
# project structure.
#proguard.config=proguard.cfg
# Project target.
target=Google Inc.:Google APIs:14
proguard.config=proguard.cfg項目的目錄結構如所示:
註:project.properties中target=GoogleInc.:GoogleAPIs:14代表所使用的SDK的版本,可進行手動修改。
2.手動為項目建立一個File,該檔案名稱為:ant.properties,建立完成項目的目錄結構如:
建立完成後在ant.properties中添加如下內容:
key.store=<keystore>
key.alias=<key>
key.store.password=<keystore pwd>
key.alias.password=<key pwd>
market_channels=xx,yy,zz
app_version=1_0_build_0例如:
key.store=/Users/moushou/Desktop/qianming
key.alias=meilihuaduo
key.store.password=123456xx
key.alias.password=123456xx
market_channels=anzhuoshichang,jifengshichang,baiduyingyongzhongxin
app_version=1_0_build_0其中:
keystore為簽名檔案的全路徑。
key.alias為簽名需要使用的私密金鑰。
key.store.password為私密金鑰庫的密碼。
key.alias.password為私密金鑰的密碼。
market_channels為渠道集合。
app_version為apk的版本(此欄位可根據自己喜好編寫)。
--------------------------------------------------------------------------------------------------
至此,除build.xml外,其餘檔案配置完成,夜深人靜的讓我有些犯困啦,明天會把build.xml中使用for迴圈替換AndroidManifest.xml中渠道value的方法分享給大家。