¿Puedo obtener el archivo .apk de una aplicación instalada?

9

He implementado el archivo .apk de mis aplicaciones en un dispositivo Qualcomm. Ahora, debido a mi mala suerte, me robaron mi computadora portátil en la que se desarrolló esta aplicación, por lo que no tengo el código de mi aplicación. Sin embargo, tengo el dispositivo en el que anteriormente había instalado mi aplicación.

Entonces mi pregunta es, ¿puedo obtener el archivo .apk de mis aplicaciones desde este dispositivo? en caso afirmativo, por favor dígame cómo conseguir eso.

Cualquier ayuda es apreciable.

Gracias Gaurav

GamDroid
fuente

Respuestas:

4

Si conoce el nombre del archivo instalado de la apk (que en algunos dispositivos puede ser myapp-1.apk o myapp-2.apk en lugar de solo myapp.apk) puede acceder directamente a eso como un usuario común, incluido el que adb ejecuta como en un dispositivo seguro, por lo que debería poder tirar de él. Pero si no conoce el nombre del apk instalado , no puede examinar el directorio / data / app sin ser root o aid_system.

Puede valer la pena adivinar el nombre instalado: pruébelo de forma simple, pruébelo con -1.apk y -2.apk, etc.

Puede haber otra forma: creo que lo siguiente funcionará en un dispositivo seguro, pero no tengo uno frente a mí en este momento para probarlo.

EDITAR: Nueva idea para determinar el nombre exacto del archivo APK

1) adb pull /data/system/packages.xml

2) Míralo a través de la entrada codePath de tu aplicación

3) adb tira eso

EDITAR: Con respecto a la vieja idea a continuación, Matthew descubrió que si bien los archivos por proceso en / proc tienen permiso de lectura en un dispositivo seguro, están vacíos cuando los lee un usuario no privilegiado que no sea el de su propietario. Entonces esto no funcionará.


1) Pon tu aplicación en funcionamiento. También necesitará una máquina con adb.

2) tipo

adb shell ps 

y busca la línea con el nombre de tu aplicación:

app_1     11959 907   112984 27580 ffffffff afd0c5bc S com.clevername.myapp

3) tome el número en la segunda columna, que es la identificación del proceso, y vea su mapa de memoria virtual, en este caso escribiría

adb shell cat /proc/11959/maps

y busque una línea donde haya asignado su propio archivo apk en la memoria

43e9c000-43ea3000 r--s 001f4000 b3:06 15393      /data/app/com.clevername.myapp-1.apk

4) Ese es el nombre de archivo que necesitarías para agregar

adb pull /data/app/com.clevername.myapp-1.apk .

El examen de los permisos de directorio en / proc sugiere que esto debería funcionar para un usuario sin privilegios, disculpe si no lo hace. Si está familiarizado con el uso de 'grep', puede usarlo para evitar escanear manualmente la salida.

Anexo: No estoy realmente seguro de cuál es la historia de las aplicaciones instaladas en la tarjeta SD.

Chris Stratton
fuente
Acabo de probar en mi dispositivo seguro; adb shell cat /proc/####/mapsNo devuelve nada, desafortunadamente.
Matthew leyó
@Matthew ... extraño, estoy simulando el caso seguro y veo que la mayoría de los archivos en proceso tienen un tamaño cero, pero son legibles. Antes solo había comprobado que tendrían permisos de lectura. Tal vez se haga anulando ellos en lugar de permisos para que las herramientas de lectura / proc no obtengan un flujo constante de errores de acceso. Oh, bueno ... adivinar la variante del nombre del apk instalado puede ser la mejor.
Chris Stratton
Mi nombre de archivo apk era loco e incontestable, pero el uso de packages.xml funcionó para descubrir el nombre real. :)
paleozogt