¿Cómo obtengo un archivo apk de un dispositivo Android?

¿Cómo obtengo el archivo apk de un dispositivo Android? ¿O cómo transfiero el archivo apk del dispositivo al sistema?

Use adb . Con Adb Pull puedes copiar archivos de tu dispositivo a tu sistema cuando el dispositivo está conectado con USB.

Por supuesto, también necesita los permisos correctos para acceder al directorio en el que se encuentra su archivo. De lo contrario, primero deberá rootear el dispositivo.

Ninguna de estas sugerencias funcionó para mí, porque Android estaba agregando un número de secuencia al nombre del paquete para producir el nombre del archivo APK final (esto puede variar con la versión del sistema operativo Android). La siguiente secuencia de comandos es lo que funcionó para mí en un dispositivo no rooteado :

1) Determine el nombre del paquete de la aplicación, por ejemplo, “com.example.someapp”. Omita este paso si ya conoce el nombre del paquete.

 adb shell pm list packages 

Mire a través de la lista de nombres de paquetes e intente encontrar una coincidencia entre la aplicación en cuestión y el nombre del paquete. Esto suele ser fácil, pero tenga en cuenta que el nombre del paquete puede no estar relacionado con el nombre de la aplicación. Si no puede reconocer la aplicación de la lista de nombres de paquetes, intente buscar la aplicación en Google Play con un navegador. La URL de una aplicación en Google Play contiene el nombre del paquete.

2) Obtenga la ruta completa del archivo APK para el paquete deseado.

 adb shell pm path com.example.someapp 

La salida se verá más o menos así: paquete: /data/app/com.example.someapp-2.apk

3) Extraiga el archivo APK del dispositivo Android al cuadro de desarrollo.

 adb pull /data/app/com.example.someapp-2.apk path/to/desired/destination 

No se requiere root

Este código obtendrá una ruta de paquetes de terceros con el nombre para que pueda identificar fácilmente su APK

 adb shell pm list packages -f -3 

la salida será

paquete: /data/app/XX.XX.XX.apk=YY.YY.YY

ahora extraiga ese paquete usando el siguiente código:

 adb pull /data/app/XX.XX.XX.apk 

si ejecutó arriba cmd en C:>\ , entonces encontrará ese paquete allí.

He visto muchas soluciones a este problema, o tienes que rootear tu teléfono o tienes que instalar una aplicación. Luego, después de mucho google, obtuve esta solución para teléfonos no rooteados / rooteados.

Para enumerar qué aplicaciones tienes hasta ahora.

 adb shell pm list packages 

Entonces puedes seleccionar una aplicación, por ejemplo, twitter

 adb backup -apk com.twitter.android 

Una cosa importante aquí es no configurar una contraseña para cifrar su copia de seguridad

Esto creará un archivo llamado backup.ap, pero aún no puede abrirlo. Para esto tienes que extraerlo de nuevo pero usando el comando dd.

 dd if=backup.ab bs=24 skip=1 | openssl zlib -d > backup.tar 

Después de esto, todo lo que tienes que hacer es extraer el contenido de alquitrán y listo.

Espero que funcione para ustedes

 C:\Users\xyz>adb shell pm list packages -f | findstr whatsapp package:/data/app/com.whatsapp-1/base.apk=com.whatsapp C:\Users\xyz>adb pull /data/app/com.whatsapp-1/base.apk Desktop /data/app/com.whatsapp-1/base.apk: 1 f.... 13.8 MB/s (32803925 bytes in 2.269s) 

Completando la respuesta de @Yojimbo, esto es lo que hice (Linux / Mac solamente, no funcionará de la caja en Windows … quizás en el bash shell de git):

 for i in $(adb shell pm list packages -f -3 | cut -d= -f 1 | cut -d ":" -f 2); do adb pull $i; done 

Esto es feo, pero funciona 🙂

EDITAR: Ya no funciona en AndroidM: todos los archivos se llaman “base.apk” en otro directorio. Debería ser “trivial” para arreglar.

Como se dijo anteriormente, puede obtener la apk usando el comando pull en adb.

Como está hablando de sus aplicaciones instaladas, siga adelante y busque en el directorio / data / app de su sistema de archivos Android. Encontrarás los APK allí.

Luego use el comando adb – adb pull /data/data/appname.apk

En los sistemas Unix, puede probar esta función:

 function android_pull_apk() { if [ -z "$1" ]; then echo "You must pass a package to this function!" echo "Ex.: android_pull_apk \"com.android.contacts\"" return 1 fi if [ -z "$(adb shell pm list packages | grep $1)" ]; then echo "You are typed a invalid package!" return 1 fi apk_path="`adb shell pm path $1 | sed -e 's/package://g' | tr '\n' ' ' | tr -d '[:space:]'`" apk_name="`adb shell basename ${apk_path} | tr '\n' ' ' | tr -d '[:space:]'`" destination="$HOME/Documents/Android/APKs" mkdir -p "$destination" adb pull ${apk_path} ${destination} echo -e "\nAPK saved in \"$destination/$apk_name\"" } 
  • Ejemplo : android_pull_apk com.android.contacts
  • Nota : Para identificar el paquete: adb shell pm list packages

Si conoce (o si puede “adivinar”) la ruta a la .apk ( parece ser del formato /data/app/com.example.someapp-{1,2,..}.apk a, entonces también puedes copiarlo desde /data/app . Esto funcionó incluso en mi teléfono Android stock no rooteado.

Simplemente use una aplicación Emulador de Terminal (como esta ) y ejecute:

 # step 1: confirm path ls /data/app/com.example.someapp-1.apk # if it doesn't show up, try -2, -3. Note that globbing (using *) doesn't work here. # step 2: copy (make sure you adapt the path to match what you discovered above) cp /data/app/com.example.someapp-1.apk /mnt/sdcard/ 

Luego puede moverlo de la tarjeta SD a donde quiera (o adjuntarlo a un correo electrónico, etc.). El último bit puede ser técnicamente opcional, pero hace su vida mucho más fácil cuando intenta hacer algo con el archivo .apk .

Los procedimientos descritos aquí no funcionan para Android 7 (Nougat) [y posiblemente para Android 6, pero no puedo verificar]. No puede extraer los archivos .apk directamente bajo Nougat (a menos que esté en modo raíz, pero eso requiere un teléfono rooteado). Pero puede copiar la .apk en una ruta alternativa (digamos / sdcard / Download) en el teléfono usando adb shell, luego puede hacer una extracción de adb desde la ruta alternativa.

Un trazador de líneas que funciona para todas las versiones de Android:

 adb shell 'cat `pm path com.example.name | cut -d':' -f2`' > app.apk 

Así es como lo haces:

Descargue e instale APK Extractor en su dispositivo. Es gratis y es compatible en casi todos los dispositivos Android. Otro punto a favor es que ni siquiera necesita root o nada para funcionar. Después de que lo tenga instalado, ejecútelo. Allí verá una lista de aplicaciones que se encuentran en su dispositivo, que incluyen las aplicaciones que ha instalado más adelante, junto con las aplicaciones del sistema. Mantenga presionada cualquier aplicación que desee extraer (puede seleccionar varias o todas las aplicaciones a la vez) y haga clic en la opción de extracción que ve en la parte superior. También tendrá la opción de compartir a través de Bluetooth o mensajes. Ya terminaste, verás las aplicaciones extraídas como AppName_AppPackage_AppVersionName_AppVersionCode.apk, que se guardarán en la ruta / sdcard / ExtractedApks / de forma predeterminada.

Para una descripción detallada de cómo extraer archivos apk en android , visite: http://appslova.com/how-to-extract-apk-files-in-android/

Todas estas respuestas requieren varios pasos para cada archivo apk recuperado del dispositivo. 1. determinar el nombre del paquete, 2. encontrar el archivo, y 3. descargarlo. apk_grabber script python apk_grabber simple para hacer esto para cualquier aplicación que coincida con una expresión regular dada, y luego descomstack esos apk en archivos jar.

Pruebe este comando one line bash para hacer una copia de seguridad de todas sus aplicaciones:

 for package in $(adb shell pm list packages -3 | tr -d '\r' | sed 's/package://g'); do apk=$(adb shell pm path $package | tr -d '\r' | sed 's/package://g'); echo "Pulling $apk"; adb pull -p $apk "$package".apk; done 

Este comando se deriva del script de Firelord . Acabo de renombrar todos los apk a sus nombres de paquete para resolver el problema con el script de elcuco , es decir, el mismo archivo base.apk sobrescrito en Android 6.0 “Marshmallow” y más.

Tenga en cuenta que este comando solo realiza copias de seguridad de aplicaciones de terceros, porque no veo el punto de hacer una copia de seguridad de las aplicaciones integradas. Pero si también quieres hacer una copia de respaldo de las aplicaciones del sistema, solo omite la opción -3 .

No he usado el código para extraer el archivo .apk del móvil, pero he estado usando un software para extraer el archivo .apk del móvil y el software que he utilizado está debajo del enlace de google play:

  1. ES File Explorer File Manager
  2. ASTRO Cloud & File Manager 3. Cable de datos del software

Espero que te ayude.

¿Quieres una solución muy, muy cómoda de 1 minuto?

solo esta aplicación https://play.google.com/store/apps/details?id=com.cvinfo.filemanager (administrador de archivos inteligente de google play).

toque “aplicaciones”, elija una y toque “copia de seguridad”. terminará en su sistema de archivos en la carpeta app_backup 😉

Sin embargo, otro script bash (es decir, funcionará para la mayoría de los sistemas basados ​​en Unix). Basado en la respuesta de Pedro Rodrigues , pero es un poco más fácil de usar.

Mejoras sobre la versión de Pedro:

  1. El enfoque original no funcionó para mí en Android 7: adb pull dejaba de quejarse de que no such file or directory mientras adb shell podía acceder al archivo. Por lo tanto, utilicé un enfoque diferente, con un archivo temporal.
  2. Cuando se inicia sin argumentos, mi script solo mostrará todos los paquetes disponibles. Cuando se proporciona un nombre de paquete parcial, intentará adivinar el nombre completo del paquete. Se quejará si hay varias expansiones posibles.
  3. No codifico la ruta de destino; en su lugar, los APK se guardan en el directorio de trabajo actual.

Guarde esto en un archivo ejecutable:

 #!/bin/bash # Obtain APK file for given package from the device connected over ADB if [ -z "$1" ]; then echo "Available packages: " adb shell pm list packages | sed 's/^package://' echo "You must pass a package to this function!" echo "Ex.: android_pull_apk \"com.android.contacts\"" exit 1 fi fullname=$(adb shell pm list packages | sed 's/^package://' | grep $1) if [ -z "$fullname" ]; then echo "Could not find package matching $1" exit 1 fi if [ $(echo "$fullname" | wc -l) -ne 1 ]; then echo "Too many packages matched:" echo "$fullname" exit 1 fi echo "Will fetch APK for package $fullname" apk_path="`adb shell pm path $fullname | sed -e 's/package://g' | tr '\n' ' ' | tr -d '[:space:]'`" apk_name="`basename ${apk_path} | tr '\n' ' ' | tr -d '[:space:]'`" destination="${fullname}.apk" tmp=$(mktemp --dry-run --tmpdir=/sdcard --suffix=.apk) adb shell cp "${apk_path}" "$tmp" adb pull "$tmp" "$destination" adb shell rm "$tmp" [ $? -eq 0 ] && echo -e "\nAPK saved in \"$destination\"" 

El más sencillo es: Instalar la aplicación “ShareIt” en el teléfono. Ahora instala la aplicación shareIt en tu PC u otro teléfono. Ahora desde el teléfono, donde está instalada la aplicación, abra ShareIt y envíe. En otro teléfono o PC, abra ShareIt y reciba.

Esto ayudará a alguien que está buscando una respuesta no técnica

Esto es simple hack

Descargue la aplicación App Share/Send Pro de google play store. Seleccione la aplicación que desea enviar y la aplicación de envío de métodos.

Usualmente uso Bluetooth para enviar aplicaciones a mi pc u otro teléfono.