使用命令行开发管理Android
创建项目
Creating a new project with build.xml
If you’ve already created your project and followed the above instructions, you can skip this section. If not, you can may either create a new Android project using the regular Eclipse method (via New > Other… > Android Project), and follow the instructions in the above section, or you can use the command line as described here.
android create project –name YourProjectName –path C:\dev\YourProject –target android-3 –package com.company.testproject –activity MainActivity
生成目录:src/ res/ bin/ libs/
生成文件:
1 2 3 4 5 6 | AndroidManifest.xml build.properties由开发人员在其中配置build时的参数,Android-tools不会修改它。 default.properites由android-tools创建和更新,必须checkin到Version Control System。 local.properties包含本地的SDK路径,不应该checkin Version Control System。 build.xml proguard.cfg |
Note: To see the available targets, use android list target and you should see something like:
1 2 3 4 5 6 7 | > android list target id: 1 or "android-3" Name: Android 1.5 Type: Platform API level: 3 Revision: 4 Skins: HVGA (default), HVGA-L, HVGA-P, QVGA-L, QVGA-P |
In the above case, you can use either 1 or android-3 as the target ID.
创建完成后,根目录下会生成build.xml,默认task为help,执行ant会显示可以使用的target。其中ant release将会编译后生成一个未签名的apk。
build.xml 利用的android项目的自定义task setup(com.android.ant.SetupTask)来完成一系列的编译、打包、执行的操作。所以初始的build.xml所有工作都是
在Eclipse项目中使用build.xml
默认生成的build.xml在Eclipse中被认为有错误,因为build.xml中没有定义任何target,default target help 是被
在bat脚本启动ant,可能需要在命令行中指明build.xml的绝对位置,可能项目中bat脚本的运行目录、eclipse运行目录、ant运行目录不一致。
自动签名
默认build.xml不知道签名的配置信息,所以ant release只能生成unsigned的apk包。在同目录下的build.properties添加一下配置信息,并将签名文件拷贝到同目录下就行了。
配置信息:
1 2 3 4 5 | key.store=《keystored的文件名》 key.alias=《key alias》 如果添加下面的密码信息,就需要在执行ant的时候输入密码了: key.store.password=《password》 key.alias.password=《password》 |
配置完成后,再执行ant release就会自动生成signed的apk包了。
自动安装签名后的apk
在build.xml的
- NOTE 安装到目标设备
tools/ant/main_rules.xml中
1 | <property name="adb.device.arg" value="" /> |
所以安装到默认的设备或浏览器上。来指定安装目标,可以在ant命令执行时定义,如:
1 | ant –Dadb.device.arg=[-d|-e|-s <serialNumber>] |
或者在build.xml的 <setup /> 之前设置property adb.device.arg。
自动安装后,自动启动
可以利用ant,实现“自动启动”的target,发在“自动安装”的target之后运行,实现和eclipse中安装运行debug apk一样的效果。
从Manifest文件中获取包名和Activity名称
获取启动Activity的名称
从Manifest文件中获取的启动Activity名称形式多样,例如,
android:name=”.MainActivity”
或者,没有点,android:name=”.MainActivity”
或者,包名都也好的,android:name=”com.test.MainActivity”
需要在ant中使用字符处理task来处理从Manifest文件中获取的名称,
第三方的扩展ant-contrib提供这样的task,在sourceforge上可以下载到。
利用命令adb shell am start -n /.启动已经安装的application。
利用Config文件控制文件中常量内容
参看《Using Ant to Automate Building Android Applications》» Using a Java configuration file
在Eclipse项目中使用ant
在Eclipse项目的根目录(AndroidManifest.xml同目录)执行
1 | android update project –path . |
执行完之后会在目录下生成build.xml
修改build.xml
默认的build.xml只包含target,target都被
-
<setup /> 改为 <setup import=”false”/>
-
将rules文件(如,sdk.dir/tools/ant/main_rules.xml,一般都是main rules)手动import进来。
将rules文件的project标签的内容,也即那些隐藏的target,拷贝到setup标签之后。 - 在Eclipse中右键点击build.xml,选择run as » ant build…,配置需要执行的target,就可以run了。
- 将签名keystore文件拷贝到project根目录,配置build.properties文件,就可以自动生成签名好的apk了,如何配置,参见本文其他部分。
- Note
build.xml的执行需要Eclipse ant plugin的ant版本在1.8以上。最新的eclipse 3.7(indigo)中的ant已经达到1.8。
Ant启动
参考
- SDK DOC » Developing » Managing Projects » From the Command Line
- SDK DOC » Developing » Building and Running
- Online DOC » Using Ant to Automate Building Android Applications