现在的位置: 首页 > 综合 > 正文

使用命令行开发管理Android

2013年09月18日 ⁄ 综合 ⁄ 共 4571字 ⁄ 字号 评论关闭

创建项目

Creating a new project with build.xml

If you've already created your project and followedthe above instructions, you can skip this section. If not, you can may eithercreate a new Android project using the regular Eclipse method (via New >Other...
> Android Project), and follow the instructions in the abovesection, or you can use the command line as described here.

androidcreate project --name YourProjectName --path C:\dev\YourProject --targetandroid-3 --package com.company.testproject --activity MainActivity

 

生成目录:src/  res/ bin/ libs/

生成文件

AndroidManifest.xml

build.properties  由开发人员在其中配置build时的参数,Android-tools不会修改它。

default.properites 由android-tools创建和更新,必须checkin到Version ControlSystem。

local.properties  包含本地的SDK路径,不应该checkin VersionControl System。

build.xml 

proguard.cfg 

 

Note: To see theavailable targets, use android list target and you should see something like:

>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-3as the target ID.

 

创建完成后,根目录下会生成build.xml,默认taskhelp,执行ant会显示可以使用的target。其中ant
release
将会编译后生成一个未签名的apk

 

build.xml 利用的android项目的自定义task setupcom.android.ant.SetupTask)来完成一系列的编译、打包、执行的操作。所以初始的build.xml所有工作都是<setup
/>完成的。而setup实际上是import一系列实际干事的target来完成工作的。可以在<setup />前后添加target来完成自定的工作。

 

Eclipse项目中使用build.xml

默认生成的build.xmlEclipse中被认为有错误,因为build.xml中没有定义任何targetdefault
target help
是被<setup/> import进来的。所以删除project default target定义就好了。

bat脚本启动ant,可能需要在命令行中指明build.xml的绝对位置,可能项目中bat脚本的运行目录、eclipse运行目录、ant运行目录不一致。

 

自动签名

默认build.xml不知道签名的配置信息,所以ant release只能生成unsignedapk包。在同目录下的build.properties添加一下配置信息,并将签名文件拷贝到同目录下就行了。

配置信息:

key.store=keystored的文件名》
key.alias=key alias

如果添加下面的密码信息,就需要在执行ant的时候输入密码了:

key.store.password=password

key.alias.password=password

配置完成后,再执行ant release就会自动生成signedapk包了。

 

自动安装签名后的apk

build.xml<setup />后面添加target install-r,执行ant install-r就可以直接安装release
package
到默认设备或浏览器上。

    <targetname="install-r" depends="release">

               <exec executable="${adb}"failonerror="true">

                   <arg line="${adb.device.arg}"/>

                   <arg value="install"/>

                   <arg value="-r" />

                   <argpath="${out.release.file}" />

               </exec>

</target>

NOTE 安装到目标设备

tools/ant/main_rules.xml<propertyname="adb.device.arg" value="" />,所以安装到默认的设备或浏览器上。来指定安装目标,可以在ant命令执行时定义,如:ant
–Dadb.device.arg=[-d|-e|-s<serialNumber>]
,或者在build.xml<setup />之前设置property adb.device.arg

 

自动安装后,自动启动

可以利用ant,实现“自动启动”的target,发在“自动安装”的target之后运行,实现和eclipse中安装运行debug
apk
一样的效果。

1. Manifest文件中获取包名和Activity名称

    <!-- Name of the application packageextracted from manifest file -->

    <xpathinput="AndroidManifest.xml" expression="/manifest/@package"

                output="manifest.package" />

    <xpath input="AndroidManifest.xml" expression="/manifest/application/activity/@android:name"

                output="manifest.activity" />

2. 获取启动Activity的名称

Manifest文件中获取的启动Activity名称形式多样,例如,

android:name=”.MainActivity”

或者,没有点,android:name=”.MainActivity”

或者,包名都也好的,android:name=”com.test.MainActivity”

需要在ant中使用字符处理task来处理从Manifest文件中获取的名称,

第三方的扩展ant-contrib提供这样的task,在sourceforge上可以下载到。

<taskdefname="propertyregex"

    classname="net.sf.antcontrib.property.RegexTask">

    <classpath>

        <pathelementlocation="D:\\wihome\\projects\\android\\HelloCmd\\ant-contrib-1.0b3.jar"/>

    </classpath>

</taskdef>

<propertyregexproperty="manifest.activity.name"

    input="${manifest.activity}"

    regexp="[.]*[\.]*([^\.]*)$"

    select="\1" />

3. 利用命令adb shell am start -n<package-name>/<package-name>.<activity-name>启动已经安装的application

<targetname="run-r" depends="install-r">

    <exec executable="${adb}"failonerror="true">

        <arg line="${adb.device.arg}" />

        <arg line="shell am start -n" />

        <argvalue="${manifest.package}/${manifest.package}.${manifest.activity.name}"/>

    </exec>

</target>

 

利用Config文件控制文件中常量内容

参看《Using Ant to Automate Building AndroidApplications >>  Usinga Java configuration file

 

Eclipse项目中使用ant

1. Eclipse项目的根目录(AndroidManifest.xml同目录)执行

android update project –path.

执行完之后会在目录下生成build.xml

 

2. 修改build.xml

默认的build.xml只包含targettarget都被<setup />隐藏起来。eclipse
ant plugin
认不出来隐藏的target就没法执行。所以需要做如下修改:

1<setup />改为<setupimport="false"/>

2)将rules文件(如,sdk.dir/tools/ant/main_rules.xml,一般都是main rules)手动import进来。

rules文件的project标签的内容,也即那些隐藏的target,拷贝到setup标签之后。

 

3. Eclipse中右键点击build.xml,选择run as >> ant build…,配置需要执行的target,就可以run了。

 

4. 将签名keystore文件拷贝到project根目录,配置build.properties文件,就可以自动生成签名好的apk了,如何配置,参见本文其他部分。

 

Note build.xml的执行需要Eclipse ant pluginant版本在1.8以上。最新的eclipse
3.7
indigo)中的ant已经达到1.8

 

Ant启动

 

 

 

 

[Reference]

SDK DOC >> Developing >> Managing Projects>> From the Command Line

SDK DOC >> Developing >> Building andRunning

Online DOC >> Using Ant to Automate BuildingAndroid Applications

 

 

抱歉!评论已关闭.