Android项目自动生成build.xml,用Ant打包

Android本身是支持ant打包项目的,并且SDK中自带一个build.xml文件。
通过该文件,可以对文件进行编译、打包、安装等。

并且支持多种方式打包,如debug或者release。

在使用Ant构建打包之前

一、生成build.xml

Eclipse中使用Ant为Android打包并且签名。

SDK自带文件 在<sdk>tools/ant目录下这3个文件。

Android自动生成xml android xml编译_Android自动生成xml

其中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的版本。

例如: android update project -n ButtonDemo -t 1 -p E:\workspace\android\ButtonDemo

输入: android update project -n ButtonDemo -t 1 -p E:\workspace\android\ButtonDemo

-n 对应的是项目名称
-t 就是我们之前查询的SDK版本对应的ID,大家根据自己的项目版本做出选择即可,我这个是android-8 所以用ID 1 .
-p就是生成的路径


可以将sdk的tools目录添加到环境变量 ~/.bashrc 文件中,重启后生效,以后可以直接使用命令了。
可以通过执行以下命令查看当前sdk中所包含的target以及相应id:
android list targets。

执行上述命令将新生成的3个文件 build.xml,local.properties,proguard-project.txt.

Android自动生成xml android xml编译_ant_02

在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文件中,可以定义自己的一些属性,或者重定义一些属性。

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" failοnerrοr="true">
          <arg value="clean" />
      </exec>
      <exec executable="ndk-build" failοnerrοr="true" />
  </target>

  ndk-build为ndk提供的命令,需要将ndk安装目录添加到环境变量中,添加方法同sdk/tools。
生成的so默认会放到libs/armeabi目录下。

 三、实现自动打包签名apk

  有两种方式可实现。

1、一种方式在elispe中执行ant.

右键点击项目中的build.xml->run as... 先查看下有多少种任务,当然这些任务都是来自<sdk>\tools\ant\build.xml,项目里的只是引用了它

 

Android自动生成xml android xml编译_android_03

 

  窗口打开

Android自动生成xml android xml编译_xml_04

默认的选择在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文件上传服务器


注意:如果环境变量找不到,在

在local.properties文件里要配置环境变量 :

<pre name="code" class="html">sdk.dir=H:/install/eclipse-SDK-3.7.2-win32/eclipse/android_sdk
env.ANDROID_HOME=sdk.dir
ANDROID_HOME=H:/install/eclipse-SDK-3.7.2-win32/eclipse/android_sdk
ANT_HOME=F:/Soft/ant/apache-ant-1.9.2
JAVA_HOME=C:/Program Files/Java/jdk1.6.0_10