2012-01-26 7 views
19

Me gustaría poder iniciar mi aplicación después de la instalación con la hormiga al igual que ocurre al presionar el botón run en eclipse.Cómo ejecutar una aplicación de Android en el dispositivo con ant

¿Hay una tarea ant existente después de crear un proyecto en la línea de comandos o hay un comando que podría ejecutar con hormiga?

+0

+1 Muy buena pregunta. He automatizado todo mi proceso 'compile -> install' usando una combinación de' ant' y 'makefile' y la única pieza faltante es _launching_ la aplicación dentro del emulador. –

Respuesta

10

ejecutando adb shell am start -a android.intent.action.MAIN -n <Package_name>/.<Activity> de hormiga debe ejecutar su aplicación. Por supuesto, necesita construir e instalar la aplicación tratando de iniciar la aplicación ... puede usar Android build xml para construir y usar "instalación de adb" para instalar la aplicación. .

32

Usando el comando proporcionado por Navin yo era capaz de crear esta tarea 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> 

en la línea de comandos ejecuto:

ant debug install run 

Y todo funciona maravillosamente

EDITAR

Como WarrenFaith amablemente señaló en los comentarios {activity} debe ser el nombre de la clase de actividad con un prefijo ..

lo tanto, un ejemplo completo del valor de la última arg habría

org.package.name/.MyCustomActivity 
+2

para todos los que luchan como yo: no olvides que el '{activity}' DEBE comenzar con un '.' (¡un punto!). Ejemplo: 'org.package.name/.MyCustomActivity' – WarrenFaith

+2

Bonita idea zode64 :-) Además, para reiniciar una aplicación desde cero, puede usar el comando" adb shell am force-stop ", tal vez debería agregarlo a el objetivo de la hormiga? –

+0

Esto falla si hay varios dispositivos conectados. ¿Hay alguna forma de que te pregunte en qué dispositivo instalarlo? – karl

13

Generalmente, copia siguiente de destino a su build.xml o custom_rules.xml. Tenga en cuenta que en custom_rules.xml (si aún no existe) debe envolver esto en un elemento.

<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> 
+0

Esta respuesta es mejor que la proporcionada por zode64 porque se integra más estrechamente con el formato de proyecto de Android. – smaudet

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> 

sólo quiero decir que {package.name} debe ser igual a <manifest> 's package{activity} y debe ser el nombre cualificado completo de la actividad (es decir, con el nombre del paquete, por ejemplo com.example.activty .MainActivty).

Cuestiones relacionadas