Android專案自動生成build.xml,用Ant打包
Android本身是支援ant打包專案的,並且SDK中自帶一個build.xml檔案。
通過該檔案,可以對檔案進行編譯、打包、安裝等。
並且支援多種方式打包,如debug或者release。
在使用Ant構建打包之前
一、生成build.xml
Eclipse中使用Ant為Android打包並且簽名。
SDK自帶檔案 在<sdk>tools/ant目錄下這3個檔案。
其中build.xml和uibuild.xml中定義了大量基礎構建方法和打包策略。我們只需要建立我們自己的build.xml並且存放在專案的根目錄下,然後引用一下<sdk>tools/ant/build.xml即可。當然也可以拷貝它然後直接操作。
那麼如何。以專案AntForAndroid為例。生成一個針對該專案的build.xml呢?
這裡需要一個工具。就是SDK自帶的android.bat .所在目錄<sdk>tools/android.bat。
通過執行如下命令即可在指定的專案目錄下生成build.xml檔案。
<sdk>/tools/android update project -p <project> -t <target>
其中:
sdk為sdk的安裝目錄,其下的tools/android是我們要使用的命令。
project為專案目錄。
target為專案所使用的android的target id,也就是專案對應的android的版本。
可以將sdk的tools目錄新增到環境變數 ~/.bashrc 檔案中,重啟後生效,以後可以直接使用命令了。
可以通過執行以下命令檢視當前sdk中所包含的target以及相應id:
android list targets。
執行上述命令將新生成的3個檔案 build.xml,local.properties,proguard-project.txt.
其中,build.xml檔案是進行ant build的主要檔案,它引用了其它檔案。這些被引用的檔案有local.properties,ant.properties兩個屬性檔案,以及在build.xml中的最後,引用了sdk目錄下的tools/ant/build.xml檔案。
local.properties檔案中定義了sdk.dir屬性,也就是當前使用的sdk的目錄。
ant.properties可根據構建需要進行相關配置。
專案下的build.xml預設執行的target是help,執行後可以看到相關的幫助資訊。如果需要的話,我們可將其修改為debug或者release。
通過檢視相關的幫助資訊,可以看到其它可用的target。然後執行ant時,可指定target。例如,ant debug, ant help, ant relaese等等。
二、配置ant.properties
ant.properties檔案是不會自動生成的,需在專案根目錄下新建一個ant.properties檔案。
然後根據構建的實際需要進行相關配置。在ant.properties檔案中,可以定義自己的一些屬性,或者重定義一些屬性。
1、設定私鑰庫
ant構建時,如果是debug版的話,預設會使用debug方式簽名。
如果是release版的話,需指定相應的keystore以及私鑰。否則,最後只能生成一個沒有簽名的apk檔案。
設定私鑰庫的方法如下:
在ant.properties檔案中,新增如下內容:
key.store=<keystore>
key.alias=<key>
key.store.password=<keystore pwd>
key.alias.password=<key pwd>
其中:
keystore為私鑰庫檔案。
key為簽名需要使用的私鑰。
key.store.password為私鑰庫的密碼。
key.alias.password為私鑰的密碼。
2、如果專案引用了第三方庫的話,只需要在專案根目錄建立libs資料夾並將其放入即可。
如果是jar庫,直接放到libs目錄下;
如果是so庫,需要放到libs的名為armeabi的子目錄下。
也可以通過設定相應的屬性來指定第三方庫的位置,其預設都是libs資料夾。
jar.libs.dir為jar型別庫所在的目錄。
native.libs.absolute.dir為so型別庫所在的目錄,即armeabi的父目錄。
3、如果專案包含了jni程式碼,希望在打包時自動重新編譯so庫,可以修改build.xml檔案。
修改方法為,在引用sdk的build.xml檔案之前新增如下target:
<target name="-pre-build" depends="-ndk-build">
</target>
<target name="-ndk-build">
<exec executable="ndk-build" failonerror="true">
<arg value="clean" />
</exec>
<exec executable="ndk-build" failonerror="true" />
</target>
ndk-build為ndk提供的命令,需要將ndk安裝目錄新增到環境變數中,新增方法同sdk/tools。
生成的so預設會放到libs/armeabi目錄下。
三、實現自動打包簽名apk
有兩種方式可實現。
1、一種方式在elispe中執行ant.
右鍵點選專案中的build.xml->run as... 先檢視下有多少種任務,當然這些任務都是來自<sdk>\tools\ant\build.xml,專案裡的只是引用了它
視窗開啟
預設的選擇在help上。打簽名包的時候執行release這個任務即可。
按照以上的步驟配置好之後就能生成簽名apk。
最後在專案跟目錄\bin下生成apk包。
2、第二種方式通過命令列執行。
生成debug版本:ant debug
生成release版本:ant release
大家可以通過學習<sdk>\tools\ant\build.xml來理解ant的基本奧妙。
Ant是非常強大的。可以實現以下功能。
例如:
1.在生成apk的檔名里加上日期。
2.把apk檔案自動通過郵件發給其他人。
3.apk檔案上傳伺服器