Android打包可以使用eclipse直接打包,而eclipse打包其實是對一系打包命令的執行。既然是執行命令,那麼命令列也同樣可以勝任,所以有了bat指令碼打包。對於打包,其過程大致如下:
1、產生R.java
2、編譯*.java
3、產生classes.dex
4、將assets、res打包
5、產生未簽名的apk
6、將apk簽名
基於這些步驟,我們使用bat來一步一步完成,下面是一個指令檔。
1、產生R.java
建立一個AntDemo工程,然後在該工程的根目錄下編寫第一步的bat指令碼1_genR.bat,代碼如下。
aapt package -f -m -J gen -S res -I D:/android-sdk-windows/platforms/android-16/android.jar -M AndroidManifest.xml
註:執行後產生R.java檔案。用eclipse直接建立一個AntDemo工程後,gen目錄下已經有R.java檔案,如果再執行這個指令碼會看到修改時間會改變。如果不確定的,可以將R.java刪除,然後再執行指令碼以便觀看效果。
下面是指令碼執行後的圖。
2、編譯*.java
編譯時間調用的是JDK下的javac命令,所以需要安裝JDK,建議使用jdk1.6(1.7有可能出問題)。安裝完成後將JDK所在目錄下的bin目錄設定成環境變數,然後編譯指令碼2_compile.bat.
mkdir binjavac -target 1.6 -bootclasspath D:/android-sdk-windows/platforms/android-17/android.jar -d bin gen\com\example\antdemo\*.java src\com\example\antdemo\*.java
註:
(1)、mkdir bin是建立bin目錄。
(2)、javac中的target指定的是jdk的版本。
(3)、android.jar需要對應到相應的版本,這裡選的是android-17。
(4)、gen\com\example指定java檔案所在的目錄。
執行該指令碼後,會在bin目錄下產生一系列的class檔案,如。
3、產生classes.dex
dx命令是一個dx.bat的指令碼,位於android-sdk/plaform-tools下。為了能直接執行dx命令,需要將dx.bat所在的目錄設定到環境變數中。下面是編寫的指令碼3_dex.bat.
dx --dex --output=G:\Code\Android\Workspace\AntDemo\bin\classes.dex G:\Code\Android\Workspace\AntDemo\bin
註:
(1)、output指定的是輸出dex的位置。
(2)、G:\Code\Android\Workspace\AntDemo\bin指定的是class檔案的目錄。
執行指令碼後產生的檔案見。
4、將assets、res打包
編寫4_package.bat,內容如下。
aapt package -f -A assets -S res -I D:/android-sdk-windows/platforms/android-17/android.jar -M AndroidManifest.xml -F bin/AntDemo
註:將assets和res中的檔案打包,產生AntDemo檔案。見。
5、產生未簽名的apk
編寫5_unsigned.bat,內容如下。
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
註:
(1)、需要調用apkbuilder命令,該命令是一指令碼,在android-sdk/tools下,所以需要將該目錄設定成環境變……
(2)、需要將之前產生的AntDemo、classes.dex和src下的檔案一起構建出apk。
下面是產生的結果圖。
6、將apk簽名
簽名apk前,需要先產生一個簽名檔案*.keystore。該簽名檔案可以通過JDK下的bin目錄下的keytool.exe來產生。可以使用如下指令碼:
keytool -genkey -alias ant_test -keyalg RSA -validity 20000 -keystore my.keystore
執行該指令碼後,按提示輸出即可。這裡的測試版本使用的密碼是123456,其他的直接斷行符號(即使用預設的unknown)。具體的可以參看此文
《
Android之apk檔案簽名》
有了keystore之後,就可以進行apk簽名了,編寫指令碼6_signed.bat,內容如下:
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
註:
(1)、jarsigner在JDK的bin目錄下,該目錄如果沒有設定成環境變數的,需要設定成環境變數。
(2)、輸入產生my.keystore中所使用的密碼和別名(產生簽名檔案時alias所指定的參數即是)。
下面是執行指令碼後的圖。
上面的過程是一步一步分開的,如果需要一起執行,可以將指令碼合并成一個指令碼,或者再建一個指令碼build.bat來調用各個指令碼,下面是build.bat的指令碼代碼。
call 1_genRcall 2_compilecall 3_dexcall 4_packagecall 5_unsignedcall 6_signed
這樣,使用bat指令碼打包就完畢了。bat指令碼的執行就是對一系列任務的執行,而ant也是對一系列任務的執行,所以可以將這些指令碼轉換成ant的指令碼,具體請參見《Android打包之將bat指令碼轉換成ant指令碼》。
轉載請註明出處:Android打包之將bat指令碼轉換成ant指令碼
源碼下載