Как получить файл apk с устройства Android? - PullRequest
425 голосов
/ 27 октября 2010

Как получить файл apk с устройства Android?Или как перенести файл apk с устройства на систему?

Ответы [ 24 ]

5 голосов
/ 02 декабря 2016

Процедуры, описанные здесь, не работают для Android 7 (Nougat) [и, возможно, Android 6, но я не могу проверить].Вы не можете извлекать файлы .apk непосредственно под Nougat (если только не в режиме root, но для этого требуется рутованный телефон).Но вы можете скопировать файл .apk по альтернативному пути (скажем, / sdcard / Download) на телефоне, используя оболочку adb, затем вы можете выполнить извлечение adb из альтернативного пути.

4 голосов
/ 28 января 2019

Шаги для загрузки APK с устройства на рабочий стол

A) Убедитесь, что вы работаете (эмулятор / реальное устройство).Для проверки используйте эту команду

adb devices

B) Выберите весь список доступных пакетов, установленных на вашем устройстве.Вы можете использовать команду grep, чтобы выбрать конкретный пакет, который вы хотите загрузить.

adb shell pm list packages
adb shell pm list packages -f -3

Вывод (список доступных пакетов)

package:/data/app/com.example.mytestapplication-sOzKi5USzfbYLPNDmaaK6g==/base.apk=com.example.mytestapplication
package:/data/app/com.example.myapplication-nd1I4FGnTZnQ9PyRbPDHhw==/base.apk=com.example.myapplication

C) Скопироватьпакет (который вы хотели бы скачать) по ссылке выше.В нашем случае я выбираю этот (com.example.myapplication) пакет

Syntex: adb shell pm path [your_package_name]
Command: adb shell pm path com.example.myapplication

Вывод

package:/data/app/com.example.myapplication-nd1I4FGnTZnQ9PyRbPDHhw==/base.apk

D) Наконец, чтобы загрузить APK из вашего (эмулятора)/ real device)

Syntex: adb pull /data/app/[your_package_name]-1/base.apk  [your_destination_path]
Command: adb pull /data/app/com.example.myapplication-3j4CVk0Tb2gysElgjz5O6A==/base.apk /Users/$(whoami)/Documents/your_apk.apk

Пример. Попытка получить этот файл CertInstaller.apk на локальном компьютере (Mac)

adb pull /system/app/CertInstaller/CertInstaller.apk /Users/$(whoami)/Documents/APK/download_apk/

E) Подтвердить в своемлокальный каталог

ls -la /Users/$(whoami)/Documents/
4 голосов
/ 01 января 2018

Попробуйте эту команду liner bash для резервного копирования всех ваших приложений:

for package in $(adb shell pm list packages -3 | tr -d '\r' | sed 's/package://g'); do apk=$(adb shell pm path $package | tr -d '\r' | sed 's/package://g'); echo "Pulling $apk"; adb pull -p $apk "$package".apk; done

Эта команда получена из скрипта Повелителя огня . Я просто переименовал все apks в их имена пакетов для решения проблемы с сценарием elcuco , т.е. тот же файл base.apk перезаписывается на Android 6.0 "Marshmallow" и выше.

Обратите внимание, что эта команда выполняет резервное копирование только сторонних приложений, поскольку я не вижу смысла в резервном копировании встроенных приложений. Но если вы хотите создать резервную копию системных приложений, просто опустите опцию -3.

3 голосов
/ 16 сентября 2014

Вот как вы это делаете:

Загрузите и установите APK Extractor на ваше устройство.Он бесплатный и совместим практически со всеми устройствами Android.Еще один плюс - он даже не требует рута или чего-либо еще для работы.После того, как он установлен, запустите его.Там вы увидите список приложений, которые находятся на вашем устройстве, включая приложения, которые вы установили позже, а также системные приложения.Длительно нажмите на любое приложение, которое вы хотите извлечь (вы можете выбрать несколько или все приложения одновременно), и нажмите на опцию извлечения, которую вы видите в верхней части.У вас также будет возможность поделиться через Bluetooth или обмен сообщениями.Все готово, вы увидите извлеченные приложения как AppName_AppPackage_AppVersionName_AppVersionCode.apk, которые по умолчанию будут сохранены в пути / sdcard / ExtractedApks /.

Для подробного описания Как извлечь файлы apkandroid , посещение: http://appslova.com/how-to-extract-apk-files-in-android/

3 голосов
/ 18 апреля 2015

Все эти ответы требуют нескольких шагов для каждого файла apk, полученного с устройства.1. определить имя пакета, 2. найти файл и 3. загрузить его.Я создал простой apk_grabber скрипт Python , чтобы сделать это для любого приложения, которое соответствует заданному регулярному выражению, а затем декомпилирует эти apks в файлы jar.

1 голос
/ 08 января 2019

Я получил does not exist error

Вот как я это делаю

adb shell pm list packages -f | findstr zalo
package:/data/app/com.zing.zalo-1/base.apk=com.zing.zalo

adb shell
mido:/ $ cp /data/app/com.zing.zalo-1/base.apk /sdcard/zalo.apk
mido:/ $ exit


adb pull /sdcard/zalo.apk Desktop

/sdcard/zalo.apk: 1 file pulled. 7.7 MB/s (41895394 bytes in 5.200s)
1 голос
/ 21 декабря 2018

Метод Root и ADB не требуется.Установите приложение MyAppSharer из магазина игр.

1 голос
/ 14 августа 2013

Я не использовал код для извлечения файла .apk с мобильного телефона, но я использую программное обеспечение для извлечения файла .apk с мобильного телефона и программное обеспечение, которое я использовал ниже, со ссылкой Google Play:

  1. ES File Explorer Файловый менеджер
  2. ASTRO Cloud & File Manager 3. Программный кабель для передачи данных

Надеюсь, это поможет вам.

1 голос
/ 23 февраля 2018

Хотите очень, очень удобное решение за 1 минуту?

только вам это приложение https://play.google.com/store/apps/details?id=com.cvinfo.filemanager (умный файловый менеджер из Google Play).

нажмите «приложения», выберите одно и нажмите «резервное копирование». он попадет в вашу файловую систему в папку app_backup;)

0 голосов
/ 22 января 2019

Мне очень понравились все эти ответы. Большинство сценариев для экспорта и переименования всех написаны на Bash. Я сделал небольшой скрипт на Perl, который делает то же самое (который должен работать как в Perl для windows, так и для linux, только для Ubuntu).

download-apk.pl

#!/usr/bin/perl -w
# Automatically export all available installed APK's using adb
use strict;
print "Connect your device...\n";
system("adb", "wait-for-device");
open(my $OUT, '-|', 'adb', 'shell', 'pm', 'list', 'package', '-f');
my @list = split(/\s*/, `adb shell pm list packages -f`);
my $count = 0;
while(my $line = <$OUT>) {
        $line =~ s/^\s*|\s*$//g;
        my ($type, $path, $package) = $line =~ /^(.*?):(.*)=(.*)$/ ? ($1,$2,$3) : die('invalid line: '.$line);
        my $category = $path =~ /^\/(.*?)\// ? $1 : 'unknown';
        my $baseFile = $path =~ /\/([^\/]*)$/ ? $1 : die('Unknown basefile in path: '.$path);
        my $targetFile = "$category-$package.apk";
        print "$type $category $path $package $baseFile >> $targetFile\n";
        system("adb", "pull", $path);
        rename $baseFile, $targetFile;
}
  1. Убедитесь, что adb (.exe) находится в вашем пути или в том же каталоге
  2. Подключите телефон
  3. Запустите download-apk.pl

Вывод похож на:

# ./download-apk.pl
Connect your device...
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
package system /system/app/YouTube/YouTube.apk com.google.android.youtube YouTube.apk >> system-com.google.android.youtube.apk
5054 KB/s (11149871 bytes in 2.154s)
package data /data/app/com.ghostsq.commander-1/base.apk com.ghostsq.commander base.apk >> data-com.ghostsq.commander.apk
3834 KB/s (1091570 bytes in 0.278s)
package data /data/app/de.blinkt.openvpn-2/base.apk de.blinkt.openvpn base.apk >> data-de.blinkt.openvpn.apk
5608 KB/s (16739178 bytes in 2.914s)
etc.
...