uptodown una que puedo puede play para mostrar instalar gestor este dispongas desde descargadas compatible como capaz archivos archivo aplicacion abrir android android-install-apk

android - puedo - puede que no dispongas de una aplicacion compatible para abrir este archivo



¿Cómo ejecutar(no solo instalar) una aplicación de Android usando un archivo.apk? (6)

Creé alias de terminal para instalar y ejecutar un apk con un solo comando.

// I use ZSH, here is what I added to my .zshrc file (config file) // at ~/.zshrc // If you use bash shell, append it to ~/.bashrc # Have the adb accessible, by including it in the PATH export PATH="/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin:path/to/android_sdk/platform-tools/" # Setup your Android SDK path in ANDROID_HOME variable export ANDROID_HOME=~/sdks/android_sdk # Setup aapt tool so it accessible using a single command alias aapt="$ANDROID_HOME/build-tools/27.0.3/aapt" # Install APK to device # Use as: apkinstall app-debug.apk alias apkinstall="adb devices | tail -n +2 | cut -sf 1 | xargs -I X adb -s X install -r $1" # As an alternative to apkinstall, you can also do just ./gradlew installDebug # Alias for building and installing the apk to connected device # Run at the root of your project # $ buildAndInstallApk alias buildAndInstallApk=''./gradlew assembleDebug && apkinstall ./app/build/outputs/apk/debug/app-debug.apk'' # Launch your debug apk on your connected device # Execute at the root of your android project # Usage: launchDebugApk alias launchDebugApk="adb shell monkey -p `aapt dump badging ./app/build/outputs/apk/debug/app-debug.apk | grep -e ''package: name'' | cut -d /' -f 2` 1" # ------------- Single command to build+install+launch apk------------# # Execute at the root of your android project # Use as: buildInstallLaunchDebugApk alias buildInstallLaunchDebugApk="buildAndInstallApk && launchDebugApk"

Nota: Aquí estoy creando, instalando y ejecutando el apk de depuración que suele estar en la ruta: ./app/build/outputs/apk/debug/app-debug.apk , cuando este comando se ejecuta desde la raíz del proyecto

Si desea instalar y ejecutar cualquier otro apk, simplemente reemplace la ruta de depuración de apk con la ruta de su propio apk

Aquí está la gist de lo mismo. Creé esto porque estaba teniendo problemas para que la compilación de Android Studio llegara a los 28 minutos, así que cambié a las compilaciones de terminales que duraban unos 3 minutos. Puedes leer más sobre esto here

Explicación:

El alias que creo que necesita explicación es el alias launchDebugApk . Aquí está cómo se descompone:

La parte aapt dump badging ./app/build/outputs/apk/debug/app-debug.apk | grep -e ''package: name aapt dump badging ./app/build/outputs/apk/debug/app-debug.apk | grep -e ''package: name básicamente usa la herramienta aapt para extraer el nombre del paquete de la apk.

A continuación, está el comando: adb shell monkey -p com.package.name 1 , que básicamente usa la herramienta monkey para abrir la actividad de inicio predeterminada de la aplicación instalada en el dispositivo conectado. La parte de com.package.name es reemplazada por nuestro comando anterior que se encarga de obtener el nombre del paquete de la apk.

¿Hay algún comando en cmd.exe que me permita iniciar la actividad principal de una aplicación de Android en particular usando el archivo .apk de esa aplicación? Tenga en cuenta que conozco este comando que solo instala una aplicación de Android:

adb install myapp.apk

Este comando solo instalará myapp en el emulador y tengo que ejecutar manualmente esta aplicación desde el emulador (haciendo un solo clic en su icono).

Lo que quiero hacer es usar un comando que no solo instala la aplicación sino que también inicia su actividad principal (tenga en cuenta que solo tengo su archivo .apk , así que no sé cuál es el nombre del paquete o el nombre de cualquier actividad).


Cuando inicie la aplicación desde la GUI, adb logcat puede 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
[...]


Esta es una solución en shell script:

apk="$apk_path"

1. Instalar apk

adb install "$apk" sleep 1

2. Obtener el nombre del paquete

pkg_info=`aapt dump badging "$apk" | head -1 | awk -F " " ''{print $2}''` eval $pkg_info > /dev/null

3. Iniciar aplicación

pkg_name=$name adb shell monkey -p "${pkg_name}" -c android.intent.category.LAUNCHER 1


No puede instalar y ejecutar de una sola vez, pero ciertamente puede usar adb para iniciar su aplicación ya instalada. Use adb shell am start para disparar un intento, aunque deberá usar el intento correcto para su aplicación. Un par de ejemplos:

adb shell am start -a android.intent.action.MAIN -n com.android.settings/.Settings

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 a 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)

Eso le dice el nombre de la actividad principal (MainWindow), y ahora puede ejecutar

adb shell am start -a android.intent.action.MAIN -n com.anonymous/.MainWindow


Puse esto en mi makefile, justo en 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 del paquete de la aplicación, como com.company.ourfirstapp

No hay necesidad de cazar el nombre de la actividad.


si está buscando el equivalente de "adb run myapp.apk"

Puedes usar el script que se muestra en esta respuesta.

(Solo Linux y Mac, tal vez con Cygwin en Windows)

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 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 de inicio. Del mismo modo, puede crear "adb-uninstall.sh myapp.apk"

Nota: Esto requiere que tengas aapt en tu camino. Puede encontrarlo en la nueva carpeta de herramientas de compilación en el SDK.