Если вы знаете имя установленного файла apk (которое на некоторых устройствах может быть myapp-1.apk или myapp-2.apk, а не просто myapp.apk), вы можете получить прямой доступ к нему как обычному пользователю, включая тот, который запускается как adb на защищенном устройстве, так что вы должны иметь возможность вытащить его. Но если вы не знаете имя установленного apk, вы не можете просматривать каталог / data / app, не будучи root или aid_system.
Возможно, стоит просто угадать установленное имя - попробуйте это просто, попробуйте его с -1.apk, с -2.apk и т. Д.
Возможен и другой способ: я считаю, что следующее будет работать на защищенном устройстве, но в данный момент у меня его нет, чтобы проверить его.
РЕДАКТИРОВАТЬ: Новая идея для определения точного имени файла APK
1) adb pull /data/system/packages.xml
2) Посмотрите на наличие записи codePath вашего приложения
3) ADB тянуть, что
РЕДАКТИРОВАТЬ: Что касается старой идеи, представленной ниже, Мэтью обнаружил, что, хотя файлы для каждого процесса в / proc имеют разрешение на чтение на защищенном устройстве, они пусты при чтении непривилегированным uid, отличным от их владельца. Так что это не сработает.
1) Запустите ваше приложение. Вам также понадобится машина с adb.
2) тип
adb shell ps
и найдите строку с названием вашего приложения:
app_1 11959 907 112984 27580 ffffffff afd0c5bc S com.clevername.myapp
3) взять номер во втором столбце, который является идентификатором процесса, и просмотреть его карту виртуальной памяти, в этом случае я бы набрал
adb shell cat /proc/11959/maps
и найдите строку, где он сопоставил свой собственный файл apk в память
43e9c000-43ea3000 r--s 001f4000 b3:06 15393 /data/app/com.clevername.myapp-1.apk
4) Это имя файла, которое вам понадобится для adb pull.
adb pull /data/app/com.clevername.myapp-1.apk .
Изучение прав доступа к каталогу в / proc показывает, что это должно работать для непривилегированного пользователя, извините, если это не так. Если вы знакомы с использованием 'grep', вы можете использовать его, чтобы избежать ручного сканирования вывода.
Приложение: Я не совсем уверен, что история о приложениях, установленных на SD-карту.
adb shell cat /proc/####/maps
ничего не возвращает, к сожалению.