2010-02-12 12 views
5

Durante el desarrollo de aplicaciones para Android, hago lo siguiente con mucha frecuencia:¿Iniciar automáticamente la aplicación de Android después de cargarla en el teléfono?

  1. Ejecutar "reinstalación hormiga" para compilar y cargar una aplicación en el emulador.
  2. Cambie a la ventana del emulador.
  3. Haga clic en el paquete que acabo de cargar para ejecutarlo y probarlo.

¿Hay alguna manera en que pueda decirle al teléfono del emulador que ejecute el paquete que acabo de cargar? ¿Quizás un comando "adb" puedo enviarle después de ejecutar mi script de compilación? Como último recurso, creo que podría ejecutar algo que simule el clic del mouse para mí.

+0

Gran primera pregunta y bienvenidos. –

Respuesta

3

Desea utilizar el comando am. Digamos que tienes un manifiesto que se ve un poco como esto:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.MyApp"> 
    <application android:icon="@drawable/icon"> 
     <activity class=".MyMainActivity" android:label="@string/app_name"> 
      <intent-filter> 
       <action android:value="android.intent.action.MAIN" /> 
       <category android:value="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
    </application> 
    ... 
</manifest> 

sería empezar que con:

adb shell am start -a android.intent.action.MAIN -n com.example.MyApp/.MyMainActivity 

aunque es posible que desee para indicarle que debe esperar hasta que esté listo:

adb wait-for-device shell am start -a android.intent.action.MAIN -n com.example.MyApp/.MyMainActivity 

Básicamente, acaba de disparar un Intent que llama a su paquete Activity principal.

La documentación completa (de funcionamiento de la mañana --help) es:

usage: am [start|broadcast|instrument|profile] 
     am start [-D] INTENT 
     am broadcast INTENT 
     am instrument [-r] [-e <ARG_NAME> <ARG_VALUE>] [-p <PROF_FILE>] 
       [-w] <COMPONENT> 
     am profile <PROCESS> [start <PROF_FILE>|stop] 

     INTENT is described with: 
       [-a <ACTION>] [-d <DATA_URI>] [-t <MIME_TYPE>] 
       [-c <CATEGORY> [-c <CATEGORY>] ...] 
       [-e|--es <EXTRA_KEY> <EXTRA_STRING_VALUE> ...] 
       [--ez <EXTRA_KEY> <EXTRA_BOOLEAN_VALUE> ...] 
       [-e|--ei <EXTRA_KEY> <EXTRA_INT_VALUE> ...] 
       [-n <COMPONENT>] [-f <FLAGS>] [<URI>] 
+1

¡Gracias por la respuesta informativa! :-) Probablemente no habría solucionado eso desde el archivo de ayuda solo. Eso me ha ahorrado una buena cantidad de tiempo cada día. Para agregar a esto, llame "adb shell input keyevent 3 &" antes de compilar/instalar la aplicación para cambiar el emulador a la pantalla de inicio primero. Las aplicaciones de ejecución intensiva hacen que la aplicación cargue lento de lo contrario. – BobbyJim

+0

No hay problema. Tomó un poco de investigación descubrirlo, pero sabía que era posible ya que Eclipse lo hace. –

Cuestiones relacionadas