Android項目自動生成build.xml,用Ant打包


Android本身是支持ant打包項目的,並且SDK中自帶一個build.xml文件。
通過該文件,可以對文件進行編譯、打包、安裝等。

並且支持多種方式打包,如debug或者release。

在使用Ant構建打包之前

一、生成build.xml

Eclipse中使用AntAndroid打包並且簽名。

SDK自帶文件 在<sdk>tools/ant目錄下這3個文件。

其中build.xmluibuild.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文件上傳服務器

等等


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM