1. 程式人生 > >android 使用ant打包或者生成jar

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命令。