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.
adb shell cat /proc/####/maps
No devuelve nada, desafortunadamente.