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



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

698   19  

19 ответов:

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

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


Если вы обнаружите, что многие из APKs называются "base.apk " вы также можете использовать эту команду одной строки, чтобы вытащить все APKs с телефона, к которому вы можете получить доступ, переименовывая любой "база.apk " имена для имени пакета. Это также исправляет проблему с каталогом not found для путей 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 list users) Это способ удалить / удалить (не с телефона, как он возвращается с заводским сбросом) почти любой приложение без корня, включая системные приложения (намек на раздражающее приложение обновления, которое обновляет вашу телефонную линию или нет, можно найти, сгребая для "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

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

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

adb shell pm list packages -f -3

выход будет

пакет: / data / app / XX. XX.XX.apk=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... может быть, в 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. Вы найдете АПК там.

затем используйте команду 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, затем вы можете сделать АБР вытащить из альтернативного пути.

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

скачать и установить APK Extractor в вашем устройстве. Это бесплатно, и совместим практически во всех устройствах Android. Еще один плюс заключается в том, что он даже не требует корня или чего-либо для работы. После его установки запустите его. Там вы увидите список приложений, которые находятся на вашем устройстве, включая приложения, которые вы установили позже, а также системные приложения. Длительное нажатие на любое приложение, которое вы хотите извлечь (вы можете выбрать несколько или все приложения на один раз), и нажмите на опцию извлечения, которую вы видите в верхней части. Вы также будете иметь возможность поделиться через 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 script чтобы сделать это для любого приложения, которое соответствует заданному регулярному выражению, а затем декомпилирует эти 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 это, то есть то же самое base.apk файл перезаписывается на Android 6.0 "зефир" и выше.

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

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

  1. ES File Explorer File Manager
  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 store. Выберите приложение, которое вы хотите отправить, и метод отправки приложения.

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

Comments

    Ничего не найдено.