Muchas gracias, he hecho que la función de shell en ~ / .bash_profile sea mucho más rápida function androidrun(){ ant clean debug adb shell am start -n $1/$1.MainActivity }y su usoandroidrun com.example.test
¿Es posible ejecutar la actividad predeterminada, en lugar de ser tan específico de la actividad que pretendo que comience?
desarrollador de Android
1
Tuve problemas para encontrar la aplicación y la actividad. Usé esta línea de tubería adb logcat | grep --line-buffered ActivityManager | grep --line-bufferedpara enumerar todas las aplicaciones que se mostraron.
Att Righ
299
Es posible ejecutar la aplicación que especifica el nombre del paquete solo con la herramienta monkey siguiendo este patrón:
El comando se usa para ejecutar la aplicación usando la herramienta monkey que genera una entrada aleatoria para la aplicación. La última parte del comando es un entero que especifica el número de entradas aleatorias generadas para la aplicación. En este caso, el número es 1, que de hecho se utiliza para iniciar la aplicación (clic en el icono).
El iniciador es el predeterminado. Puede simplificar aadb shell monkey -p your.app.package.name 1
Androiderson
3
¿Es posible usar el nombre del archivo APK, en lugar del nombre del paquete? Supongamos que tengo un archivo APK y quiero poder instalarlo y ejecutarlo, ¿es posible?
Desarrollador de Android
1
¿Qué sucede si recibo un error: no se encontraron actividades para ejecutar? abortando ?
IgorGanapolsky
3
@IgorGanapolsky si no se encuentran actividades, es una aplicación de servicio y no tiene ninguna actividad.
m3nda
1
@IgorGanapolsky si es un uso de servicio, adb shell am startservice com.some.package.name/.YourServiceSubClassNamevea aquí: stackoverflow.com/a/18703083/211292
ThomasW
123
O podrías usar esto:
adb shell am start -n com.package.name/.ActivityName
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 iniciable. Del mismo modo, puede crear "adb-uninstall.sh myapp.apk"
Nota: Esto requiere que tenga un camino en su camino. Puede encontrarlo en la nueva carpeta de herramientas de compilación en el SDK.
para windows puedes probar con cygwin (no probado)
dljava
3
Tu publicación me hizo buscar AWK. Seguí adelante y recreé tu guión. pastebin.com/X7X1SsFa
Kyle
2
Esto es fabuloso. Por qué este no es un comando adb estándar que nunca sabremos.
John Tyree
No necesitará tener un aapt en su camino (siempre y cuando "android" lo esté) si configura la RUTA en el script adb-run.sh, así: RUTA = $ (dirname $ (que android)) /. ./build-tools/20.0.0:$PATH
Cuando inicia una aplicación desde adb shell am, agrega automáticamente el indicador FLAG_ACTIVITY_NEW_TASK que hace que el comportamiento cambie. Mira el código .
Por ejemplo, si inicia la actividad de Play Store adb shell am, presionar el botón ' Atrás ' (botón de retroceso del hardware) no le llevaría a su aplicación, sino que le llevaría a la actividad anterior de Play Store si hubiera alguna (si no hubiera una tarea de Play store) , entonces 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 cambio, la tarea actual simplemente será llevada al frente de la pantalla con el estado en el que estuvo por última vez
Esto me llevó a pasar unas horas para descubrir qué salió mal.
Por lo tanto, tenga en cuenta que adb shell amagregue la bandera FLAG_ACTIVITY_NEW_TASK .
@TrevorSenior app-debug es el título del archivo apk, generalmente en modo de depuración el archivo apk generado se titula "APLICACIÓN NOMBRE-debug.apk"
AbdullahDiaa
7
monkey --pct-syskeys 0 para tableros de desarrollo
Sin este argumento, la aplicación no se abrirá en una placa de desarrollo sin teclas / pantalla:
Pruebe esto, para abrir una aplicación de fotos 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 está dando una aplicación específica a la que desea abrir su imagen con
Tengo una aplicación de reproductor, que puede transmitir un video desde la url, ¿cómo puedo pasar esta url como parámetro y transmitir desde esa url? supongamos una url de youtube?
Respuestas:
O puede usar esto directamente:
También puede especificar acciones para que sean filtradas por sus filtros de intención:
fuente
function androidrun(){ ant clean debug adb shell am start -n $1/$1.MainActivity }
y su usoandroidrun com.example.test
adb shell am
le dará una lista de otras opciones para pasar alam
comando. Puede encontrar más información en developer.android.com/tools/help/adb.html#amadb logcat | grep --line-buffered ActivityManager | grep --line-buffered
para enumerar todas las aplicaciones que se mostraron.Es posible ejecutar la aplicación que especifica el nombre del paquete solo con la herramienta monkey siguiendo este patrón:
El comando se usa para ejecutar la aplicación usando la herramienta monkey que genera una entrada aleatoria para la aplicación. La última parte del comando es un entero que especifica el número de entradas aleatorias generadas para la aplicación. En este caso, el número es 1, que de hecho se utiliza para iniciar la aplicación (clic en el icono).
fuente
adb shell monkey -p your.app.package.name 1
adb shell am startservice com.some.package.name/.YourServiceSubClassName
vea aquí: stackoverflow.com/a/18703083/211292O podrías usar esto:
fuente
monkey -p com.package.name 1
víaadb shell
Los usuarios de Linux / Mac también pueden crear un script para ejecutar un apk con algo como lo siguiente:
cree un archivo llamado "adb-run.sh" con estas 3 líneas:
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 iniciable. Del mismo modo, puede crear "adb-uninstall.sh myapp.apk"
Nota: Esto requiere que tenga un camino en su camino. Puede encontrarlo en la nueva carpeta de herramientas de compilación en el SDK.
fuente
Además, quiero mencionar una cosa más.
Cuando inicia una aplicación desde
adb shell am
, agrega automáticamente el indicador FLAG_ACTIVITY_NEW_TASK que hace que el comportamiento cambie. Mira el código .Por ejemplo, si inicia la actividad de Play Store
adb shell am
, presionar el botón ' Atrás ' (botón de retroceso del hardware) no le llevaría a su aplicación, sino que le llevaría a la actividad anterior de Play Store si hubiera alguna (si no hubiera una tarea de Play store) , entonces te llevaría tu aplicación). La documentación de FLAG_ACTIVITY_NEW_TASK dice:Esto me llevó a pasar unas horas para descubrir qué salió mal.
Por lo tanto, tenga en cuenta que
adb shell am
agregue la bandera FLAG_ACTIVITY_NEW_TASK .fuente
También podemos iniciar una aplicación conociendo el tipo de aplicación y alimentándola con datos:
Este comando muestra los reproductores de video disponibles para reproducir el archivo sample.3gp
fuente
Paso 1: Primero obtenga todo el nombre del paquete de las aplicaciones instaladas en su Dispositivo, usando:
adb shell pm list packages
Paso 2: Obtendrá todos los nombres de paquete, copie el que desea comenzar a usar adb.
Paso 3: Agregue el nombre del paquete deseado en el siguiente comando.
adb shell monkey -p 'your package name' -v 500
fuente
abra ~ / .bash_profile y agregue estas funciones bash al final del archivo
luego abra la carpeta del proyecto de Android
fuente
app-debug
hace?monkey --pct-syskeys 0
para tableros de desarrolloSin este argumento, la aplicación no se abrirá en una placa de desarrollo sin teclas / pantalla:
y falla con error:
Probado en HiKey960, Android O AOSP.
Aprendí de: https://github.com/ARM-software/lisa/pull/408
También preguntado en: prueba de mono: si el sistema Android no tiene claves físicas, ¿cuáles son los parámetros que deben incluirse en el comando?
fuente
Ex:
Puede usar la aplicación APK-INFO para conocer la lista de actividades de la aplicación con respecto a cada paquete de aplicaciones
fuente
Pruebe esto, para abrir una aplicación de fotos 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 está dando una aplicación específica a la que desea abrir su imagen con
fuente