Android自動化構建之Ant多渠道打包實踐(上)
前言
Ant是歷史比較悠久的一個自動化構建工具,Android開發者可以通過它來實現自動化構建,也可以實現多渠道打包,關於apk打包的方式一般有Ant、Python、Gradle三種,這三種打包方式都各自有優點和缺點,本篇博文先給大家介紹如何使用Ant來實現自動構建和多渠道釋出。
開發環境
- Window7
- Ant
- jdk
- android sdk
mac系統下所需要的執行環境也是類似的,我們都需要配置Ant、jdk、sdk的環境變數,我們可以看一下window下是環境變數配了些什麼:
ANT_HOME : D:\android\apache-ant-1.9.4
JAVA_HOME
ANDROID_SDK_HOME : D:\android\adt-bundle-windows-x86_64-20140321\sdk
PATH: %JAVA_HOME%/bin;%ANDROID_SDK_HOME%\platform-tools;%ANDROID_SDK_HOME%\tools;%ANT_HOME%\bin;
CLASSPATH : .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\tools.jar
以上環境變數配好之後,你才可以進入下一步,不會配?回家吧,開發不適合你。
先說APK構建過程
下面來簡單描述下apk構建的過程:
1. 使用aapt生成R.java類檔案
2. 使用android SDK提供的aidl.exe把.aidl轉成Java檔案
3. 使用javac命令編譯.java類檔案生成class檔案
4. 使用android SDK提供的dx.bat命令列指令碼生成classes.dex檔案
5. 使用android SDK提供的aapt.exe生成資源包檔案
6. 使用apkBuilder.bat生成未簽名的apk安裝檔案
7. 使用jdk的jarsigner對未簽名的包進行apk簽名
8. 使用Zipalign工具對apk進行優化
我們從上面的描述可以知道apk具體的步驟和使用到的工具,對應的工具在sdk中都可以找到,自己去翻翻吧,但你會發現新的sdk版本,aapt被放到了build-tools目錄下,apkBuilder.bat檔案在tools目錄找不到了,你可以去網上去下一個,然後放到tools目錄下。為了讓大家更清楚apk構建的過程,放上官方的一張圖:
有了這張圖,相信大家已經清楚了apk到底是如何生成的吧,不多說了。
構建命令詳解
- aapt命令生成R.java檔案
示例命令:
aapt package -m -J <R.java資料夾> -S <res路徑> -I <android.jar路徑> -M<AndroidManifest.xml路徑>
命令解釋:
-f 如果編譯出來的檔案已經存在,強制覆蓋
-m 使生成的包的目錄存放在-J引數指定的目錄
-J 指定生成的R.java 的輸出目錄
-S res資料夾路徑
-A assert資料夾路徑
-I 某個版本平臺的android.jar的路徑
-F 具體指定APK檔案的輸出
- aidl命令生成.aidl檔案
示例命令:
aidl -p<framework.aidl路徑> -I<src路徑> -o<目標檔案目錄> .aidl檔案
注意:命令和路徑是沒有空格的。
- javac命令生成.class檔案
示例命令:
javac -d destdir srcFile
引數解釋:
-d 指定存放類的資料夾
-bootclasspath 覆蓋引導類檔案的位置
-encoding 指定原始檔使用的編碼
-sourcepath 指定查詢輸入原始檔位置
- dx命令生成classes.dex檔案
示例命令:
dx --dex --output classes.dex bin/classes/ libs/
命令解釋:將bin/classes下的class檔案和libs下的jar檔案編譯成classes.dex檔案
- aapt生成資源包檔案resources.ap_
命令示例:
aapt package -m -J <R.java資料夾> -S <res路徑> -I <android.jar路徑> -A <asset路徑> -M<AndroidManifest.xml路徑> -F <resources.ap_檔案路徑>
- apkbuilder.bat已經過時了,使用以下方法
示例命令:
java -cp <sdklib.jar路徑> com.android.sdklib.build.ApkBuilderMain <未簽名.apk> -v -u -z bin\resources.ap_ -f bin\classes.dex -rf src
- 通過jarsigner來生成
示例命令:
jarsigner -verbose -keystore <keystore路徑> -signedjar -<輸出簽名apk路徑> <未簽名apk路徑> <keystore別名>
- 最後一步使用zipalign工具進行apk對齊優化
示例命令:
zipalign [-f] [-v] <alignment> infile.apk outfile.apk
上面的8個步驟就是實現apk構建的過程,都是通過命令來一步一步實現,要注意每一步生成的東西。
小結
本篇博文主要給大家介紹了Android中apk構建的過程,也詳細的講解了每一步具體的命令操作,由於不想一篇把所有東西堆在一起,我將會在下一篇來具體使用Ant指令碼實現自動化構建和多渠道打包,大家可以繼續關注。
歡迎關注我的公眾號:wwjblog