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

484

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

Znalazca
źródło

Odpowiedzi:

118

Użyj adb . Dzięki adb pull możesz kopiować pliki z urządzenia do systemu, gdy urządzenie jest podłączone przez USB.

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


Jeśli stwierdzisz, że wiele plików APK ma nazwę „base.apk”, możesz także użyć tego polecenia w jednym wierszu, aby wyciągnąć wszystkie pliki APK z telefonu, do którego masz dostęp, zmieniając nazwy dowolnych nazw „base.apk” na nazwę pakietu. To także rozwiązuje problem z nieznalezionym katalogiem ścieżek APK z pozornie losowymi 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ę komunikat „adb: error: failed to stat remote object”, co oznacza, że ​​nie masz wymaganych uprawnień. Uruchomiłem to na nie Zrootowanym Moto Z2 i mogłem pobrać WSZYSTKIE pliki APK, których nie odinstalowałem (patrz niżej), z wyjątkiem YouTube.

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

(aby wyświetlić użytkowników uruchamiających użytkowników z listą powłoki powłoki adb) Jest to sposób na usunięcie / odinstalowanie (nie z telefonu, jak wraca z przywróceniem ustawień fabrycznych) prawie KAŻDEJ aplikacji BEZ root, w tym aplikacji systemowych (wskazówka na irytującą aplikację aktualizującą, która aktualizuje telefon wyłóż to lub nie można znaleźć poprzez grepping dla „ccc”)

Maurits Rijk
źródło
1
Dzięki Maurits Rijk. Proszę, pomóżcie mi. Chcę skopiować plik iTwips.apk z urządzenia do systemu. Używam następującego polecenia. czy to jest poprawne ? Mam błąd „Android2.2Froyo / sdcard / iTwips.apk” nie wychodzi ... / Users / bbb / Android / android-sdk-mac_86 / tools / adb pull Android2.2Froyo / sdcard / iTwips.apk / Users / bbb Dzięki z góry ...
Finder
Na moim urządzeniu (Android 2.1) polecenie brzmiałoby „adb pull /sdcard/test.jpg”, aby skopiować test.jpg z mojej karty SD do bieżącego katalogu. Najpierw zlokalizuj plik iTwips.apk przy użyciu „powłoki adb”. To uruchamia powłokę na twoim urządzeniu i możesz przeglądać katalogi za pomocą standardowych poleceń Uniksa, takich jak ls i cd.
Maurits Rijk
Cześć, w rzeczywistości iTwips.apk przechowywany w pamięci wewnętrznej urządzenia. jak mogę użyć powłoki do tego? Używam następującego polecenia adp -d <numer_wybrania> powłoki .. Ale to nie działa .. proszę o pomoc .. Z góry dziękuję.
Finder
Cześć, dziękuję bardzo. Teraz mogę pobrać obrazy z sdcard. ale chcę pobrać plik apk z urządzenia (folder managementApplication). Aplikacja iTwips jest przechowywana w folderze aplikacji. Proszę, pomóżcie mi.
Finder
16
@Finder @Maurits Rijk W rzeczywistości nie musisz rootować urządzenia tylko po to, aby pobrać apk. Tak długo, jak znasz pełną ścieżkę tego pliku. Jeśli apk jest zainstalowany, znajdź pełną ścieżkę, najpierw patrząc na nazwę pakietu za pomocą adb shell pm list packages, a adb shell pm path your.package.namenastępnie pełną ścieżkę z komputera, możesz po prostuadb pull /full/path/to/your.apk
Isa A
1549

Żadna z tych sugestii nie działała dla mnie, ponieważ Android dołączał numer sekwencji do nazwy pakietu, aby utworzyć ostateczną nazwę pliku APK. W nowszych wersjach Androida (Oreo i Pie) dołączany jest nieprzewidywalny ciąg losowy. Poniższa sekwencja poleceń działa dla mnie na nierootowanym urządzeniu :

1) Określ nazwę pakietu aplikacji, np. „Com.example.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 między aplikacją a nazwą pakietu. Zazwyczaj 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 za pomocą przeglądarki. Adres URL aplikacji w Google Play zawiera nazwę pakietu.

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

adb shell pm path com.example.someapp

Dane wyjściowe będą wyglądały jak
pakiet: /data/app/com.example.someapp-2.apk
lub
pakiet: /data/app/com.example.someapp-nfFSVxn_CTafgra3Fr_rXQ == / base.apk

3) Używając pełnej nazwy ścieżki z kroku 2, przeciągnij plik APK z urządzenia z systemem Android do okna programowania.

adb pull /data/app/com.example.someapp-2.apk path/to/desired/destination
Yojimbo
źródło
65
To najlepsza odpowiedź, nie trzeba szarpać urządzenia !! wielkie dzięki
Muhannad A.Alhariri
14
To działało na wszystkich moich urządzeniach z Androidem i powinna być zaakceptowaną odpowiedzią.
b.mcewan
8
pm list packagesobsługuje -fflagę, która wyświetla dla ciebie lokalizację pliku .apk, np package:/data/app/com.google.android.apps.maps-1.apk=com.google.android.apps.maps. Wbudowana pomoc pm jest bezużyteczna, ale pm może również filtrować typy pakietów, zobacz developer.android.com/studio/command-line/adb.html#pm, aby uzyskać więcej informacji. EDYCJA: właśnie zauważyłem, że poniższa odpowiedź mówi to, ale ta odpowiedź nie jest tak pozytywnie oceniona jak ta.
Hitechcomputergeek
9
Nie działa dla mnie. Pojawia się następujący błąd: adb: error: remote object '/data/app/path.of.the.app-2/base.apk' does not exist. Jeśli przeglądam te foldery za pomocą przeglądarki plików, foldery są puste.
Bevor
7
Miałem podobny problem jak @Bevor, podczas wyciągania dostałem błąd, że apk „nie istnieje”. Naprawiłem go za pomocą adb shell, a następnie cp PathToApk /sdcard/a następnie kopiując z sdcard.
colin,
124

Nie jest wymagany root:

Ten kod otrzyma ścieżkę do pakietów innych firm o nazwie, dzięki czemu możesz łatwo zidentyfikować swój pakiet APK

adb shell pm list packages -f -3

wyjście będzie

pakiet: /data/app/XX.XX.XX.apk=YY.YY.YY

teraz ściągnij ten pakiet używając poniższego kodu:

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

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

Faris Al-Abed
źródło
1
To niesamowita odpowiedź! Dziękuję bardzo :)
Drag0
1
Z jakiegoś powodu nie mogę znaleźć plików APK w moim katalogu / data / app / . Zawsze jest tam podkatalog.
IgorGanapolsky 25.04.16
do użycia aplikacji systemowych -f -szamiast-f -3
palindrom
57

Widziałem, że wiele rozwiązań tego problemu albo trzeba zrootować telefon, albo zainstalować aplikację. Potem po wielu googlingach dostałem to rozwiązanie dla nierootowanych / zrootowanych telefonów.

Aby wyświetlić listę aplikacji, które 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żną rzeczą jest tutaj, aby nie ustawić hasła do szyfrowania kopii zapasowej

Spowoduje to utworzenie pliku o nazwie backup.ap, ale nadal nie można go otworzyć. W tym celu musisz go ponownie wyodrębnić, ale używając polecenia dd.

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

Po tym wszystko, co musisz zrobić, to wyodrębnić zawartość smoły i gotowe.

Mam nadzieję, że wam się spodoba

Paulo Miguel Almeida
źródło
7
Z blog.shvetsov.com/2013/02/… , jeśli twój openssl nie ma zlib, może to działać: dd if = backup.ab bs = 1 skip = 24 | python -c "importuj zlib, sys; sys.stdout.write (zlib.decompress (sys.stdin.read ()))" | tar -xvf -
kodi
1
To działało dla mnie, a nie procedura w przyjętej odpowiedzi. I naprawdę pomogło mi dzisiaj, gdy potrzebowałem APK jednej z moich starych aplikacji, ale nie było dla mnie dostępne inaczej niż z mojego telefonu.
zeeshan
1
Oto więcej informacji, jeśli Twój openssl nie ma wsparcia dla zlib: stackoverflow.com/questions/29830981/...
Nico Wiedemann
19

Kroki, aby pobrać APK z urządzenia na pulpit

A) Upewnij się, że działasz (emulator / prawdziwe urządzenie). Aby to sprawdzić, użyj tego polecenia

adb devices

B) Wybierz całą dostępną listę pakietów zainstalowanych w urządzeniu. Możesz użyć polecenia grep, aby wybrać konkretny pakiet, który chcesz pobrać.

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

Dane wyjściowe (lista dostępnych pakietów)

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) Skopiuj pakiet (który chcesz pobrać) z powyższego linku. Z naszej skrzynki wybieram ten pakiet (com.example.myapplication)

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

Wynik

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

D) Wreszcie, aby pobrać APK z (emulatora / urządzenia rzeczywistego)

Syntax : 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

Przykład: próba pobrania tego pliku CertInstaller.apk na komputerze lokalnym (Mac)

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

E) Potwierdź w lokalnym katalogu

ls -la /Users/$(whoami)/Documents/
Farid Haq
źródło
Celem jest wyodrębnienie jednego pliku APK, ale w kroku 4 wyciągasz dwa dodatkowe pliki bez wyjaśnienia lub wcześniejszego odwołania.
Carles Alcolea,
Zmodyfikowałem ten post, wyjaśniając każdy krok. Mam nadzieję, że ta modyfikacja będzie pomocna i łatwa do zrozumienia.
Farid Haq
18
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)
RVR
źródło
Moim zdaniem jest to najprostszy sposób. Dzięki!
8bitcartridge
1
faceci używający Linuksa lub Maca zamiast findstr używają grep
Jeeva
10

Jedna wkładka, która działa we wszystkich wersjach Androida:

adb shell 'cat `pm path com.example.name | cut -d':' -f2`' > app.apk
Witalij Dyatłow
źródło
1
@AlexP. co chciałeś powiedzieć przez powyższy link?
Witalij Dyatłow
7

Uzupełniając odpowiedź @Yojimbo, właśnie to zrobiłem (tylko Linux / Mac, nie działa od razu w systemie Windows ... może w powłoce bash gita):

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

To brzydkie bash, ale działa :)

EDYCJA: To już nie działa na AndroidM: wszystkie pliki mają nazwę „base.apk” w innym katalogu. Powinien być „trywialny” do naprawienia.

elcuco
źródło
7

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ć paczkę:adb shell pm list packages
Pedro Rodrigues
źródło
6

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

Ponieważ mówisz o zainstalowanych aplikacjach, przejdź do / data / app systemu plików Android. Znajdziesz tam pliki APK.

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

aditya.gupta
źródło
6

Wypróbuj to polecenie bash z jedną linią, 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 Firelorda . Właśnie zmieniłem nazwy wszystkich apków na nazwy ich pakietów, aby rozwiązać problem ze skryptem elcuco , tj. Tym samymbase.apk plik zostanie zastąpiony w Androidzie 6.0 „Marshmallow” i nowszych.

Pamiętaj, że to polecenie tworzy kopie zapasowe tylko aplikacji innych firm, ponieważ nie widzę sensu tworzenia kopii zapasowych wbudowanych aplikacji. Ale jeśli chcesz również tworzyć kopie zapasowe aplikacji systemowych, po prostu pomiń tę -3opcję.

HEXcube
źródło
5

Jeśli znasz (lub potrafisz „zgadnąć”) ścieżkę do .apk( wygląda na to, że ma format /data/app/com.example.someapp-{1,2,..}.apk, możesz po prostu skopiować ją z/data/app również . Działa to nawet na moim nierootowanym, standardowym telefonie z Androidem.

Wystarczy użyć aplikacji Emulator terminala (takiej jak ta ) i uruchomić:

# 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 bit może być technicznie opcjonalny, ale znacznie ułatwia Ci życie, gdy próbujesz coś zrobić z .apkplikiem.

m01
źródło
5

Procedury przedstawione tutaj nie działają dla Androida 7 (Nougat) [i prawdopodobnie Androida 6, ale nie mogę zweryfikować]. Nie możesz pobrać plików .apk bezpośrednio pod Nougat (chyba że w trybie root, ale wymaga to zrootowanego telefonu). Ale możesz skopiować .apk na alternatywną ścieżkę (powiedz / sdcard / Download) w telefonie za pomocą powłoki adb, a następnie możesz pobrać adb z alternatywnej ścieżki.

SamG
źródło
3
Akceptowana odpowiedź (w tym adb shellpolecenia z komentarza @ Isy A) działała dla mnie dobrze na Androidzie 7.1.1, nie zrootowana.
Jonathan Cottrill,
4
  1. Otwórz w telefonie aplikację, z której chcesz wyodrębnić aplikację.
  2. Pobierz aktualnie otwartą aplikację dzięki:

    adb shell dumpsys activity activities | grep mFocusedActivity
  3. Uzyskaj ścieżkę do nazwy pakietu

    adb shell pm path <packagename.apk>

4. Skopiuj ścieżkę do katalogu sdcard

    adb shell cp /data/app/<packagename.apk> /sdcard

5. Wyłącz apk

    adb pull /sdcard/base.apk

Edytować

Jeśli krok nr 2 nie działa, użyj tego:

adb shell dumpsys window windows | grep mCurrentFocus
Łał
źródło
3

Oto jak to zrobić:

Pobierz i zainstaluj APK Extractor na swoim urządzeniu. Jest bezpłatny i jest kompatybilny z prawie wszystkimi urządzeniami z Androidem. Kolejną zaletą jest to, że nawet nie wymaga rootowania ani niczego do działania. Po zainstalowaniu uruchom go. Tam zobaczysz listę aplikacji, które są na twoim urządzeniu, które obejmują aplikacje zainstalowane później, wraz z aplikacjami systemowymi. Naciśnij i przytrzymaj dowolną aplikację, którą chcesz wyodrębnić (możesz wybrać wiele aplikacji lub wszystkie jednocześnie), a następnie kliknij opcję wyodrębnienia widoczną u góry. Będziesz także mieć możliwość udostępniania przez Bluetooth lub wiadomości. Po zakończeniu zobaczysz wyodrębnione aplikacje jako AppName_AppPackage_AppVersionName_AppVersionCode.apk, które zostaną domyślnie zapisane w ścieżce / sdcard / ExtractedApks /.

Szczegółowy opis sposobu wyodrębniania plików apk w Androidzie znajduje się na stronie: http://appslova.com/how-to-extract-apk-files-in-android/

Pramod Mahato
źródło
3

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. pobierz go. Zbudowałem prosty apk_grabberskrypt Pythona, aby to zrobić dla dowolnej aplikacji pasującej do podanego wyrażenia regularnego, a następnie dekompiluję te apki do plików jar.

Jeff Brateman
źródło
1

Nie użyłem kodu do pobrania pliku .apk z telefonu komórkowego, ale używam oprogramowania do wyodrębnienia pliku .apk z telefonu komórkowego, a oprogramowanie, z którego korzystałem, jest poniżej z linkiem do Google Play:

  1. Menedżer plików ES File Explorer
  2. ASTRO Cloud & File Manager 3. Kabel danych oprogramowania

Mam nadzieję, że Ci to pomoże.

surhidamatya
źródło
2
Użyłem ES File Explorer. Nie jestem zrootowany. Właśnie poszedłem do Narzędzia -> Menedżer aplikacji i długo naciskałem aplikację, dla której chciałem APK. To wybrało aplikację (i pozwoliło mi wybrać inne). Myślę, że nacisnąłem przycisk Udostępnij i byłem w stanie wysłać APK do siebie (używając Push Bullet, ale co kiedykolwiek działa dla ciebie).
schultzter
Jeśli nie zgniłeś, możesz spróbować wykonać kopię zapasową aplikacji i przywrócić play.google.com/store/apps/details?id=mobi.infolife.appbackup
surhidamatya
1

chcesz bardzo wygodne rozwiązanie 1-minutowe?

tylko ty ta aplikacja https://play.google.com/store/apps/details?id=com.cvinfo.filemanager (inteligentny menedżer plików z Google Play).

dotknij „aplikacje”, wybierz jedną i dotknij „kopia zapasowa”. skończy na twoim systemie plików w app_backupfolderze;)

użytkownik3350906
źródło
1

Nie wymaga metody rootowania ani narzędzi ADB. Zainstaluj aplikację MyAppSharer ze sklepu Play.

moberme
źródło
1

mam does not exist error

Oto jak sprawiam, że to działa

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)
vanduc1102
źródło
0

Jeszcze inny skrypt bash (tj. Będzie działał dla większości systemów opartych na Uniksie). Na podstawie odpowiedzi Pedro Rodriguesa , ale jest nieco łatwiejszy w użyciu.

Ulepszenia w stosunku do wersji Pedro:

  1. Oryginalne podejście nie działało dla mnie na Androidzie 7: adb pullciągle narzekałem, no such file or directorydopóki nie miałem adb shelldostępu do pliku. Dlatego zastosowałem inne podejście, z plikiem tymczasowym.
  2. Po uruchomieniu bez argumentów, mój skrypt po prostu wyświetli listę wszystkich dostępnych pakietów. Po podaniu częściowej nazwy pakietu spróbuje odgadnąć pełną nazwę pakietu. Będzie narzekać, jeśli istnieje kilka możliwych rozszerzeń.
  3. Nie ustalam ścieżki docelowej kodu; zamiast tego pliki APK są zapisywane w bieżącym katalogu roboczym.

Zapisz to w pliku wykonywalnym:

#!/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\""
MarSoft
źródło
0

Najprostszy to: zainstaluj aplikację „ShareIt” na telefonie. Teraz zainstaluj aplikację shareIt na komputerze lub innym telefonie. Teraz z telefonu, na którym zainstalowana jest aplikacja, otwórz ShareIt i wyślij. Na innym telefonie lub komputerze otwórz ShareIt i odbierz.

Sirsendu
źródło
0

Naprawdę podobały mi się wszystkie te odpowiedzi. Większość skryptów do eksportu i zmiany nazw wszystkich została napisana w języku Bash. Zrobiłem mały skrypt Perla, który robi to samo (który powinien działać zarówno w Perlu dla Windows, jak i Linuksa, testowany tylko na 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. Upewnij się, że adb (.exe) znajduje się w Twojej ścieżce lub w tym samym katalogu
  2. Podłącz swój telefon
  3. Uruchom download-apk.pl

Wynik jest podobny do:

# ./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.
Gerben Versluis
źródło
-1

Pomoże to komuś, kto szuka odpowiedzi nietechnicznej

To prosty hack

Pobierz aplikację App Share/Send Proze sklepu Google Play. Wybierz aplikację, którą chcesz wysłać, i metodę wysyłania aplikacji.

Zwykle używam Bluetooth do wysyłania aplikacji na komputer lub inny telefon.

Saahithyan Vigneswaran
źródło
Nie jest łatwy w użyciu
APEXBoi