¿Cómo iniciar una aplicación usando las herramientas ADB de Android?

¿Cómo envío un bash utilizando las herramientas ADB de Android?

adb shell am start -n com.package.name/com.package.name.ActivityName 

O puede usar esto directamente:

 adb shell am start -n com.package.name/com.package.name.ActivityName 

También puede especificar acciones para filtrar por sus filtros de intención:

 am start -a com.example.ACTION_NAME -n com.package.name/com.package.name.ActivityName 

Es posible ejecutar la aplicación especificando el nombre del paquete solo con la herramienta mono siguiendo este patrón:

 adb shell monkey -p your.app.package.name -c android.intent.category.LAUNCHER 1 

Command se usa para ejecutar la aplicación usando la herramienta mono que genera entradas aleatorias para la aplicación. La última parte del comando es un entero que especifica el número de entrada aleatoria generada para la aplicación. En este caso, el número es 1, que de hecho se utiliza para iniciar la aplicación (haga clic en el icono).

O bien, podrías usar esto:

 adb shell am start -n com.package.name/.ActivityName 

Los usuarios de linux / mac también pueden crear un script para ejecutar un apk con algo como lo siguiente:

crea un archivo llamado “adb-run.sh” con estas 3 líneas:

 pkg=$(aapt dump badging $1|awk -F" " '/package/ {print $2}'|awk -F"'" '/name=/ {print $2}') act=$(aapt dump badging $1|awk -F" " '/launchable-activity/ {print $2}'|awk -F"'" '/name=/ {print $2}') adb shell am start -n $pkg/$act 

luego “chmod + x adb-run.sh” para hacerlo ejecutable.

ahora puedes simplemente:

adb-run.sh myapp.apk

El beneficio aquí es que no necesita saber el nombre del paquete o el nombre de la actividad que se puede iniciar. Del mismo modo, puede crear “adb-uninstall.sh myapp.apk”

Nota: Esto requiere que tenga un apt en su camino. Puede encontrarlo en la nueva carpeta de herramientas de comstackción en el SDK.

Además, quiero mencionar una cosa más.

Cuando inicia una aplicación desde adb shell am , automáticamente agrega el indicador FLAG_ACTIVITY_NEW_TASK que hace que el comportamiento cambie. Vea el código .

Por ejemplo, si adb shell am actividad de Play Store desde adb shell am , al presionar el botón ‘ Atrás ‘ (botón de retroceso de hardware) no tomaría su aplicación, sino que le llevaría a la actividad anterior de Play Store si hubiera alguna (si no hubiera Juega en la tienda, luego te llevaría tu aplicación). La documentación de FLAG_ACTIVITY_NEW_TASK dice:

si ya se está ejecutando una tarea para la actividad que está comenzando, entonces no se iniciará una nueva actividad; en su lugar, la tarea actual simplemente se llevará al frente de la pantalla con el estado en que se encontraba por última vez

Esto me llevó a pasar unas horas para descubrir qué salió mal.

Por lo tanto, tenga en cuenta que adb shell am añade el flag FLAG_ACTIVITY_NEW_TASK .

También podemos iniciar una aplicación conociendo el tipo de aplicación y alimentándola con datos:

 adb shell am start -d "file:///sdcard/sample.3gp" -t "video/3gp" -a android.intent.action.VIEW 

Este comando muestra los reproductores de video disponibles para reproducir el archivo sample.3gp

abra ~ / .bash_profile y agregue estas funciones bash al final del archivo

 function androidinstall(){ adb install -r ./bin/$1.apk } function androidrun(){ ant clean debug adb shell am start -n $1/$1.$2 } 

luego abre la carpeta del proyecto de Android

 androidinstall app-debug && androidrun com.example.app MainActivity 

monkey --pct-syskeys 0 para tableros de desarrollo

Sin este argumento, la aplicación no se abrirá en una placa de desarrollo sin las teclas / pantalla:

 adb shell monkey --pct-syskeys 0 -p com.cirosantilli.android_cheat.textviewbold 1 

y falla con error:

 SYS_KEYS has no physical keys but with factor 2.0% 

Probado en HiKey960, Android O AOSP.

Aprendido de: https://github.com/ARM-software/lisa/pull/408

También se le preguntó en: prueba de mono: si el sistema Android no tiene claves físicas, ¿cuáles son los parámetros que se deben incluir en el comando?

Intente esto, para abrir una aplicación de fotografía de Android y con un archivo de imagen específico para abrir como parámetro.

adb shell am start -n com.google.android.apps.photos/.home.HomeActivity -d file:///mnt/user/0/primary/Pictures/Screenshots/Screenshot.png

Funcionará en el último Android, no aparecerá ninguna ventana emergente para seleccionar una aplicación para abrir, ya que le está dando la aplicación específica a la que desea abrir su imagen con

 adb shell am start -n '/. 

Ex:

 adb shell am start -n 'com.android.settings/.wifi.WifiStatusTest' 

Puede usar la aplicación APK-INFO para conocer la lista de actividades de la aplicación con respecto a cada paquete de aplicaciones