1. 程式人生 > >Android專案自動生成build.xml,用Ant打包

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檔案上傳伺服器