Lea el nombre del paquete de un APK Android

Necesito obtener el nombre del paquete de un APK para Android. He intentado descomprimir el 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 APK?

16 Solutions collect form web for “Lea el nombre del paquete de un APK Android”

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

Puede instalar el apk en su teléfono, luego

Conecte usando adb, puede iniciar shell de adb y ejecutar pm list packages -f, que muestra el nombre del paquete para cada apk instalado.

Esto se toma desde Buscar nombre de paquete para aplicaciones de Android para usar Propósito de lanzar Aplicación de mercado desde la web

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

 package manifest $xxx.xxxxxxx.xxxxxxx | 

Donde xxx.xxxxxxx.xxxxxxx es el nombre del paquete, sólo escrito con un espacio después de cada carácter.

Es una manera útil cuando no tienes ninguna herramienta específica instalada.

El siguiente script de 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 de la siguiente manera:

 apk_package.sh /path/to/my.apk 

Si está buscando en google play y quiere saber su nombre de paquete, entonces usted puede mirar en la barra de url o dirección. Usted recibirá 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 

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 el appt command (Android Asset Packaging Tool), lea esta https://stackoverflow.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 sólo la línea con el package: name info, use findstr

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

Espero que ayudar a otro usuario de Windows!

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

Otra solución es usar la lista aapt y usar sed para analizar a través de eso:

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

Una respuesta programática

Si necesita hacerlo mediante programación, es un poco más complicado que simplemente obtener la respuesta en su cerebro. Tengo un script que utilizo para firmar todas nuestras aplicaciones, pero cada una utiliza una clave diferente. Aquí hay dos maneras de obtener sólo el nombre del paquete como salida para que pueda ponerlo en una variable o hacer lo que sea necesario con él.

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

Requisitos

aapt – Android herramienta de embalaje de activos, parte de las herramientas SDK descarga

Solución 1

Utilizando awk especificar ' como el separador de campos, busque una línea con el package: name= , e imprima sólo 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 generar 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' 

Tenemos compromisos de los desarrolladores para mantener este formato.

Solución 2

Utilizando awk especificar " como el separador de campos, busque una línea con package= , e imprima sólo 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 se basa en aapt a package= salida package= sólo en el Android Manifest: sección de la salida. Tenemos compromisos de los desarrolladores para mantener este formato.

Solución 3

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

Este sería el mejor método, pero el AndroidManifest.xml es un archivo binario y todas las respuestas SO que veo para convertirlo en texto no funcionan. (El uso de apktool d lugar de un unzip simple se supone que debe hacer esto por usted, pero no lo hace.) Por favor, comente si tiene una solución a este problema

Creo que la mejor y más simple forma de extraer sólo 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 APK
  2. Grep "paquete" para mantener sólo la línea sobre la información del paquete
  3. Haga que sed sustituya toda la línea por el nombre del paquete utilizando sólo el siguiente regex: package: name='([a-z0-9.]*)'.* Y reemplazando con el primer (y único) grupo coincidente.

Puede instalar Package_Name_Viewer.apk en su emulador y, a continuación, puede ver el nombre del paquete de toda la aplicación instalada en su emulador.

También intenté la cosa de-compilación, trabaja pero encontré recientemente 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 quieres, la información del paquete, la información de la actividad.

Para usar esto en secuencias de comandos por lotes es práctico que el script devuelva sólo el nombre del paquete (por ejemplo, para desinstalar una aplicación cuando tenga 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 esencia

Así que usted podría escribir:

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

Puede extraer AndroidManifest.xml del APK, quitar todos los bytes NULL, omitir todo hasta después de la cadena 'manifest', y luego está en un byte de longitud seguido por el nombre del paquete (y lo que viene después). Para la tarea difícil uso 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 utilizar cualquier otra herramienta para hacer el filtrado.

Hay una manera muy simple si tienes tu APK allready en tu Smartphone. Solo usa una de estas APPs:

Aplicaciones de visor de nombre de paquete

Aapt lista -a "path_to_apk"

Te recomiendo que la guarde en un .txt, porque puede ser muy larga. Asi que:

Aapt list -a "path_to_apk"> archivo.txt

A continuación, vea el archivo.txt en su directorio actual.

  • Android Studio instala un APK para cada módulo
  • Android Apk decompilación parece fácil
  • Error: archivos duplicados durante el envasado de APK
  • Android - Descargar e instalar el archivo apk en Webview
  • Tengo videos e imágenes con un tamaño total de aproximadamente 500 MB. ¿Cómo puedo administrar TI?
  • "¿Cómo están" las aplicaciones de Android (Facebook, etc.) instaladas en un teléfono Android?
  • Cómo generar apk archivo mediante programación a través de código java
  • ¿Cómo comprobar si apk está alineado con zip?
  • No se pudo cargar (encontrar) la biblioteca j2v8_android_x86
  • Apksigner no acepta la contraseña
  • Android - ¿Qué sucede cuando caduca una clave de firma?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.