android 使用ant打包或者生成jar
一、生成build.xml檔案
Eclipse 中使用Ant為Android打包並且簽名
Android Sdk中自帶檔案,在{sdkpath}tools/ant目錄下的3個檔案
其中build.xml和unbuild.xml中定義了大量基礎構建方法和構建策略。我們只需要構建我們自己的build.xml並且存放在專案的根目錄下,然後引用{sdk}tools/ant即可。
在命令列視窗輸入一下命令就可以生成一個build.xml檔案。
<sdk>tools\android update project -p <project> - t <target> --subprojects
說明:
<sdk> 為sdk的安裝目錄,其下tools\android是我們使用的命令。
project 為專案目錄。
target為專案所使用的Android的target id ,就是專案對應的Android版本。
如:D:\tools\android-sdk_22\tools\android update project -p . -t android-18 --subprojects
執行上述命令將生成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檔案上傳伺服器
注意事項:
如果要打成jar的專案依賴有別的jar,並且依賴的jar不會被打包進jar。這時候兩個專案的target id一樣,如果使用android-18,在生成build.xml檔案的時候,兩個專案都使用Android-18
2、在使用ant release 生成jar是,有時候會不成功,專案中bin下的一下檔案可能影響正常生成jar,所以使用ant release命令前,執行一下ant clean命令。