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的版本。
例如: 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.
在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,项目里的只是引用了它
窗口打开
默认的选择在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