2012-10-02 30 views
50

¿Hay alguna forma de que la actividad de lanzamiento para un paquete sea usando adb? Para un teléfono unroot (es decir sin tener que extraer el apk del directorio /data/app e inspeccionar con appt).obtener actividad ejecutable nombre del paquete desde adb

Intenté dumpsys, pero no incluye información sobre la actividad de inicio predeterminada.

Gracias

Respuesta

74

No es necesario tirar de la raíz a los archivos APK de /data/app. Claro, puede que no tenga permisos para listar el contenido de ese directorio, pero se pueden encontrar las ubicaciones de los archivos de APK con:

adb shell pm list packages -f 

continuación, puede utilizar adb pull:

adb pull <APK path from previous command> 

y luego aapt a Obtenga la información que desea:

aapt dump badging <pulledfile.apk> 
+11

y el uso aapt se puede encontrar aquí en StackOverflow: http://stackoverflow.com/a/7502519/26510 –

+0

Este es grande, directa y asesino, incluyendo el primer comentario – Oxi

+3

1: Haz como kabuko dijo 2, tirón ADB/data/app/ ~/ 3, volcado aapt credencialización eso es todo – Oxi

0

Aquí hay otra forma de averiguar el nombre del paquete de aplicaciones y la actividad del iniciador.

Paso 1: Inicie "adb logcat" en el símbolo del sistema.

Paso 2: Abrir la aplicación (ya sea en el emulador o dispositivo real) enter image description here

+1

Esto solo funciona si la aplicación ya se ha iniciado al menos una vez en el dispositivo. – sschuberth

+0

Considero que esta es la solución más fácil, no estoy seguro de por qué los votos a favor. – Marcelo

8
#!/bin/bash 
#file getActivity.sh 
package_name=$1 
#launch app by package name 
adb shell monkey -p ${package_name} -c android.intent.category.LAUNCHER 1; 
sleep 1; 
#get Activity name 
adb shell logcat -d | grep 'START u0' | tail -n 1 | sed 's/.*cmp=\(.*\)} .*/\1/g' 

muestra:

getActivity.sh com.tencent.mm 
com.tencent.mm/.ui.LauncherUI 
33
$ adb shell pm dump PACKAGE_NAME | grep -A 1 MAIN 
+0

Esto funcionó en N6 7.0 - gracias. – Kristopher

+1

'$ adb shell pm volcado PACKAGE_NAME | grep -A 1 'filtro' | cabeza -n 1 | cut -d '' -f 12' Probablemente haya una manera más inteligente, pero yo no soy * NIX guru. – Kristopher

+1

'pm dump' descarga muchos servicios innecesarios. y 'pm' en sí mismo es un comando java, por lo que toma un tiempo para comenzar. La parte relevante de la salida proviene de 'PackageManager.Dump()' de todos modos, por lo que 'adb shell dumpsys package PACKAGE_NAME' sería mucho más eficiente para producir el mismo resultado. Pero aún hay una mejor manera de que Android 7.0+ vea http://stackoverflow.com/a/41325792/1778421 –

7

no he encontrado que aparece de manera actualización la lista.

es necesario tener el apk instalado y en funcionamiento en frente de su teléfono para esta solución:

línea

de Windows CMD:

adb shell dumpsys window windows | findstr <any unique string from your pkg Name>

Linux Terminal:

adb shell dumpsys window windows | grep -i <any unique string from your Pkg Name>

Salida para el paquete Calculadora sería:

Window #7 Window{39ced4b1 u0 com.android.calculator2/com.android.calculator2.Calculator}: 

    mOwnerUid=10036 mShowToOwnerOnly=true package=com.android.calculator2 appop=NONE 

    mToken=AppWindowToken{29a4bed4 token=Token{2f850b1a ActivityRecord{eefe5c5 u0 com.android.calculator2/.Calculator t322}}} 

    mRootToken=AppWindowToken{29a4bed4 token=Token{2f850b1a ActivityRecord{eefe5c5 u0 com.android.calculator2/.Calculator t322}}} 

    mAppToken=AppWindowToken{29a4bed4 token=Token{2f850b1a ActivityRecord{eefe5c5 u0 com.android.calculator2/.Calculator t322}}} 

    WindowStateAnimator{3e160d22 com.android.calculator2/com.android.calculator2.Calculator}: 

     mSurface=Surface(name=com.android.calculator2/com.android.calculator2.Calculator) 

    mCurrentFocus=Window{39ced4b1 u0 com.android.calculator2/com.android.calculator2.Calculator} 

    mFocusedApp=AppWindowToken{29a4bed4 token=Token{2f850b1a ActivityRecord{eefe5c5 u0 com.android.calculator2/.Calculator t322}}} 

parte principal es, Primera Línea:

Window #7 Window{39ced4b1 u0 com.android.calculator2/com.android.calculator2.Calculator}:

Primera parte de la salida es el nombre del paquete:

com.android.calculator2

Segunda parte de la salida (que es después de /) puede ser dos cosas, en nuestro caso el:

com.android.calculator2.Calculator

  1. <PKg name>.<activity name> = <com.android.calculator2>.<Calculator>

    por lo .Calculator es nuestra actividad

  2. Si la segunda parte es completamente diferente del nombre del paquete y no parece contener el nombre del paquete que estaba antes e / salida, luego toda la segunda parte se puede utilizar como actividad principal.

+0

Gracias, funciona para mí – UserSharma

-1

También se puede utilizar para los registros DDMS LogCat donde acaba dando busca del nombre de la aplicación que va a toda la información, pero hay que seleccionar la información en lugar de opciones detallados u otros. mira esta imagen debajo

enter image description here

0

1) Iniciar el cliente Appium. La ventana que se muestra a continuación mostrará, una vez que haya iniciado el cliente de Appium. 2) Haga clic en el icono de Android marcado arriba para abrir la configuración.

3) Marque la casilla de verificación Ruta de la aplicación.

4) Haga clic en el botón Elegir para localizar su archivo apk, en este caso lo he dado Amazon apk. enter image description here enter image description here

6

Desde Android 7.0 puede utilizar adb shell cmd package resolve-activity comando para obtener la actividad por defecto de una aplicación instalada como esto:

adb shell "cmd package resolve-activity --brief com.google.android.calculator | tail -n 1" 
com.google.android.calculator/com.android.calculator2.Calculator 
Cuestiones relacionadas