Necesito obtener el nombre del paquete de un APK de Android. He intentado descomprimir el APK y leer el contenido AndroidManifest.xml
, pero parece que no es un archivo de texto.
¿Cómo puedo extraer el nombre del paquete del APK?
aapt dump badging <path-to-apk> | grep package:\ name
|
, presionar enter y luego simplemente buscar en la salida el parámetro deseado. Solo recuerda queaapt
debe estar en tu caminoaapt
El comando se encuentra debajoAndroid\SDK\build-tools\version
. en el comando de Windows puede seraapt dump badging <path-to-apk> | findstr -i "package: name"
oaapt dump badging <path-to-apk>
Puede instalar el apk en su teléfono, luego
Esto se tomó del nombre del paquete Buscar para que las aplicaciones de Android utilicen Intención para iniciar la aplicación Market desde la web
fuente
su
comando primero.pm list packages -f | grep term-to-search-for
Basado en la respuesta @hackbod ... pero relacionado con Windows.
aapt
El comando se encuentra enAndroid\SDK\build-tools\version
. Si necesita más información sobre qué esappt command
(Herramienta de empaquetado de activos de Android), lea este https://stackoverflow.com/a/28234956/812915El
dump
subcomando deaapt
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
package: name
información, usefindstr
aapt dump badging <path-to-apk> | findstr -n "package: name" | findstr "1:"
Espero que ayude a otros usuarios de Windows!
fuente
Si está buscando en Google Play y quiere saber el nombre del paquete, puede consultar la URL o la barra de direcciones. Obtendrá el nombre del paquete. Aquí
com.landshark.yaum
está el nombre del paquetefuente
Si abre AndroidManifest.xml con MS Notepad, busque la frase
package
y encontrará lo siguiente:donde xxx.xxxxxxx.xxxxxxx es el nombre de su paquete, simplemente escrito con un espacio después de cada carácter.
Es útil cuando no tienes ninguna herramienta específica instalada.
fuente
El siguiente script bash mostrará el nombre del paquete y el nombre de la actividad principal:
apk_package.sh
ejecutarlo así:
fuente
Una respuesta programática
Si necesita hacer esto 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 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.
Salida de ejemplo:
com.example.appname
(y nada más)Requisitos
aapt
- Android Asset Packaging Tool, parte de la descarga de SDK ToolsSolución 1
Usando
awk
especificar'
como el separador de campo, busque una línea conpackage: name=
e imprima solo el segundo "campo" en la línea: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:
No tenemos compromisos de los desarrolladores para mantener este formato.
Solución 2
Usando
awk
especificar"
como el separador de campo, busque una línea conpackage=
e imprima solo el segundo "campo" en la línea:Una debilidad de este método es que se basa en aapt para generar
package=
solo en laAndroid Manifest:
sección 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 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 supone que usarlo en
apktool d
lugar de un simpleunzip
lo hace por usted, pero no es así). Por favor comente si tiene una solución a este problemafuente
Una solución simple sería Open Android Studio -> Build -> Analyze Apk ... navegue y seleccione el APK ahora puede encontrar el nombre del paquete y prácticamente puede leerlo.
fuente
Si solo desea conocer el nombre del paquete, ejecute adb logcat, inicie la actividad que desee, obtendrá una pista sobre el nombre del paquete.
fuente
Otra solución es usar una lista de apt y usar sed para analizar eso:
aapt list -a $PATH_TO_YOUR_APK | sed -n "/^Package Group[^s]/s/.*name=//p"
fuente
A:package="com.example.appname"
de laAndroid Manifest:
sección siaapt list -a
Hay una manera muy simple si ya tienes tu APK en tu teléfono inteligente. Simplemente use una de estas aplicaciones:
Aplicaciones de visualización de nombres de paquetes
fuente
Un método muy simple es usar apkanalyzer.
fuente
Creo que la mejor y más simple forma de extraer solo el nombre del paquete en Linux es
Explicación:
package: name='([a-z0-9.]*)'.*
y reemplazando con el primer (y único) grupo coincidente.fuente
Puede extraer AndroidManifest.xml del APK, eliminar todos los bytes NULL, omitir todo hasta después del 'manifiesto' de la cadena, y luego está en un byte de longitud seguido del 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í:
Por supuesto, puede usar cualquier otra herramienta para hacer el filtrado.
fuente
Si no tiene instalado el SDK de Android, como en algunos escenarios de prueba, puede obtener el nombre del paquete utilizando el siguiente método bash:
Probado en una mac. 'cadenas' y 'descomprimir' son estándar en la mayoría de los Linux, por lo que también deberían funcionar en Linux.
fuente
puede instalar Package_Name_Viewer.apk en su emulador y luego puede ver el nombre del paquete de todas las aplicaciones instaladas en su emulador.
fuente
También probé lo de la compilación, funciona, pero recientemente encontré la forma más fácil:
Descargue e instale Appium desde el sitio web de Appium
Abra Appium-> configuración de Android, elija el archivo apk objetivo. Y luego obtienes todo lo que quieres, la información del paquete, la información de la actividad.
fuente
Para usar esto en las secuencias de comandos por lotes, es útil que la secuencia de comandos devuelva solo el nombre del paquete (por ejemplo, para desinstalar una aplicación cuando tiene el APK).
Aquí está el script que uso:
disponible en gist
Entonces podrías escribir:
desinstalar adb `./getPackageName.sh file.apk`
fuente
Para Windows lo siguiente funcionó para mí:
Nota
Edite las rutas de adb, aapt, APKPath de acuerdo con las rutas de adb, aapt y la ubicación de apk en su sistema.
Trabajando:
%adb% install %apk%
instala la aplicación si el dispositivo está conectado.%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 apk y se almacena en un archivo temp.txt en la misma ubicación que la de la apk.extracts the package name and assigns to
pkgName` variable%adb% shell monkey -p %pkgName% -c android.intent.category.LAUNCHER 1
lanza la aplicación.En esencia, el código anterior instala la aplicación desde la ubicación dada en el escritorio "Desktop \ APK \ Instant_Instal \" en el dispositivo e inicia la aplicación.
fuente
Como no pude encontrar el nombre del paquete en el archivo .apk con el editor (como se sugirió anteriormente), he verificado las funciones en la aplicación "ES Datei Explorer" / "ES File Explorer" (versión gratuita) que yo ya lo había instalado. En esta herramienta, el nombre del paquete se muestra correctamente.
Como creo que no debería faltar un buen explorador de archivos en un teléfono, sugiero usar esta herramienta (si ya ha instalado el apk en un dispositivo móvil y tiene que conocer el nombre del paquete).
fuente
Como se menciona en la documentación de Android que AAPT ha quedado en desuso , obtener el nombre del paquete con el comando AAPT2 en Linux es el siguiente:
./aapt2 dump packagename <path_to_apk>
Como estoy usando una versión anterior de Gradle build, tuve que descargar una versión más nueva de AAPT2 como se menciona aquí:
Descargar AAPT2 de Google Maven
Al usar las herramientas de compilación en mi sdk - 25.0.3, 26.0.1 y 27.0.3, la ejecución del comando aapt2 muestra un error: No se puede abrir 'packagename': No existe tal archivo o directorio. Es por eso que elegí las versiones más nuevas de AAPT2.
Usé 3.3.0-5013011 para Linux.
fuente
Puede usar
Analyze APK...
desde el menú Generar en Android Studio, mostrará el nombre del paquete en la parte superior de la nueva ventana.fuente
Te recomiendo que lo guardes en un archivo .txt, porque puede ser muy largo. Entonces:
Luego vea el archivo.txt en su directorio actual.
fuente