tutorial studio programacion paquete nombre móviles fuente español ejemplos desarrollo curso codigo cambiar aplicaciones android apk

studio - Lea el nombre del paquete de una APK de Android



ejemplos android studio codigo fuente (17)

aapt list -a "path_to_apk"

Te recomiendo que lo guardes en .txt, porque puede ser muy largo. Asi que:

aapt list -a "path_to_apk"> file.txt

Luego vea el archivo.txt en su directorio actual.

Necesito obtener el nombre del paquete de una APK de Android. Intenté descomprimir la APK y leer el contenido de AndroidManifest.xml , pero parece que no es un archivo de texto.

¿Cómo puedo extraer el nombre del paquete del APK?


Una respuesta programática

Si necesita hacer esto programáticamente, es un poco más complicado que solo obtener la respuesta en su cerebro. Tengo un script que uso para firmar todas nuestras aplicaciones, pero cada una usa una clave diferente. Aquí hay 2 formas de obtener solo el Nombre del paquete como salida para que pueda ponerlo en una variable o hacer lo que necesite con él.

Ejemplo de salida: com.example.appname (y nada más)

Requisitos

aapt - Android Asset Packaging Tool, parte de la descarga de SDK Tools

Solución 1

Usando awk especifique '' como Separador de campo, busque una línea con package: name= , e imprima solo el segundo "campo" en la línea:

aapt dump badging /path/to/file.apk | awk -v FS="''" ''/package: name=/{print $2}''

Una debilidad de este método es que se basa en aapt para mostrar los campos de información del paquete en el mismo orden:

package: name=''com.example.appname'' versionCode=''3461'' versionName=''2.2.4'' platformBuildVersionName=''4.2.2-1425461''

No tenemos compromisos de los desarrolladores para mantener este formato.

Solución 2

Usando awk especifique " como Separador de campo, busque una línea con package= e imprima solo el segundo" campo "en la línea:

aapt list -a /path/to/file.apk | awk -v FS=''"'' ''/package=/{print $2}''

Una debilidad de este método es que depende de aapt para generar package= solo en la sección Android Manifest: de la salida. No tenemos compromisos de los desarrolladores para mantener este formato.

Solución 3

Expanda el archivo apk con apktool d y lea el archivo AndroidManifest.xml.

Este sería el mejor método, pero AndroidManifest.xml es un archivo binario y todas las respuestas SO que veo para convertirlo a texto no funcionan. (Se apktool d uso de apktool d lugar de un simple unzip lo hace por usted, pero no es así). Comente si tiene alguna solución a este problema.


Basado en la respuesta @hackbod ... pero relacionado con Windows.

aapt comando aapt se encuentra en Android/SDK/build-tools/version . Si necesita más información sobre qué es el appt command (Herramienta de empaquetado de activos de Android) lea esto https://.com/a/28234956/812915

El subcomando dump de aapt se usa para mostrar los valores de elementos individuales o partes de un paquete:

aapt dump badging <path-to-apk>

Si desea ver solo la línea con el package: name información del package: name , use findstr

aapt dump badging <path-to-apk> | findstr -n "package: name" | findstr "1:"

Espero que ayude a otros usuarios de Windows!


Creo que la mejor y más simple forma de extraer solo el nombre del paquete en Linux es

aapt dump badging <APK_path> | grep package | sed -r "s/package: name=''([a-z0-9.]*)''.*//1/"

Explicación:

  1. AAPT extrae la información del APK
  2. Grep "paquete" para mantener solo la línea sobre la información del paquete
  3. Make sed reemplaza toda la línea con el nombre del paquete solo con la siguiente expresión regular: package: name=''([a-z0-9.]*)''.* Y reemplazando con el primer (y único) grupo coincidente.

El siguiente script bash mostrará el nombre del paquete y el nombre de la actividad principal:

apk_package.sh

package=$(aapt dump badging "$*" | awk ''/package/{gsub("name=|''"''"''",""); print $2}'') activity=$(aapt dump badging "$*" | awk ''/activity/{gsub("name=|''"''"''",""); print $2}'') echo echo " file : $1" echo "package : $package" echo "activity: $activity"

ejecútelo así:

apk_package.sh /path/to/my.apk



Otra solución es usar una lista aapt y usar sed para analizar eso:

aapt list -a $PATH_TO_YOUR_APK | sed -n "/^Package Group[^s]/s/.*name=//p"


Para Windows, lo siguiente funcionó para mí:

:: // Initializing variables SET adb="C:/Users/<User name>/AppData/Local/Android/Sdk/platform-tools/adb" SET aapt="C:/Users/<User name>/AppData/Local/Android/Sdk/build-tools/22.0.0/aapt" SET APKPath=C:/Users/<User name>/Desktop/APK/Instant_Instal/ CD %APKPath% :: // Searching for apk file and storing it FOR /F "delims=" %%f IN (''dir /S /B *.apk'') DO SET "APKFullPath=%%f" SET apk=%APKFullPath% :: // Command adb install apk, run apk %adb% install %apk% :: // Fetching package name from apk %aapt% dump badging %APKFullPath% | FIND "package: name=" > temp.txt FOR /F "tokens=2 delims=''" %%s IN (temp.txt) DO SET pkgName=%%s del temp.txt :: // Launching apk %adb% shell monkey -p %pkgName% -c android.intent.category.LAUNCHER 1 pause

Nota

Edite las rutas de adb, aapt, APKPath de acuerdo con las rutas de acceso de adb, aapt y la ubicación apk de su sistema.

Trabajando:

  • Aquí he agregado el apk en una carpeta en el escritorio "/ Desktop / APK / Instant_Instal /".
  • El comando %adb% install %apk% instala la aplicación si el dispositivo está conectado.
  • Este %aapt% dump badging %APKFullPath% | FIND "package: name=" > temp.txt %aapt% dump badging %APKFullPath% | FIND "package: name=" > temp.txt obtiene el nombre del paquete y algunos otros detalles como la versión, etc. de la aplicación y las almacena en un archivo temp.txt en la misma ubicación que la de la aplicación.
  • FOR / F "tokens = 2 delims = ''" %% s IN (temp.txt) DO SET pkgName = %% s extracts the package name and assigns to variable pkgName`
  • Finalmente %adb% shell monkey -p %pkgName% -c android.intent.category.LAUNCHER 1 inicia la aplicación.

Básicamente, el código anterior instala el apk desde una ubicación determinada en el escritorio "Desktop / APK / Instant_Instal /" en el dispositivo y lo inicia.


Para utilizar esto en scripts por lotes, es útil que el script devuelva solo el nombre del paquete (por ejemplo, para desinstalar una aplicación cuando tienes el APK).

Aquí está el script que uso:

# extract the android package id from a built apk file # usage ./getPackageName.sh <path-to-apk> line=`aapt dump badging "$1" | grep package:/ name` # above returns: # package: name=''com.calvium.myapp'' versionCode=''1'' versionName=''1.0'' if [[ $line =~ name=/'(.+)/'/ versionCode ]]; then echo ${BASH_REMATCH[1]} else echo "Failed to find package name" exit 1 fi

disponible en la esencia

Entonces podrías escribir:

adb uninstall `./getPackageName.sh file.apk`


Puede extraer AndroidManifest.xml del APK, eliminar todos los bytes NULL, omitir todo hasta después de la cadena ''manifest'', y luego se encuentra en un byte de longitud seguido del nombre del paquete (y lo que viene después). Para la tarea difícil, utilizo la gran herramienta GEMA , por lo que el comando se ve así:

7z e -so MyApp.apk AndroidManifest.xml | gema ''/x00='' | gema -match ''manifest<U1><U>=@substring{0;@char-int{$1};$2}''

Por supuesto, puede usar cualquier otra herramienta para hacer el filtrado.



Si abre AndroidManifest.xml con MS Notepad, busque el package frases y encontrará lo siguiente:

package manifest $xxx.xxxxxxx.xxxxxxx |

donde xxx.xxxxxxx.xxxxxxx es el nombre de su paquete, acaba de escribir con un espacio después de cada carácter.

Es útil cuando no tienes herramientas específicas instaladas.


Si estás buscando en google play y quieres saber su nombre de paquete, entonces puedes mirar la url o la barra de direcciones. Obtendrás el nombre del paquete. Aquí com.landshark.yaum es el nombre del paquete

https://play.google.com/store/apps/details?id=com.landshark.yaum&feature=search_result#?t=W251bGwsMSwyLDEsImNvbS5sYW5kc2hhcmsueWF1bSJd


Si solo quiere saber el nombre del paquete, ejecute adb logcat, inicie la actividad que desea, obtendrá una pista sobre el nombre del paquete.


También probé la descomplicación, funciona, pero recientemente encontré la manera más fácil:

  1. Descargue e instale Appium desde el sitio web de Appium

  2. Abra la configuración de Appium-> Android, elija el archivo apk de destino. Y luego obtienes todo lo que deseas, la información del paquete, la información de la actividad.


puedes instalar Package_Name_Viewer.apk en tu emulador y luego puedes ver el nombre del paquete de todas las aplicaciones instaladas en tu emulador.


aapt dump badging <path-to-apk> | grep package:/ name