Android打包之bat指令碼打包

來源:互聯網
上載者:User

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指令碼

源碼下載

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.