android - studio - play store
Obtener APK de la aplicaciĆ³n instalada (12)
- verifique la lista de apk instalados (el siguiente comando también muestra la ruta donde está instalado y el nombre del paquete). adb shell pm list packages -f
- utilice adb pull / package_path / package name / path_in_pc (ruta del paquete y nombre del paquete que se puede obtener desde el comando 1 anterior).
Estoy buscando una forma de extraer el archivo APK de una aplicación de Android instalada SIN permiso de root.
Pensé que esto era imposible, porque todos los archivos APK para aplicaciones que no sean del sistema se encuentran en / data / app, y para acceder a esta carpeta se necesita el permiso de root. Luego descubrí que hay numerosas aplicaciones en Google Play que parecen tener acceso a los archivos APK, incluso en dispositivos no rooteados.
¿Puede alguien decirme cómo es esto posible? ¿No hay aplicaciones de respaldo que respalden los archivos APK sin root?
Abra el Explorador de ES -> presione el botón de Menú en la esquina superior izquierda (tres franjas horizontales) -> en la sección de Bibliotecas, seleccione APLICACIONES.
Por lo tanto, obtienes la lista de todas las aplicaciones de usuario. Encuentra tu aplicación y selecciónela presionándola durante mucho tiempo. Luego presione "Más" en la esquina inferior derecha y elija "Enviar". Luego puede usar diferentes opciones, por ejemplo, puede elegir "ES Guardar en" para guardar el archivo .apk en su directorio personal o en cualquier otro lugar.
Android agrega un número de secuencia al nombre del paquete para producir el nombre del archivo APK final (es posible que esto varíe con la versión del sistema operativo Android). La siguiente secuencia de comandos funciona en un dispositivo no rooteado :
Obtenga la ruta completa del archivo APK para el paquete deseado.
adb shell pm path com.example.someapp
Esto da el resultado como:
package:/data/app/com.example.someapp-2.apk
.Tire del archivo APK del dispositivo Android al cuadro de desarrollo.
adb pull /data/app/com.example.someapp-2.apk
Cuando tienes instalado Eclipse para Android development:
- Use su dispositivo como dispositivo de depuración. En su teléfono: Configuración> Aplicaciones> Desarrollo y habilite la depuración de USB, consulte http://developer.android.com/tools/device.html
- En Eclipse, abra DDMS-window: Ventana> Abrir perspectiva> Otro ...> DDMS, consulte http://developer.android.com/tools/debugging/ddms.html
- Si no puedes ver tu dispositivo, intenta (re) instalar el controlador USB para tu dispositivo
- En el panel central, seleccione la pestaña "Explorador de archivos" y vaya a sistema> aplicación
- Ahora puede seleccionar uno o más archivos y luego hacer clic en el icono "Extraer un archivo del dispositivo" en la parte superior (a la derecha de las pestañas)
- Seleccione la carpeta de destino - tada!
El acceso / datos / aplicación es posible sin permiso de root; los permisos en ese directorio son rwxrwx - x. Ejecutar permiso en un directorio significa que puede acceder a él, sin embargo, la falta de permiso de lectura significa que no puede obtener una lista de sus contenidos, por lo que para poder acceder debe conocer el nombre del archivo al que accederá. El administrador de paquetes de Android le dirá el nombre de la aplicación almacenada para un paquete determinado.
Para hacer esto desde la línea de comando, use los adb shell pm list packages
de la lista adb shell pm list packages
para obtener la lista de paquetes instalados y encontrar el paquete deseado.
Con el nombre del paquete, podemos obtener el nombre real del archivo y la ubicación del archivo APK utilizando adb shell pm path your-package-name
.
Y conociendo el directorio completo, finalmente podemos extraer el adb usando adb pull full/directory/of/the.apk
Gracias a @tarn por señalar que bajo Lollipop, la ruta apk será /data/app/your-package-name-1/base.apk
En la versión Android de Nougat (7.0), ejecute adb shell pm list packages
para enumerar los paquetes instalados en el dispositivo. Luego ejecute adb shell pm path your-package-name
para mostrar la ruta de la apk. Después de usar adb, copie el paquete en Descargas adb shell cp /data/app/com.test-1/base.apk /storage/emulated/0/Download
. Luego, extraiga la aplicación de Descargas a su máquina ejecutando adb pull /storage/emulated/0/Download/base.apk
.
Encontré una manera de obtener el nombre del paquete del APK en un dispositivo no root. no es tan elegante, pero funciona todo el tiempo.
Paso 1 : en su dispositivo, abra el APK de destino
Paso 2 : en la ventana de cmd de PC, escribe estos comandos:
adb shell dumpsys activity a > dump.txt
debido a que la salida de este comando es numerosa, se recomienda redireccionar a un archivo.
Paso 3 : abre este archivo dump.txt con cualquier editor.
para dispositivo antes de Android 4.4:
el comienzo del archivo se vería así:
ACTIVITY MANAGER ACTIVITIES (dumpsys activity activities)
Main stack:
* TaskRecord{41aa9ed0 #4 A com.tencent.mm U 0}
numActivities=1 rootWasReset=true userId=0
affinity=com.tencent.mm
intent={act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10600000 cmp=com.tencent.mm/.ui.LauncherUI}
realActivity=com.tencent.mm/.ui.LauncherUI
askedCompatMode=false
lastThumbnail=null lastDescription=null
lastActiveTime=19915965 (inactive for 10s)
* Hist #9: ActivityRecord{41ba1a30 u0 com.tencent.mm/.ui.LauncherUI}
packageName=com.tencent.mm processName=com.tencent.mm
el nombre del paquete está en la 3ra línea, com.tencent.mm para este ejemplo.
para Android 4.4 y versiones posteriores:
la producción de Dumpsys ha cambiado un poco. Intente buscar "Pila n. ° 1", el nombre del paquete estaría muy cerca debajo de él.
Además, busque "baseDir", ¡encontrará la ruta completa del archivo apk!
Hay una aplicación en Google play store llamada "Apk extracter". Con esta aplicación, puedes obtener el archivo .apk de la aplicación instalada. ¡Disfruta y disfruta!
No necesita permisos ROOT para obtener la lista de aplicaciones instaladas.
Puedes hacerlo con android PackageManager.
A continuación se muestra un pequeño fragmento de código.
final PackageManager pm = getPackageManager();
//get a list of installed apps.
List<ApplicationInfo> packages = pm.getInstalledApplications(PackageManager.GET_META_DATA);
for (ApplicationInfo packageInfo : packages) {
Log.d(TAG, "Installed package :" + packageInfo.packageName);
Log.d(TAG, "Apk file path:" + packageInfo.sourceDir);
}
O puede obtener ''Bluetooth File Transfer'' de Google Play y configurar la carpeta de inicio en /system/
. Entonces puedes incluso ir a /
.
Tengo una solución, recientemente probé. pero encontré que cuando compartes aplicaciones con zapya, almacena extensiones .apk del mismo archivo en la carpeta de aplicaciones del directorio zapya en tu dispositivo donde puedes obtener el archivo apk de la aplicación instalada en tu dispositivo
Lista PackageManager.getInstalledApplications () le dará una lista de las aplicaciones instaladas, y ApplicationInfo.sourceDir es la ruta al archivo .apk.
// in oncreate
PackageManager pm = getPackageManager();
for (ApplicationInfo app : pm.getInstalledApplications(0)) {
Log.d("PackageList", "package: " + app.packageName + ", sourceDir: " + app.sourceDir);
}
//output is something like
D/PackageList(5010): package: com.example.xmlparse, sourceDir: /data/app /com.example.xmlparse-2.apk
D/PackageList(5010): package: com.examples.android.calendar, sourceDir: /data/app/com.examples.android.calendar-2.apk
D/PackageList(5010): package: com.facebook.katana, sourceDir: /data/app/com.facebook.katana-1.apk
D/PackageList(5010): package: com.facebook.samples.profilepicture, sourceDir: /data/app/com.facebook.samples.profilepicture-1.apk
D/PackageList(5010): package: com.facebook.samples.sessionlogin, sourceDir: /data/app/com.facebook.samples.sessionlogin-1.apk
D/PackageList(5010): package: com.fitworld, sourceDir: /data/app/com.fitworld-2.apk
D/PackageList(5010): package: com.flipkart.android, sourceDir: /data/app/com.flipkart.android-1.apk
D/PackageList(5010): package: com.fmm.dm, sourceDir: /system/app/FmmDM.apk
D/PackageList(5010): package: com.fmm.ds, sourceDir: /system/app/FmmDS.apk