So ziehen Sie die APKs von meinem Android-Handy

Ich habe ein gerootetes Android-Handy. Ich versuche, die Anwendungen aus /system/app/ zu ziehen. Dies kopiert jedoch einfach nicht die apk. Was ich probiert habe.

    adb shell
    su
    cd data
    cd app
    ls

Viele Bewerbungen werden gezeigt. Aber wenn ich versuche, es zu ziehen, sagt es

adb pull /data/app test

pull: building file list...
0 files pulled. 0 files skipped.

Wenn ich versuche, es aus dem System/der App zu ziehen, zieht es es, aber es wird keine Datei auf meinem Computer erstellt. Ich habe den Dateinamen angegeben, mit und ohne probiert. Könnte mir bitte jemand sagen was ich falsch mache?

Ich habe es auch einzeln mit bestimmten apks ausprobiert. Aber auch das geht nicht.

Ich bin sie durchgegangen. Mein Problem ist, dass ich adb pull nicht verwenden kann, um die apk auf meinen PC zu kopieren.

Antworten (3)

Wenn Sie verwenden su, um Root-Rechte zu erhalten, wenn Sie in die Shell einsteigen (was Sie angegeben haben), bedeutet dies, dass Sie standardmäßig nicht root auf der Shell sind. adb pullschlägt mit dieser Fehlermeldung fehl, da es keine Berechtigung hat, das Verzeichnis zu indizieren und den Inhalt abzurufen.

Sie sollten zuerst adbauf Ihrem Gerät neu starten können adb root:

adb root
adb pull /data/app/

Und ein vollständig anschauliches Beispiel, um zu zeigen, dass dies das wahrscheinliche Problem ist (ich habe es /data/miscnur verwendet, weil es kleiner ist):

[09:27:23] ~/adb-test $ adb pull /data/misc/
pull: building file list...
0 files pulled. 0 files skipped.  <-------------- Same issue because we're not root yet!
[09:27:49] ~/adb-test $ adb root
[09:27:56] ~/adb-test $ adb pull /data/misc/
pull: building file list...
... Snip all of the individual files here ...
24 files pulled. 0 files skipped.
65 KB/s (7732 bytes in 0.115s)
[09:27:59] ~/adb-test $

Eine weitere Option für einen Neustart adbals Root ist die adbd insecure App von Chainfire . Einige ROMs unterstützen den adb rootBefehl jedoch nicht, da sie nicht dafür gebaut wurden. Dies ist beispielsweise der Fall, wenn Sie ein Standard-ROM rooten, ohne ein benutzerdefiniertes zu installieren.

Es besagt, dass adbd in Produktions-Builds nicht als Root ausgeführt werden kann
Klingt so als ob irgendwas mit root nicht stimmt. Welches Gerät ist das und wie wurde es gerootet?
Außerdem scheinen einige Treffer in der Google-Suche nach diesem Fehler darauf hinzudeuten, dass dies auch mit verschiedenen USB-Treibern behoben werden könnte.
@Sab: Sie können stattdessen die unsichere adbd-App ausprobieren , obwohl sie eine geringe Gebühr kostet. Ihr ROM unterstützt den adb rootBefehl möglicherweise leider nicht. Eine andere Option wäre zu versuchen, entweder ein Boot-Image zu finden, das einen unsicheren adbdStart unterstützt, oder ein völlig anderes ROM.
@Chahk- Soweit ich weiß, ist das Telefon ordnungsgemäß gerootet und ich habe es mit play.google.com/store/apps/… überprüft .
@eldarerathis Also installiere ich einfach die apk auf dem Telefon und starte sie und es sollte funktionieren? Oder ist es eine bessere Option, nur eine benutzerdefinierte Rom zu verwenden
@Sab: Theoretisch ja, Sie installieren einfach die App und führen sie aus, um sie adbdals Root neu zu starten (Sie erhalten ein 15-minütiges Rückerstattungsfenster, wenn Sie sie testen möchten). Ein benutzerdefiniertes ROM wäre kostenlos und Sie müssten sich keine Gedanken über die Verwendung der App machen, aber ein bisschen mehr Aufwand für die Installation. Sie könnten wahrscheinlich in beide Richtungen gehen, aber ich denke, das adb pullsind leider die einzigen wirklichen Optionen, um mit eingeschränkten Verzeichnissen zu arbeiten.
@Sab: Jetzt, wo ich mir den XDA-Thread noch einmal ansehe, hat Chainfire einen kostenlosen Download für die App in den Foren bereitgestellt (unten im ersten Beitrag), sodass Sie sie ohne Bedenken ausprobieren können.
Ja. Das ist mir jetzt klar geworden. Aber der Erfahrung halber denke ich, dass ich ein benutzerdefiniertes ROM installieren werde. Danke für die Hilfe

Sie müssen adb nicht als root ausführen, um die eigentlichen Dateien abzurufen, aber Sie müssen es als root ausführen, um das Verzeichnis aufzulisten, in dem sie sich befinden (was eine implizite Anforderung wäre, um das gesamte Verzeichnis abzurufen).

Wenn Sie es ohne Root tun möchten, ziehen Sie /data/system/packages.xml und extrahieren Sie die Codepfade der Anwendungen von dort, dann ziehen Sie sie einzeln mit ihren vollständigen Pfadnamen von adb. Das könnte eine großartige Gelegenheit sein, etwas über grep und xargs zu lernen – oder Ihre bevorzugte hostseitige Skriptsprache zu verwenden.

Stellen Sie zunächst sicher, dass Sie die neueste Version des ADB-Dienstprogramms haben, indem Sie die neueste Android SDK-Version von hier herunterladen .

Die Syntax ist adb pull <path to apk> <path on PC>. Versuchen Sie für den Abschnitt "Pfad auf dem PC", den vollständigen Pfad mit Laufwerksbuchstaben wie folgt anzugeben:

adb pull /data/app/myapp.apk c:\test

Um alle Apps aus dem /data/app-Verzeichnis zu ziehen, versuchen Sie Folgendes:

adb pull /data/app/ c:\test

Lassen Sie mich die adb aktualisieren und versuchen. Syntaxweise glaube ich nicht, dass ich einen Fehler mache.
Ihnen fehlte das " /" nach dem Quellpfad, wenn Sie versuchten, das gesamte Verzeichnis abzurufen.
Ich denke, das war ein Tippfehler, außerdem funktioniert es auch nicht mit einzelnen APKs. Mein System/meine Anwendung zeigt, dass diese vielen Bytes übertragen wurden, aber ich sehe nichts in dem Verzeichnis, in dem ich adb pull oder anderswo ausführe.
Eigentlich nein, das Schließen /ist doch nicht nötig.