Получить APK установленного приложения

Я ищу способ извлечь APK-файл установленного приложения Android БЕЗ разрешения root.

Я думал, что это невозможно, потому что все файлы APK для не-системных приложений расположены в / data / app, и для доступа к этой папке требуется разрешение root. Затем я обнаружил, что в Google Play есть множество приложений, которые, похоже, имеют доступ к файлам APK даже на ненагруженных устройствах.

Может ли кто-нибудь сказать мне, как это возможно? Нет ли резервных приложений, которые резервируют файлы APK без root?

Solutions Collecting From Web of "Получить APK установленного приложения"

Доступ к / данные / приложение возможен без разрешения root; Разрешениями для этого каталога являются rwxrwx-x. Выполнение разрешения в каталоге означает, что вы можете получить к нему доступ, однако отсутствие разрешения на чтение означает, что вы не можете получить список его содержимого, поэтому для доступа к нему вы должны знать имя файла, к которому вы будете обращаться. Менеджер пакетов Android сообщит вам имя сохраненного apk для данного пакета.

Чтобы сделать это из командной строки, используйте adb shell pm list packages для получения списка установленных пакетов и поиска нужного пакета.

С именем пакета мы можем получить фактическое имя файла и расположение APK, используя adb shell pm path your-package-name .

И, зная полный каталог, мы можем, наконец, вытащить adb, используя adb pull full/directory/of/the.apk

Приобретите @tarn, указав, что под Lollipop путь apk будет /data/app/your-package-name-1/base.apk

Android добавляет порядковый номер к имени пакета для создания окончательного имени файла APK (возможно, это зависит от версии ОС Android). Следующая последовательность команд работает на некорректном устройстве :

  1. Получить полный путь к файлу APK для нужного пакета.

     adb shell pm path com.example.someapp 

    Это дает результат как: package:/data/app/com.example.someapp-2.apk .

  2. Вытяните файл APK с устройства Android в окно разработки.

     adb pull /data/app/com.example.someapp-2.apk 

Для получения списка установленных приложений вам не нужны разрешения ROOT.

Вы можете сделать это с помощью пакета android PackageManager.

Ниже приведен небольшой фрагмент кода.

 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); } 

В Google Play магазине есть приложение «Apk extracter». С помощью этого приложения вы можете получить файл .apk установленного приложения. Получите и наслаждайтесь!

Когда у вас установлен Eclipse для Android:

  • Используйте устройство как отладочное устройство. На телефоне: Настройки> Приложения> Разработка и включение отладки USB, см. http://developer.android.com/tools/device.html.
  • В Eclipse откройте окно DDMS: Window> Open Perspective> Other …> DDMS, см. http://developer.android.com/tools/debugging/ddms.html.
  • Если вы не видите свое устройство, попробуйте (повторно) установить USB-драйвер для вашего устройства
  • В средней панели выберите вкладку «Проводник» и перейдите в систему> приложение
  • Теперь вы можете выбрать один или несколько файлов, а затем щелкнуть значок «Вытянуть файл с устройства» вверху (справа на вкладки)
  • Выберите целевую папку – tada!
  1. Проверьте список установленных apk (следующая команда также перечисляет путь, где он установлен, и имя пакета). Планы пакета adb оболочки pm -f
  2. Используйте adb pull / package_path / имя пакета / path_in_pc (путь пакета и имя пакета можно получить из команды 1.)

Или вы можете получить «Передачу файлов Bluetooth» из Google Play и установить домашнюю папку в /system/ . Тогда вы можете даже пойти в / .

У меня есть решение, недавно я попробовал. Но я обнаружил, что когда вы обмениваетесь приложениями с zapya, он хранит расширения .apk одного и того же файла в папке приложений каталога zapya на вашем устройстве, где вы можете получить файл apk приложения, установленного на вашем устройстве

Список PackageManager.getInstalledApplications () предоставит вам список установленных приложений, а ApplicationInfo.sourceDir – это путь к файлу .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 

Я нашел способ получить имя пакета APK в устройстве без полномочий root. Это не так элегантно, но работает все время.

Шаг 1 : на вашем устройстве откройте целевой APK

Шаг 2 : в окне PC cmd введите следующие команды:

  adb shell dumpsys activity a > dump.txt 

Потому что выход этой команды многочисленен, рекомендуется перенаправление на файл.

Шаг 3 : откройте этот файл dump.txt любым редактором.

Для устройства для Android 4.4:
Начало файла будет выглядеть так:

 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 

Имя пакета находится в третьей строке, com.tencent.mm для этого примера.

Для Android 4.4 и более поздних версий:
Выход dumpsys немного изменился. Попробуйте найти «Stack # 1», имя пакета будет очень близко под ним.

Кроме того, поиск «baseDir», вы найдете полный путь к файлу apk!