Si vous connaissez le nom de fichier installé de l'apk (qui sur certains appareils peut être myapp-1.apk ou myapp-2.apk plutôt que simplement myapp.apk), vous pouvez y accéder directement en tant qu'utilisateur ordinaire, y compris celui qui s'exécute comme adb sur un appareil sécurisé, vous devriez donc pouvoir le tirer. Mais si vous ne connaissez pas le nom apk installé , vous ne pouvez pas parcourir le répertoire / data / app sans être root ou aid_system.
Il vaut peut-être la peine de deviner le nom installé - essayez-le simplement, essayez-le avec -1.apk et -2.apk, etc.
Il peut y avoir une autre façon: je pense que ce qui suit fonctionnera sur un appareil sécurisé mais je n'en ai pas en face de moi pour le tester.
EDIT: nouvelle idée pour déterminer le nom exact du fichier APK
1) adb pull /data/system/packages.xml
2) Recherchez à travers elle l'entrée codePath de votre application
3) adb pull that
EDIT: En ce qui concerne l'ancienne idée ci-dessous, Matthew a découvert que même si les fichiers par processus sous / proc ont une autorisation de lecture sur un périphérique sécurisé, ils sont vides lorsqu'ils sont lus par un uid non privilégié autre que celui de leur propriétaire. Donc ça ne marchera pas.
1) Lancez votre application. Vous aurez également besoin d'une machine avec adb.
2) type
adb shell ps
et recherchez la ligne avec le nom de votre application:
app_1 11959 907 112984 27580 ffffffff afd0c5bc S com.clevername.myapp
3) prenez le numéro dans la deuxième colonne qui est l'ID du processus, et affichez sa carte de mémoire virtuelle, dans ce cas, je taperais
adb shell cat /proc/11959/maps
et recherchez une ligne où il a mappé son propre fichier apk en mémoire
43e9c000-43ea3000 r--s 001f4000 b3:06 15393 /data/app/com.clevername.myapp-1.apk
4) C'est le nom de fichier dont vous auriez besoin pour tirer
adb pull /data/app/com.clevername.myapp-1.apk .
L'examen des autorisations de répertoire dans / proc suggère que cela devrait fonctionner pour un utilisateur non privilégié, mes excuses si ce n'est pas le cas. Si vous êtes familier avec l'utilisation de 'grep', vous pouvez l'utiliser pour éviter de scanner manuellement la sortie.
Addendum: je ne suis pas vraiment sûr de l'histoire des applications installées sur la carte SD.
adb shell cat /proc/####/maps
ne renvoie rien, malheureusement.