《Android打包之bat指令碼打包》實現了bat指令碼的打包,現在我們將該指令碼轉換成ant的指令碼來執行。ant指令碼是xml檔案,命令描述在target節點中,需要執行外置的命令時需要在target下增加子節點exec,並在exec節點中通過子節點arg來指定參數。我們同樣按打包流程來實現該指令碼,打包流程如下:
1、產生R.java
2、編譯*.java
3、產生classes.dex
4、將assets、res打包
5、產生未簽名的apk
6、將apk簽名
基於這些步驟,我們來編寫ant指令碼。
1、產生R.java
Initialize... Generating R.java from the resources... 1.aapt package -f -m -J gen -S res -I D:/android-sdk-windows/platforms/android-16/android.jar -M AndroidManifest.xml
註:
(1)、target中的name是該target的名字,該名字會在其他target的depends中調用,也可在project的default中使用,也可在指定ant指令碼時調用。
(2)、depends指定的是該target執行前需要執行的target。
(3)、arg中的參數與《Android打包之bat指令碼打包》的1_genR的bat指令碼參數相對應。
(4)、${XXX}是對變數的引用,這些變數定義到property屬性中。下面是相關的代碼。
註:
(1)、sdk-folder指定了android-sdk所在的目錄。
(2)、jdk-folder指定的是jdk所在的目錄。建議使用jdk1.6,jdk1.7可能會有問題。
(3)、tools中指定了所要用到的工具。
(4)、其他變數自行對應。
2、編譯*.java
Compile... 2.javac -target 1.6 -bootclasspath D:/android-sdk-windows/platforms/android-16/android.jar -d bin gen\com\example\antdemo\*.java src\com\example\antdemo\*.java
註:調用javac命令來編譯,相關的參數與《Android打包之bat指令碼打包》的2_compile.bat指令碼相對應。
3、產生classes.dex
Generate dex... 3.dx 兩個短橫dex 兩個短橫output=G:\Code\Android\Workspace\AntDemo\bin\classes.dex G:\Code\Android\Workspace\AntDemo\bin
註:
(1)、兩個短橫表示的是--,因--在xml中屬性特殊標記,所以使用文字來描述。
(2)、相關的參數與《Android打包之bat指令碼打包》的3_dex.bat指令碼相對應。
4、將assets、res打包
Package resource and assets... 4.aapt package -f -A assets -S res -I D:/android-sdk-windows/platforms/android-16/android.jar -M AndroidManifest.xml -F bin/AntDemo
註:相關的參數與《Android打包之bat指令碼打包》的4_package.bat指令碼相對應。
5、產生未簽名的apk
Build unsigned apk 5.apkbuilder G:\Code\Android\Workspace\AntDemo\bin\AntDemo_unsigned.apk -v -u -z G:\Code\Android\Workspace\AntDemo\bin\AntDemo -f G:\Code\Android\Workspace\AntDemo\bin\classes.dex -rf G:\Code\Android\Workspace\AntDemo\src
註:相關的參數與《Android打包之bat指令碼打包》的5_unsinged.bat指令碼相對應。
6、將apk簽名
Sign apk 6.jarsigner -keystore G:\Code\Android\Workspace\AntDemo\build\my.keystore -storepass 123456 -keypass 123456 -signedjar G:\Code\Android\Workspace\AntDemo\bin\AntDemo_signed.apk G:\Code\Android\Workspace\AntDemo\bin\AntDemo_unsigned.apk ant_test
註:相關的參數與《Android打包之bat指令碼打包》的6_singed.bat指令碼相對應。
附1:
增加release命令,執行一些收尾任務。
APK is released. path:${signed-apk-path}
註:delete是ant的內建命令。
附2:指令碼頭
....
註:name是工程名稱,default指的是預設執行的target。下面是執行的過程圖。
輸出的apk檔案如下
下載