如何使用ant在设备上运行Android应用程序

时间:2012-01-26 22:09:27

标签: android ant

我希望能够在使用ant安装后启动我的应用程序就像在eclipse中按run按钮时一样。

在命令行上创建项目后是否有现有的ant任务,或者是否有可以用ant执行的命令?

4 个答案:

答案 0 :(得分:32)

使用Navin提供的命令,我能够创建这个蚂蚁目标:

<target name="run">
    <exec executable="adb">
        <arg value="shell"/>
        <arg value="am"/>
        <arg value="start"/>
        <arg value="-a"/>
        <arg value="android.intent.action.MAIN"/>
        <arg value="-n"/>
        <arg value="{package.name}/{activity}"/>
    </exec>
</target>

在命令行上执行:

ant debug install run

这一切都在游泳。

修改

正如WarrenFaith在评论中有用地指出{activity}应该是带有.前缀的主要活动的类名。

所以最后一个arg的值的完整示例是

org.package.name/.MyCustomActivity

答案 1 :(得分:13)

通常,将以下目标复制到build.xml或custom_rules.xml。请注意,在custom_rules.xml中(如果它尚不存在),您需要将其包装在元素中。

<target name="start">
    <xpath input="AndroidManifest.xml"
           expression="/manifest/@package"
           output="manifest.package" />
    <xpath input="AndroidManifest.xml"
           expression="/manifest/application/activity[intent-filter/action/@android:name='android.intent.action.MAIN']/@android:name"
           output="manifest.main" />
    <echo level="info">Restart main activity ${manifest.package}/.${manifest.main}</echo>
    <exec executable="${android.platform.tools.dir}/adb">
        <arg value="shell"/>
        <arg value="am"/>
        <arg value="start"/>
        <arg value="-S"/>
        <arg value="-a"/>
        <arg value="android.intent.action.MAIN"/>
        <arg value="-n"/>
        <arg value="${manifest.package}/.${manifest.main}"/>
    </exec>
</target>

答案 2 :(得分:10)

从ant执行adb shell am start -a android.intent.action.MAIN -n <Package_name>/.<Activity>应启动你的app.ofcourse你需要构建和安装试图启动应用程序的应用程序...你可以使用android build xml来构建和使用“adb install”来安装应用...

答案 3 :(得分:0)

<target name="run">
    <exec executable="adb">
        <arg value="shell"/>
        <arg value="am"/>
        <arg value="start"/>
        <arg value="-a"/>
        <arg value="android.intent.action.MAIN"/>
        <arg value="-n"/>
        <arg value="{package.name}/{activity}"/>
    </exec>
</target>

我只想说{package.name}应该等于<manifest>的{​​{1}}而package应该是主要活动的完全限定名称(即包名称,例如com.example.activty.MainActivty)。