¿Cómo ejecutar (no sólo instalar) una aplicación de Android usando el archivo .apk?
¿Hay algún comando en cmd.exe
que me permita iniciar la actividad principal de una aplicación android en particular utilizando el archivo .apk
de esa aplicación. Tenga en cuenta que conozco este comando que sólo instala una aplicación de Android:
adb install myapp.apk
Este comando sólo instalará myapp
en el emulador y tengo que ejecutar manualmente esta aplicación desde el emulador (realizando un solo clic en su icono).
- Silent install apk programmatically by system app (sin root)
- Android apk install: ¿Cómo borrar archivos de la versión antigua?
- Android - ¿Qué sucede cuando caduca una clave de firma?
- Asegúrate de que la aplicación de Android se haya instalado desde Play-Store
- Android cómo instalar el archivo apk almacenado en la carpeta de activos
Lo que quiero hacer es usar un comando que no sólo instala la aplicación, sino que también inicia su actividad principal (tenga en cuenta que sólo tengo su archivo .apk
, así que no sé cuál es el nombre del paquete o cualquier nombre de actividad).
- "¿Cómo están" las aplicaciones de Android (Facebook, etc.) instaladas en un teléfono Android?
- Cómo solucionar INSTALL_FAILED_DEXOPT este error?
- ¿Cómo instalo APK usando el script de actualización de Android?
- Pasar parámetro a la aplicación cuando se instala desde Google Play
- INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES en la instalación de adb
- Android Lollipop - PackageInstaller.Session commit ()
- Android: apk firmado no se ejecuta en dispositivos móviles
- Intención de instalar el archivo APK - Android Nougat
No se puede instalar y ejecutar de una vez – pero ciertamente puede utilizar adb para iniciar su aplicación ya instalada. Utilizar adb shell es comenzar a disparar una intención – tendrá que utilizar la intención correcta para su aplicación sin embargo. Un par de ejemplos:
adb shell am start -a android.intent.action.MAIN -n com.android.settings/.Settings
Se iniciará Configuración, y
adb shell am start -a android.intent.action.MAIN -n com.android.browser/.BrowserActivity
Lanzará el navegador. Si desea apuntar el navegador en una página en particular, haga esto
adb shell am start -a android.intent.action.VIEW -n com.android.browser/.BrowserActivity http://www.google.co.uk
Si no sabe el nombre de las actividades en el APK, haga esto
aapt d xmltree <path to apk> AndroidManifest.xml
El contenido de salida incluirá una sección como esta:
E: activity (line=32) A: android:theme(0x01010000)=@0x7f080000 A: android:label(0x01010001)=@0x7f070000 A: android:name(0x01010003)="com.anonymous.MainWindow" A: android:launchMode(0x0101001d)=(type 0x10)0x3 A: android:screenOrientation(0x0101001e)=(type 0x10)0x1 A: android:configChanges(0x0101001f)=(type 0x11)0x80 E: intent-filter (line=33) E: action (line=34) A: android:name(0x01010003)="android.intent.action.MAIN" XE: (line=34)
Que le dice el nombre de la actividad principal (MainWindow), y ahora se puede ejecutar
adb shell am start -a android.intent.action.MAIN -n com.anonymous/.MainWindow
Si estás buscando el equivalente de "adb ejecutar myapp.apk"
Puede usar el script mostrado en esta respuesta
(Linux y mac solamente – quizá con cygwin en ventanas)
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:
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 usted puede simplemente:
Adb-run.sh miapp.apk
El beneficio aquí es que no es necesario conocer 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 usted tenga un aapt en su camino. Puede encontrarlo en la nueva carpeta de herramientas de construcción del SDK
Cuando inicie la aplicación desde la GUI, adb logcat
podría mostrarle la acción / categoría / componente correspondiente:
$ Adb logcat
[…]
I / ActivityManager (1607): START {act = android.intent.action.MAIN cat = [android.intent.category.LAUNCHER] flg = 0x10200000 cmp = com.android.browser / .BrowserActivity} de pid 1792
[…]
Pongo esto en mi makefile, a la derecha la siguiente línea después de adb install ...
adb shell monkey -p `cat .identifier` -c android.intent.category.LAUNCHER 1
Para que esto funcione, debe haber un archivo .identifier con el identificador de paquete de la aplicación en él, como com.company.ourfirstapp
No es necesario buscar el nombre de la actividad.
- ¿Dónde se escribe la salida de registro cuando se utiliza Roboelectric + Roboguice?
- Cómo comprobar la extensión de archivo en android