Wie bekomme ich die apk-Datei von einem Android-Gerät? Oder wie übertrage ich die apk-Datei vom Gerät auf das System?
Antworten
Zu viele Anzeigen?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
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)
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.
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/
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
- See previous answers
- Weitere Antworten anzeigen