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

我希望能够在安装ant之后启动我的应用程序,就像在eclipse中按下runbutton时一样。

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

  • 尝试使用离子版构建Android模拟器失败..“找不到类:javac1.8”
  • 尝试使用Ant构buildAndroid应用程序时引发ExceptionWithContext
  • 未知的类ILicensingService在对Android项目进行混淆时发现
  • Android - 如何在构建时为动态源项目动态设置包名?
  • 检测ant脚本中的构buildconfiguration(debugging或释放)
  • 管理Androidapp store(Google / Amazon / etc)的代码/构建?
  • jenkins和android生成
  • 如何在构buildAndroid apk与ant时在文件名中包含版本string?
  • 执行adb shell am start -a android.intent.action.MAIN -n <Package_name>/.<Activity>从ant应启动您的app.ofcourse你需要build立和安装应用程序尝试启动应用程序…你可以使用android build xml构build并使用“adb install”安装应用程序…

    使用Navin提供的命令,我能够创build这个ant目标:

     <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}应该是主要活动的类名. 字首。

    所以最后一个参数值的一个完整的例子是

     org.package.name/.MyCustomActivity 

    通常,将以下目标复制到您的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> 
     <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>package{activity}应该是主活动的全限定名(即包的名称,例如com.example.activty.MainActivty )。