Jak uzyskać plik apk z urządzenia z systemem Android?

Jak uzyskać plik apk z urządzenia z Androidem? Lub jak przenieść plik apk z urządzenia do systemu?

Author: Doorknob, 2010-10-27

19 answers

Użyj adb . Z ADB pull możesz kopiować pliki z urządzenia do systemu, gdy urządzenie jest podłączone za pomocą USB.

Oczywiście potrzebujesz również odpowiednich uprawnień, aby uzyskać dostęp do katalogu, w którym znajduje się Twój plik. Jeśli nie, musisz najpierw wykorzenić urządzenie.


Jeśli okaże się, że wiele APK nazywa się " baza.apk "możesz również użyć tego polecenia jednej linii, aby pobrać wszystkie APK z telefonu, do którego możesz uzyskać dostęp, zmieniając nazwę dowolnej" bazy.apk " nazwy do pakietu nazwisko. Rozwiązuje to również problem z nie odnalezionym katalogiem dla ścieżek APK z pozornie przypadkowymi znakami po nazwie:

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

Jeśli pojawi się "ADB: error: failed to stat remote object", który wskazuje, że nie masz wymaganych uprawnień. Uruchomiłem to na nie zakorzenione Moto Z2 i był w stanie pobrać wszystkie apki, których nie odinstalowałem (patrz poniżej), z wyjątkiem youtube.

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

(aby zobaczyć użytkowników Uruchom adb shell pm list users) Jest to sposób na usunięcie/odinstalowanie (nie z telefonu jak wraca z przywróceniem ustawień fabrycznych) prawie każda aplikacja bez roota, w tym aplikacje systemowe (podpowiedź irytująca aplikacja aktualizacji, która aktualizuje linię telefonu, czy nie, można znaleźć przez grepping dla "ccc")

 58
Author: Maurits Rijk,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-10-05 08:44:06

Żadna z tych sugestii nie zadziałała dla mnie, ponieważ Android dodawał numer sekwencji do nazwy pakietu, aby wytworzyć ostateczną nazwę pliku APK (może się to różnić w zależności od wersji systemu operacyjnego Android). Następująca sekwencja poleceń działa dla mnie na urządzeniu non-rooted :

1) Określ nazwę pakietu aplikacji, np. " com.przykład.someapp". Pomiń ten krok, jeśli znasz już nazwę pakietu.

adb shell pm list packages

Przejrzyj listę nazw pakietów i spróbuj znaleźć dopasowanie pomiędzy daną aplikacją a nazwą pakietu. Zwykle jest to łatwe, ale należy pamiętać, że Nazwa pakietu może być całkowicie niezwiązana z nazwą aplikacji. Jeśli nie możesz rozpoznać aplikacji na liście nazw pakietów, spróbuj znaleźć aplikację w Google Play przy użyciu przeglądarki. Adres URL aplikacji w Google Play zawiera nazwę pakietu.

2) Pobierz pełną nazwę ścieżki pliku APK dla żądanego pakietu.

adb shell pm path com.example.someapp

Wynik będzie wyglądał mniej więcej tak: pakiet: / data / app / com.przykład./ align = "left" / apk

3) wyciągnij plik APK z urządzenia z Androidem do pudełka programistycznego.

adb pull /data/app/com.example.someapp-2.apk path/to/desired/destination
 1256
Author: Yojimbo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-07 21:54:48

Nie jest Wymagany root:

Ten kod otrzyma ścieżkę pakietów 3rd party z nazwą, dzięki czemu można łatwo zidentyfikować swój APK

adb shell pm list packages -f -3

Wyjście będzie

Package: / data / app / XX. XX. xx. apk=YY.YY.YY

Teraz wyciągnij pakiet używając poniższego kodu:

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

Jeśli wykonałeś powyżej cmd w C:>\, wtedy znajdziesz tam ten pakiet.

 96
Author: Faris Al-Abed,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-08-30 06:45:50

Widziałem, że wiele rozwiązań tego problemu albo trzeba root telefonu lub trzeba zainstalować aplikację. Następnie po wielu googling mam to rozwiązanie dla non rooted / zakorzenione telefony.

Do listy, które aplikacje masz do tej pory.

adb shell pm list packages
Następnie możesz wybrać aplikację, na przykład twitter
adb backup -apk com.twitter.android

Ważne jest, aby nie ustawiać hasła do szyfrowania kopii zapasowej

Spowoduje utworzenie pliku o nazwie backup.ap, ale ty nadal nie mogę otworzyć. W tym celu musisz wyodrębnić go ponownie, ale za pomocą polecenia dd.

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

Po tym wszystkim, co musisz zrobić, to wydobyć zawartość smoły i gotowe.

Mam nadzieję, że wam się uda.]}
 46
Author: Paulo Miguel Almeida,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-10-19 20:05:47
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)
 12
Author: RVR,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-13 11:57:19

Uzupełniając odpowiedź @Yojimbo, to właśnie zrobiłem (tylko Linux / Mac, nie będzie działać po wyjęciu z pudełka na Windows... może w powłoce 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

To jest brzydki bash, ale działa:)

Edytuj: Nie działa już na AndroidM: wszystkie pliki mają nazwę " base.apk " pod innym reż. Powinno być" trywialne " do naprawienia.

 7
Author: elcuco,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-06 21:19:59

Jak wspomniano powyżej, można uzyskać apk za pomocą polecenia pull w adb.

Ponieważ mówisz o zainstalowanych aplikacjach, zajrzyj do katalogu /data / app Twojego systemu plików Android. Znajdziesz tam APK.

Następnie użyj polecenia adb-ADB pull/data/data / appname.apk

 5
Author: aditya.gupta,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-05-30 11:39:27

W systemach uniksowych możesz wypróbować tę funkcję:

function android_pull_apk() {
    if [ -z "$1" ]; 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 $1)" ]; then
        echo "You are typed a invalid package!"
        return 1
    fi

    apk_path="`adb shell pm path $1 | 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\""
}
  • przykład : android_pull_apk com.android.contacts
  • Uwaga: aby zidentyfikować pakiet: adb shell pm list packages
 5
Author: Pedro Rodrigues,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-04-16 21:34:14

Jeden liner, który działa dla wszystkich wersji Androida:

adb shell 'cat `pm path com.example.name | cut -d':' -f2`' > app.apk
 5
Author: Vitaly Dyatlov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-10 07:58:08

Jeśli znasz (lub potrafisz "odgadnąć") ścieżkę do .apk (to wydaje się być formatu /data/app/com.example.someapp-{1,2,..}.apk Do , możesz po prostu skopiować ją z /data/app. To działało nawet na moim Nie zakorzenionym, zapasowym telefonie z Androidem.

Po prostu użyj aplikacji emulatora terminala (takiej jak ta ) i uruchom:

# 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/

Następnie możesz przenieść go z karty SD w dowolne miejsce (lub dołączyć go do wiadomości e-mail itp.). Ostatni kawałek może być technicznie opcjonalny, ale ułatwia życie, gdy próbuję zrobić coś z plikiem .apk.

 4
Author: m01,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-25 07:57:47

Opisane tutaj procedury nie działają na Androida 7 (Nougat) [i ewentualnie Androida 6, ale nie jestem w stanie zweryfikować]. Nie możesz pociągnąć .pliki apk bezpośrednio pod Nugat (chyba że w trybie root, ale to wymaga zrootowanego telefonu). Ale możesz skopiować .apk do alternatywnej ścieżki (powiedzmy / sdcard / Pobierz) w telefonie za pomocą powłoki adb, a następnie można zrobić ADB wyciągnąć z alternatywnej ścieżki.

 4
Author: SamG,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-12-02 13:53:30

Oto Jak to zrobić:

Pobierz i zainstaluj Ekstraktor APK w swoim urządzeniu. Jest bezpłatny i jest kompatybilny w prawie wszystkich urządzeniach z Androidem. Kolejnym plusem jest to, że nawet nie wymaga roota ani niczego do pracy. Po zainstalowaniu uruchom go. Tam zobaczysz listę aplikacji znajdujących się na Twoim urządzeniu, która obejmuje aplikacje zainstalowane później, wraz z aplikacjami systemowymi. Naciśnij długo dowolną aplikację, którą chcesz rozpakować (możesz wybrać wiele lub wszystkie aplikacje jednocześnie), a kliknij opcję wyodrębnij, którą widzisz na górze. Będziesz mieć również możliwość udostępniania przez Bluetooth lub wiadomości. Po zakończeniu zobaczysz wyodrębnione aplikacje jako AppName_AppPackage_AppVersionName_appversioncode.apk, który zostanie zapisany w ścieżce /sdcard/ExtractedApks/ domyślnie.

Aby uzyskać szczegółowy opis Jak wyodrębnić pliki apk w Androidzie, odwiedź stronę: http://appslova.com/how-to-extract-apk-files-in-android/

 2
Author: Pramod Mahato,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-09-16 10:11:08

Wszystkie te odpowiedzi wymagają wielu kroków dla każdego pliku apk pobranego z urządzenia. 1. określ nazwę pakietu, 2. znajdź plik i 3. ściągnij. Zbudowałem prosty apk_grabber skrypt Pythona aby to zrobić dla każdej aplikacji, która pasuje do danego wyrażenia regularnego, a następnie dekompiluje te apki do plików jar.

 2
Author: Jeff Brateman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-17 21:58:26

Spróbuj tego polecenia one liner bash, aby wykonać kopię zapasową wszystkich aplikacji:

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

To polecenie pochodzi ze skryptu Władcy Ognia . Po prostu przemianowałem wszystkie apki na ich nazwy pakietów w celu rozwiązania problemu ze skryptem elcuco , tj. tym samym plikiem base.apk, który został nadpisany na Androidzie 6.0 "Marshmallow" i wyżej.

Zauważ, że to polecenie tworzy kopie zapasowe tylko aplikacji innych firm, ponieważ nie widzę sensu tworzenia kopii zapasowych wbudowanych aplikacji. Ale jeśli chcesz też tworzyć kopie zapasowe aplikacji systemowych, po prostu pomiń -3 opcja.

 2
Author: HEXcube,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-03 17:08:54

Nie użyłem kodu do wyciągania .plik apk z telefonu komórkowego, ale używam oprogramowania do wyodrębniania .plik apk z telefonu komórkowego i oprogramowania, z którego korzystałem, znajduje się poniżej z linkiem google play:

  1. ES File Explorer File Manager
  2. ASTRO Cloud & File Manager 3.Software Data Cable

Mam nadzieję, że ci pomoże.

 1
Author: surhidamatya,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-08-14 11:39:09

Chcesz bardzo, bardzo wygodne rozwiązanie 1 minut?

Just you this app https://play.google.com/store/apps/details?id=com.cvinfo.filemanager (Inteligentny menedżer plików z google play).

Dotknij" Aplikacje", Wybierz jedną i naciśnij "kopia zapasowa". trafi do Twojego systemu plików w folderze app_backup;)

 1
Author: user3350906,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-23 10:11:33

Yet another bash script (tzn. będzie działał dla większości systemów uniksowych). Na podstawie odpowiedzi Pedro Rodrigues , ale jest nieco łatwiejszy w użyciu.

Ulepszenia nad wersją Pedro:

  1. oryginalne podejście nie działało u mnie na Androidzie 7: adb pull narzekał na no such file or directory podczas gdy adb shell mógł uzyskać dostęp do pliku. Dlatego zastosowałem inne podejście, z plikiem tymczasowym.
  2. po uruchomieniu bez argumentów, mój skrypt wyświetli listę wszystkich dostępnych pakietów. Kiedy podano częściową nazwę pakietu, spróbuje odgadnąć pełną nazwę pakietu. Będzie narzekać, jeśli istnieje kilka możliwych rozszerzeń.
  3. nie koduję na twardo ścieżki docelowej; zamiast tego pliki APK są zapisywane w bieżącym katalogu roboczym.

Zapisz to do pliku wykonywalnego:

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

if [ -z "$1" ]; 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 $1)
if [ -z "$fullname" ]; then
    echo "Could not find package matching $1"
    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\""
 0
Author: MarSoft,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-12 14:48:49

Najprostszym jest: Zainstaluj aplikację "ShareIt" na telefonie. Teraz zainstaluj aplikację shareIt na komputerze lub innym telefonie. Teraz z telefonu, w którym jest zainstalowana aplikacja, otwórz ShareIt i wyślij. Na innym telefonie lub komputerze otwórz ShareIt i odbieraj.

 0
Author: Sirsendu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-06 12:54:40

To pomoże komuś, kto szuka nietechnicznej odpowiedzi

This is simple hack

Pobierz aplikację App Share/Send Pro ze sklepu Google play. Wybierz aplikację, którą chcesz wysłać, i metodę wyślij aplikację.

Zazwyczaj używam Bluetooth do wysyłania aplikacji na mój komputer lub inny telefon.

 -1
Author: Saahithyan Vigneswaran,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-06 12:49:16