¿Cómo puedo obtener un archivo apk desde un dispositivo Android?


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

Author: Doorknob, 2010-10-27

19 answers

Use adb. Con adb pull puede copiar archivos de su dispositivo a su sistema, cuando el dispositivo está conectado con USB.

Por supuesto, también necesita los permisos adecuados para acceder al directorio en el que se encuentra su archivo. Si no, primero tendrá que rootear el dispositivo.


Si encuentras que muchos de los APK se llaman "base.apk "también puede utilizar este comando de una línea para tirar de todos los APK de un teléfono se puede acceder al cambiar el nombre de cualquier" base.apk" nombres para el paquete nombre. Esto también soluciona el problema de directorio no encontrado para las rutas de APK con caracteres aparentemente aleatorios después del nombre:

for i in $(adb shell pm list packages | awk -F':' '{print $2}'); do adb pull "$(adb shell pm path $i | awk -F':' '{print $2}')"; mv base.apk $i.apk 2&> /dev/null ;done

Si obtiene "adb: error: failed to stat remote object", esto indica que no tiene los permisos necesarios. Ejecuté esto en un Moto Z2 NO rooteado y pude descargar TODOS los APK que no desinstalé (ver más abajo) excepto youtube.

adb shell pm uninstall --user 0 com.android.cellbroadcastreceiver   <--- kills presidential alert app!

(para ver usuarios ejecute adb shell pm list users) Esta es una forma de eliminar / desinstalar (no desde el teléfono, ya que vuelve con restablecimiento de fábrica) casi CUALQUIER aplicación SIN root INCLUYENDO aplicaciones del sistema (pista de la aplicación de actualización molesta que actualiza su línea telefónica o no se puede encontrar grepping para "ccc")

 58
Author: Maurits Rijk,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-10-05 08:44:06

Ninguna de estas sugerencias funcionó para mí, porque Android estaba agregando un número de secuencia al nombre del paquete para producir el nombre final del archivo APK (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 arraigado :

1) Determinar el nombre del paquete de la aplicación, por ejemplo, " com.ejemplo.someapp". Omita este paso si ya conoces el nombre del paquete.

adb shell pm list packages

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

2) Obtenga el nombre completo de la ruta del archivo APK para el paquete deseado.

adb shell pm path com.example.someapp

La salida se verá algo como esto: paquete:/data/app/com.ejemplo.someapp-2.apk

3) Tire del archivo APK desde el dispositivo Android a la caja de desarrollo.

adb pull /data/app/com.example.someapp-2.apk path/to/desired/destination
 1256
Author: Yojimbo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-07-07 21:54:48

No se requiere raíz:

Este código obtendrá la 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 tire de ese paquete usando el siguiente código:

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

Si ejecutó por encima de cmd en C:>\ , entonces encontrará ese paquete allí.

 96
Author: Faris Al-Abed,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-08-30 06:45:50

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

Para enumerar las aplicaciones que tienes hasta ahora.

adb shell pm list packages

Luego puede 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 va a crear un archivo llamado backup.ap, pero todavía no puedo 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

 46
Author: Paulo Miguel Almeida,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-10-19 20:05:47
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)
 12
Author: RVR,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-02-13 11:57:19

Completando la respuesta de @Yojimbo, esto es lo que hice (solo Linux/Mac, no funcionará fuera de la caja en Windows... tal vez en el shell bash 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 fea bash, pero funciona:)

EDITAR: Ya no funciona en AndroidM: todos los archivos se llaman "base.apk " bajo otro dir. Debería ser" trivial " de arreglar.

 7
Author: elcuco,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-02-06 21:19:59

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

Desde entonces, usted está hablando de sus aplicaciones instaladas, seguir adelante y buscar en el directorio /data/app de su sistema de archivos Android. Usted encontrará el APK está allí.

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

 5
Author: aditya.gupta,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-05-30 11:39:27

En 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
 5
Author: Pedro Rodrigues,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-04-16 21:34:14

Un liner que funciona para todas las versiones de Android:

adb shell 'cat `pm path com.example.name | cut -d':' -f2`' > app.apk
 5
Author: Vitaly Dyatlov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-06-10 07:58:08

Si sabes (o si puedes "adivinar") la ruta hacia .apk (parece tener el formato /data/app/com.example.someapp-{1,2,..}.apk, entonces puedes copiarlo desde /data/app también. Esto funcionó incluso en mi no arraigado, stock teléfono Android.

Simplemente use una aplicación Emuladora 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.). La última parte puede ser técnicamente opcional, pero hace su vida mucho más fácil cuando tratando de hacer algo con el archivo .apk.

 4
Author: m01,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-04-25 07:57:47

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

 4
Author: SamG,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-12-02 13:53:30

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 requiere root o nada para funcionar. Después de haberlo instalado, ejecútelo. Allí verá una lista de aplicaciones que están en su dispositivo, que incluyen las aplicaciones que ha instalado más tarde, junto con las aplicaciones del sistema. Mantenga pulsada cualquier aplicación que desee extraer (puede seleccionar varias o todas las aplicaciones a la vez), y haga clic en la opción extraer que ve en la parte superior. También tendrá la opción de compartir a través de Bluetooth o mensajería. Has terminado, verás las aplicaciones extraídas como AppName_AppPackage_AppVersionName_AppVersionCode.apk, que se guardará en la ruta /sdcard/ExtractedApks/ por defecto.

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

 2
Author: Pramod Mahato,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-09-16 10:11:08

Todas estas respuestas requieren varios pasos para cada archivo apk recuperado del dispositivo. 1. determinar el nombre del paquete, 2. encuentra el archivo, y 3. descárgalo. Construí un sencillo apk_grabber python script para hacer esto para cualquier aplicación que coincida con una expresión regular dada, y luego descompila esos apk en archivos jar.

 2
Author: Jeff Brateman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-04-17 21:58:26

Pruebe este comando one liner 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 cambiar el nombre de todos los apk a sus nombres de paquete para resolver el problema con script de elcuco, es decir, el mismo archivo base.apk se sobrescribe en Android 6.0 "Marshmallow" y por encima.

Tenga en cuenta que este comando hace copias de seguridad de aplicaciones solo 3rd partido, coz No veo el punto de copia de seguridad de aplicaciones integradas. Pero si también desea hacer copias de seguridad de las aplicaciones del sistema, simplemente omita -3 opción.

 2
Author: HEXcube,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-01-03 17:08:54

No he usado código para extraer .archivo apk desde el móvil, pero he estado utilizando software para extraer .el archivo apk del móvil y el software que he utilizado se encuentran a continuación con el enlace de Google Play:

  1. ES Explorador de archivos Administrador de archivos
  2. ASTRO Cloud & File Manager 3.Cable de Datos de software

Espero que Te ayude.

 1
Author: surhidamatya,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-08-14 11:39:09

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

Solo usted 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;)

 1
Author: user3350906,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-02-23 10:11:33

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 respecto a la versión de Pedro:

  1. El enfoque original no funcionó para mí en Android 7: adb pull siguió quejándose de no such file or directory mientras que adb shell podía acceder al archivo. Por lo tanto, utilicé un enfoque diferente, con archivo temporal.
  2. Cuando se inicia sin argumentos, mi script solo listará todos los paquetes disponibles. Cuando se proporciona el nombre parcial del paquete, 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\""
 0
Author: MarSoft,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-10-12 14:48:49

El más simple es: Instale la aplicación" SHAREit " en el teléfono. Ahora instale la aplicación SHAREit en PC u otro teléfono. Ahora desde el teléfono, donde está instalada la aplicación, abrir SHAREit y enviar. En otro teléfono o PC, abra SHAREit y reciba.

 0
Author: Sirsendu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-06-06 12:54:40

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

Esto es simple hack

Descarga la aplicación App Share/Send Pro desde google play store. Seleccione la aplicación que desea enviar y el método enviar aplicación.

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

 -1
Author: Saahithyan Vigneswaran,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-06-06 12:49:16