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

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

19 ответов


использовать adb. С adb тянуть вы можете копировать файлы с вашего устройства в систему, когда устройство подключено с помощью USB.

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


Если вы обнаружите, что многие из APKs называются " base.apk " вы также можете использовать эту команду одной строки, чтобы вытащить все APKs с телефона, к которому вы можете получить доступ, переименовывая любой "база.apk " имена к имени пакета. Это также исправляет каталог не найден вопрос для apk пути с казалось бы случайных символов после имени:

for i in $(adb shell pm list packages | awk -F':' '{print }'); do adb pull "$(adb shell pm path $i | awk -F':' '{print }')"; mv base.apk $i.apk 2&> /dev/null ;done

Если вы получаете "adb: error: failed to stat remote object", что означает, что у вас нет необходимых разрешений. Я запустил это на некорневом Moto Z2 и смог загрузить все APKs, которые я не удалил (см. ниже), кроме youtube.

adb shell pm uninstall --user 0 com.android.cellbroadcastreceiver   <--- kills presidential alert app!

(для просмотра пользователей запустите список пользователей adb shell pm) Это способ удалить / удалить (не с телефона, так как он возвращается с заводским сбросом) почти любой приложение без корня, включая системные приложения (намек на раздражающее приложение обновления, которое обновляет вашу телефонную линию или нет, можно найти, греппинг для "ccc")


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

1) Определите имя пакета приложения, например " com.образец.someapp". Пропустите этот шаг, если вы уже знаете имя пакета.

adb shell pm list packages

посмотреть список пакетов имена и попытаться найти соответствие между приложения и имя пакета. Это обычно легко, но обратите внимание, что имя пакета может быть полностью не связано с именем приложения. Если вы не можете распознать приложение из списка имен пакетов, попробуйте найти его в Google Play с помощью браузера. URL-адрес приложения в Google Play содержит имя пакета.

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

adb shell pm path com.example.someapp

выход будет выглядеть что-то вот так:пакет:/data/app/com.образец.someapp-2.apk

3) потяните файл APK с устройства Android в поле разработки.

adb pull /data/app/com.example.someapp-2.apk path/to/desired/destination

корень не требуется:

этот код получит сторонний путь пакетов с именем, чтобы вы могли легко идентифицировать свой APK

adb shell pm list packages -f -3

выход будет

пакет:/data/app/XX.XX.XX.apk=YY.YY.YY

Теперь потяните этот пакет, используя код ниже:

adb pull /data/app/XX.XX.XX.apk

Если вы выполнили выше cmd в C:>\, тогда вы найдете этот пакет там.


Я видел, что много решений этой проблемы, либо вы должны искоренить ваш телефон и установить приложение. Затем после долгого гугления я получил это решение для некорневых / корневых телефонов.

В списке, какие приложения вы получили до сих пор.

adb shell pm list packages

затем вы можете выбрать приложение, например twitter

adb backup -apk com.twitter.android

здесь важно не устанавливать пароль для шифрования резервной копии

Это создайте файл с именем backup.АП, но ты все еще не можешь открыть его. Для этого вы должны извлечь его снова, но с помощью команды dd.

dd if=backup.ab bs=24 skip=1 | openssl zlib -d > backup.tar

после этого все, что вам нужно сделать, это извлечь содержание смолы, и это сделано.

надеюсь, что это работает для вас, ребята!--6-->


C:\Users\xyz>adb shell pm list packages -f | findstr whatsapp
package:/data/app/com.whatsapp-1/base.apk=com.whatsapp

C:\Users\xyz>adb pull /data/app/com.whatsapp-1/base.apk Desktop
/data/app/com.whatsapp-1/base.apk: 1 f.... 13.8 MB/s (32803925 bytes in 
2.269s)

завершение ответа @Yojimbo, это то, что я сделал (только Linux/Mac, не будет работать из коробки на Windows... может быть, в оболочке bash git):

for i in $(adb shell pm list packages -f -3 | cut -d= -f 1 | cut -d ":" -f 2); do adb pull $i; done

это уродливый Баш, но работает:)

изменить: Он больше не работает на AndroidM: все файлы называются "base.АПК " под другим реж. Должно быть" тривиально " исправить.


Как сказано выше, вы можете получить apk, используя команду pull в adb.

Так как, вы говорите о ваших установленных приложений, идти вперед и посмотреть в / data / app каталог вашей файловой системы Android. Вы найдете APK там.

затем используйте команду adb-ADB pull/data/data / appname.apk


в системах unix вы можете попробовать эту функцию:

function android_pull_apk() {
    if [ -z "" ]; then
        echo "You must pass a package to this function!"
        echo "Ex.: android_pull_apk \"com.android.contacts\""
        return 1
    fi

    if [ -z "$(adb shell pm list packages | grep )" ]; then
        echo "You are typed a invalid package!"
        return 1
    fi

    apk_path="`adb shell pm path  | sed -e 's/package://g' | tr '\n' ' ' | tr -d '[:space:]'`"
    apk_name="`adb shell basename ${apk_path} | tr '\n' ' ' | tr -d '[:space:]'`"

    destination="$HOME/Documents/Android/APKs"
    mkdir -p "$destination"

    adb pull ${apk_path} ${destination}
    echo -e "\nAPK saved in \"$destination/$apk_name\""
}
  • пример: android_pull_apk com.android.contacts
  • Примечание: для идентификации пакета:adb shell pm list packages

один лайнер, который работает для всех версий Android:

adb shell 'cat `pm path com.example.name | cut -d':' -f2`' > app.apk

если вы знаете (или если вы можете "угадать") путь к .apk (it кажется формата /data/app/com.example.someapp-{1,2,..}.apk С , то вы можете просто скопировать его из /data/app как хорошо. Это работало даже на моем некорневом, фондовом телефоне Android.

просто используйте приложение эмулятора терминала (например,этот) и запустите:

# step 1: confirm path
ls /data/app/com.example.someapp-1.apk
# if it doesn't show up, try -2, -3. Note that globbing (using *) doesn't work here.
# step 2: copy (make sure you adapt the path to match what you discovered above)
cp /data/app/com.example.someapp-1.apk /mnt/sdcard/

затем вы можете переместить его с SD-карты туда, куда хотите (или прикрепить его к электронной почте и т. д.). Последний бит может быть технически необязательным, но это делает вашу жизнь намного проще, когда вы пытаетесь что-то сделать с .


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


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

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

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


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


попробуйте эту команду 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 это, i.e то же самое base.apk файл перезаписывается на Android 6.0 "Marshmallow" и выше.

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


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

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

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


хотеть очень, очень удобное 1 мельчайшее решение?

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

нажмите "приложения", выберите один и нажмите "резервное копирование". это будет в конечном итоге на вашей файловой системе в ;)


еще один скрипт bash (т. е. будет работать для большинства unix-систем). На основе ответ Педро Родригеса, но это немного проще в использовании.

улучшения по сравнению с версией Педро:

  1. оригинальный подход не работает для меня на Android 7: adb pull продолжал жаловаться о no such file or directory пока adb shell может получить доступ к файлу. Поэтому я использовал другой подход, с временным файлом.
  2. при запуске без аргументов, мой скрипт просто перечислите все доступные пакеты. Когда предоставляется частичное имя пакета, он попытается угадать полное имя пакета. Он будет жаловаться, если есть несколько возможных расширений.
  3. Я не жестко кодирую путь назначения; вместо этого APKs сохраняются в текущий рабочий каталог.

сохранить это в исполняемый файл:

#!/bin/bash
# Obtain APK file for given package from the device connected over ADB

if [ -z "" ]; then
    echo "Available packages: "
    adb shell pm list packages | sed 's/^package://'
    echo "You must pass a package to this function!"
    echo "Ex.: android_pull_apk \"com.android.contacts\""
    exit 1
fi

fullname=$(adb shell pm list packages | sed 's/^package://' | grep )
if [ -z "$fullname" ]; then
    echo "Could not find package matching "
    exit 1
fi
if [ $(echo "$fullname" | wc -l) -ne 1 ]; then
    echo "Too many packages matched:"
    echo "$fullname"
    exit 1
fi
echo "Will fetch APK for package $fullname"

apk_path="`adb shell pm path $fullname | sed -e 's/package://g' | tr '\n' ' ' | tr -d '[:space:]'`"
apk_name="`basename ${apk_path} | tr '\n' ' ' | tr -d '[:space:]'`"

destination="${fullname}.apk"

tmp=$(mktemp --dry-run --tmpdir=/sdcard --suffix=.apk)
adb shell cp "${apk_path}" "$tmp"
adb pull "$tmp" "$destination"
adb shell rm "$tmp"

[ $? -eq 0 ] && echo -e "\nAPK saved in \"$destination\""

простое: Установите приложение "ShareIt" на телефон. Теперь установите приложение shareIt на ПК или другом телефоне. Теперь с телефона, где установлено приложение, откройте ShareIt и отправьте. На другом телефоне или ПК откройте ShareIt и получите.


Это поможет для тех, кто ищет нетехнических ответ

Это просто hack

скачать приложение App Share/Send Pro из магазина Google play. Выберите приложение, которое вы хотите отправить, и метод отправки приложения.

обычно я использую Bluetooth для отправки приложений на компьютер или другой телефон.