696 Stimmen

Wie bekomme ich eine apk-Datei von einem Android-Gerät?

Wie bekomme ich die apk-Datei von einem Android-Gerät? Oder wie übertrage ich die apk-Datei vom Gerät auf das System?

1969voto

Yojimbo Punkte 21352

Keiner dieser Vorschläge hat bei mir funktioniert, da Android eine laufende Nummer an den Paketnamen anhängt, um den endgültigen APK-Dateinamen zu erzeugen. Bei neueren Android-Versionen (Oreo und Pie) wird eine unvorhersehbare Zufallszeichenfolge angehängt. Die folgende Befehlsfolge funktionierte bei mir mit einem nicht verwurzeltes Gerät :

1) Ermitteln Sie den Paketnamen der Anwendung, z. B. "com.example.someapp". Überspringen Sie diesen Schritt, wenn Sie den Paketnamen bereits kennen.

adb shell pm list packages

Schauen Sie sich die Liste der Paketnamen an und versuchen Sie, eine Übereinstimmung zwischen der fraglichen Anwendung und dem Paketnamen zu finden. Dies ist in der Regel einfach, aber beachten Sie, dass der Paketname völlig unabhängig vom Namen der Anwendung sein kann. Wenn Sie die App in der Liste der Paketnamen nicht erkennen können, versuchen Sie, die App in Google Play mithilfe eines Browsers zu finden. Die URL für eine App in Google Play enthält den Paketnamen.

2) Ermitteln Sie den vollständigen Pfadnamen der APK-Datei für das gewünschte Paket.

adb shell pm path com.example.someapp

Die Ausgabe sieht dann etwa so aus
Paket:/data/app/com.example.someapp-2.apk
oder
Paket:/data/app/com.example.someapp-nfFSVxn_CTafgra3Fr_rXQ==/base.apk

3) Verwenden Sie den vollständigen Pfadnamen aus Schritt 2, um die APK-Datei vom Android-Gerät in die Entwicklungsbox zu ziehen.

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

184voto

Maurits Rijk Punkte 9485

Verwenden Sie adb . Mit adb pull können Sie Dateien von Ihrem Gerät auf Ihr System kopieren, wenn das Gerät über USB angeschlossen ist.

Natürlich brauchen Sie auch die richtigen Rechte für den Zugriff auf das Verzeichnis, in dem sich Ihre Datei befindet. Wenn dies nicht der Fall ist, müssen Sie das Gerät zuerst rooten.


Wenn Sie feststellen, dass viele APKs den Namen "base.apk" tragen, können Sie auch diesen einzeiligen Befehl verwenden, um alle APKs von einem Telefon zu ziehen, auf das Sie zugreifen können, und dabei alle "base.apk"-Namen in den Paketnamen umbenennen. Dies behebt auch das Problem des nicht gefundenen Verzeichnisses für APK-Pfade mit scheinbar zufälligen Zeichen nach dem Namen:

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 &> /dev/null 
done

Wenn Sie die Meldung "adb: error: failed to stat remote object" erhalten, bedeutet dies, dass Sie nicht über die erforderlichen Berechtigungen verfügen. Ich habe dies auf einem nicht verwurzelten Moto Z2 ausgeführt und konnte ALLE APKs herunterladen, die ich nicht deinstalliert habe (siehe unten), außer Youtube.

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

(um Benutzer anzuzeigen, führen Sie adb shell pm list users aus) Dies ist ein Weg, um zu entfernen/deinstallieren (nicht vom Telefon, da es mit einem Factory Reset zurückkommt) fast ANY App OHNE Root EINSCHLIESSLICH der System-Apps (Hinweis: Die lästige Update-App, die Ihr Telefon aktualisiert oder nicht, finden Sie, wenn Sie nach "ccc" suchen)

150voto

Faris Al-Abed Punkte 1421

Es ist keine Wurzel erforderlich:

Dieser Code wird 3rd-Party-Pakete Pfad mit dem Namen, so dass Sie leicht identifizieren können Ihre APK

adb shell pm list packages -f -3

wird die Ausgabe sein

Paket:/Daten/App/XX.XX.XX.apk=YYY.YY.YY

Ziehen Sie nun dieses Paket mit dem unten stehenden Code:

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

wenn Sie das obige cmd in C:>\ dann finden Sie dieses Paket dort.

67voto

Farid Haq Punkte 2865

Schritte zum Herunterladen der APK vom Gerät auf den Desktop

A) Vergewissern Sie sich, dass Ihr Gerät läuft (Emulator/echtes Gerät). Verwenden Sie zur Überprüfung diesen Befehl

adb devices

B) Wählen Sie alle verfügbaren Pakete aus, die auf Ihrem Gerät installiert sind. Sie können den Befehl grep verwenden, um ein bestimmtes Paket auszuwählen, das Sie herunterladen möchten.

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

Ausgabe (Liste der verfügbaren Pakete)

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) Kopieren Sie das Paket (das Sie herunterladen möchten) vom obigen Link. In unserem Fall habe ich dieses Paket (com.example.myapplication) gewählt

Syntax : 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) Schließlich, Um APK von Ihrem (Emulator/echten Gerät) herunterzuladen

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

Beispiel: Versuchen Sie, diese Datei CertInstaller.apk auf Ihrem lokalen Rechner (Mac) zu laden.

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

E) Bestätigen Sie in Ihrem lokalen Verzeichnis

ls -la /Users/$(whoami)/Documents/

60voto

Ich habe gesehen, dass es viele Lösungen für dieses Problem gibt, entweder man muss sein Telefon rooten oder eine App installieren. Dann nach viel googeln habe ich dies Lösung für nicht verwurzelte/verwurzelte Telefone.

Auflisten, welche Anwendungen Sie bisher erhalten haben.

adb shell pm list packages

Dann können Sie eine App auswählen, zum Beispiel Twitter

adb backup -apk com.twitter.android

Wichtig dabei ist, dass Sie kein Passwort für die Verschlüsselung Ihres Backups einrichten.

Dadurch wird eine Datei mit dem Namen backup.ap erstellt, die Sie aber immer noch nicht öffnen können. Dazu müssen Sie sie erneut entpacken, aber mit dem Befehl dd.

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

Danach müssen Sie nur noch den tar-Inhalt extrahieren, und das war's.

Ich hoffe, es funktioniert bei euch

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X