Ich habe mit adb und den folgenden Befehlen eine Verbindung zu meinem Live-Gerät hergestellt:
C:\>adb -s HT829GZ52000 shell
$ ls
ls
sqlite_stmt_journals
cache
sdcard
etc
system
sys
sbin
proc
logo.rle
init.trout.rc
init.rc
init.goldfish.rc
init
default.prop
data
root
dev
$ cd data
cd data
$ ls
ls
opendir failed, Permission denied
Ich war überrascht zu sehen, dass mir der Zugang verweigert wurde. Wie kommt es, dass ich mit der folgenden Befehlszeile nicht in den Verzeichnissen navigieren kann?
Wie erhalte ich Root-Zugriff auf meinem Telefon?
Antworten:
Es gibt zwei Dinge zu beachten, wenn Sie alles auf Ihrem Gerät durchsuchen möchten.
adb root
quelle
Ab API-Stufe 8 (Android 2.2) können Sie für die debuggbare Anwendung (die von Android Studio ständig erstellt wurde, sofern der Release-Build nicht angefordert wurde) den Shell-
run-as
Befehl verwenden, um einen Befehl oder eine ausführbare Datei als einen bestimmten Benutzer / eine bestimmte Anwendung auszuführen oder wechseln Sie einfach zur UID Ihrer Anwendung, damit Sie auf deren Datenverzeichnis zugreifen können .Listen Sie den Verzeichnisinhalt Ihrer App auf:
Wechseln Sie zur UID von com.yourapp und führen Sie alle weiteren Befehle mit dieser UID aus (bis Sie aufrufen
exit
):Hinweis 1 : Bei einigen HTC Desire-Telefonen ist ein Problem bekannt . Aufgrund eines nicht standardmäßigen Besitzers / einer nicht standardmäßigen Berechtigung des
/data/data
Verzeichnisses kann derrun-as
Befehl auf diesen Telefonen nicht ausgeführt werden.Hinweis 2 : Wie in den Kommentaren von @Avio erwähnt:
run-as
Probleme gibt es auch mit Samsung Galaxy S-Handys, auf denen Cyanogenmod in jeder Version (von 7 bis 10.1) ausgeführt wird, da auf dieser Plattform/data/data
ein Symlink zu/datadata
. Eine Möglichkeit, das Problem zu lösen, besteht darin, den Symlink durch das eigentliche Verzeichnis zu ersetzen (dies erfordert normalerweise normalerweise Root-Zugriff).quelle
run-as com.mypackage
. Das Problem, auf das ichsqlite3 /data/data/com.mypackage/databases/mydb
gestoßen bin, lautet "sqlite3: Berechtigung verweigert". Kann sqlite3 nur von root ausgeführt werden?Haben Sie ein gerootetes Telefon, bevor wir anfangen ? Wenn nicht, empfehle ich dringend, dass es Zeit ist, den Sprung zu machen. 99% der Tutorials, die Ihnen dabei helfen, setzen voraus, dass Sie ein gerootetes Telefon haben (ich weiß, dass ich ungefähr eine Stunde lang nach einer Möglichkeit gesucht habe, dies zu tun, ohne ein gerootetes Telefon zu haben. Ich konnte keine finden.) ) Auch wenn Sie darüber nachdenken, muss Ihr iPhone gerootet sein, um dieselbe Aufgabe zu erledigen. Es ist also völlig vernünftig. Mehr zum Rooten am Ende der Antwort.
von Ihrem Befehlszeilentyp:
Damit gelangen Sie zu Ihrer Android-Shell-Befehlszeile (Sie sollten ungefähr Folgendes sehen: Geben Sie
shell@android:/ $
jetzt Folgendes ein :Dies sollte Sie direkt in das Datenverzeichnis von
com.domain.yourapp
:Wenn dies nicht der Fall ist (dh wenn Sie eine Fehlermeldung erhalten), haben Sie wahrscheinlich kein gerootetes Telefon oder Sie haben Ihre Root-Benutzerrechte nicht verwendet. Um Ihre Root-Benutzerrechte zu verwenden, geben Sie
su
in die adb-Befehlszeile ein und sehen Sie, was passiert. Wenn Sie eine Fehlermeldung erhalten, ist Ihr Telefon nicht gerootet. Wenn dies nicht der Fall ist, rooten Sie es zuerst und fahren Sie dann mit diesen Anweisungen fort.Von dort aus können
ls
Sie eingeben und alle Verzeichnisse einschließlich der Datenbank sehen:Danach können Sie sqlite3 verwenden, um die Datenbank zu durchsuchen. Wenn Sie sie nicht installiert haben (Sie können sie durch Eingabe herausfinden
sqlite3
, wenn Sie sie erhalten, müssencommand not found
Sie sie installieren. Befolgen Sie die Anweisungen hier, um sqlite zu installieren .Informationen zum Rooten: Wenn Sie Ihr Telefon noch nie zuvor gerootet haben und sich Sorgen darüber machen, dass es Ihr Telefon verschraubt, kann ich Ihnen mit vollem Vertrauen sagen, dass Sie sich keine Sorgen machen müssen. Es gibt unzählige schnelle und einfache Tutorials zum Rooten von Telefonen für so ziemlich alle neuen und alten Modelle, und Sie können Ihr Telefon auch dann rooten, wenn Sie einen Mac haben (ich habe mein s3 mit meinem Mac gerootet).
quelle
run-as
arbeiten zu können. Ich habe es gerade auf einem Serien-Galaxy Nexus S. versuchtbuild the application as debuggable (either by building it with the Eclipse, or ant debug command)
klingen Anweisungen wie für Sie vielleicht trivial, aber sie schüchtern mich irgendwie ein. Ich denke, meine Antwort ist eher für Leute, die mit dem Rooten ihrer Android-Handys vertraut sind, sich aber in der Welt der Android-Entwickler nicht gut auskennen. Aber ich bin froh, dass wir diese Diskussion führen. Ich möchte, dass die Leser meiner Antwort sich der anderen Alternativen bewusst werden, die nicht verwurzelt sind$ adb Shell
$ cd / data
$ ls
opendir fehlgeschlagen, Erlaubnis verweigert
Du solltest das tun:
OK!
quelle
Ich hatte ein ähnliches Problem, als ich versuchte, auf einem verwurzelten Samsung Galaxy S zu arbeiten. Ich gab einen Befehl über die Computer-Shell aus
schlägt mit der Meldung "Kann nicht als Root in Produktions-Builds ausgeführt werden" fehl. Hier ist eine einfache Methode, mit der Sie root werden können.
Geben Sie anstelle der vorherigen Befehle die folgenden zwei Befehle nacheinander aus
Wenn sich die Eingabeaufforderung nach dem ersten Befehl wie oben gezeigt von '>' in '$' geändert hat, bedeutet dies, dass Sie die ADB-Shell-Umgebung aufgerufen haben. Wenn sich die Eingabeaufforderung nach dem Ausgeben des zweiten Befehls später in '#' geändert hat, bedeutet dies, dass Sie jetzt root sind. Jetzt können Sie als Root mit Ihrem Gerät alles tun, was Sie wollen.
Problem, um zur "sicheren" Shell zurückzukehren
Sie werden sehen, dass die Eingabeaufforderung '$' erneut angezeigt wird, was bedeutet, dass Sie sich als Benutzer und nicht als Root in der ADB-Shell befinden.
quelle
adb shell + su
die nervige Erlaubnis Sache für immer gelöst. Ich hatte ein Problem mitsu: not found
Android 4.3, aber seit ich auf 4.4.2 aktualisiert habe, ist das Problem verschwunden. 4.3 scheint Probleme zu haben.Ich hatte auch große Probleme damit. Ich verstehe die Berechtigung und den Root-Lauf immer noch nicht vollständig, aber dies funktionierte für mich (eine der vorherigen Antworten teilweise), um die Datenbankdatei aus / data / data / [Paketname] /databases/my_db.db zu kopieren. Das Ausführen von Shell-Root oder su in Shell aus irgendeinem Grund hat nicht funktioniert, das Kopieren der Datenbankdatei (ich konnte jedoch zum Verzeichnis navigieren) und sqlite3 auch nicht .
Das hat also funktioniert! In der DOS-Eingabeaufforderung:
Gehen Sie nun zum SDCARD-Verzeichnis und holen Sie sich Ihre Datei db_copy.db. Auch das war versteckt, aber ich habe es geschafft, es per E-Mail zu versenden. Zurück in Windows konnte ich die Datenbankdatei mit dem SQLite-Datenbankbrowser öffnen. :) :)
quelle
Im Folgenden sind die beiden Schritte aufgeführt, um Root-Zugriff zu erhalten:
quelle
Produktions-Builds können / data / app nicht eingeben
Möglicherweise muss der rechte Eigentümer geändert werden, um es zu betreiben.
quelle
Das Problem könnte sein, dass wir in den Entwicklungsoptionen der neuesten CMs speziell adb root-Zugriff in den Entwicklungsoptionen gewähren müssen. Hier ist, was ich getan habe.
nach Änderung der Entwicklungsoptionen ...
quelle
Wenn Sie das Anwendungspaket kennen, können Sie
cd
direkt in diesen Ordner wechseln.z.B
cd data/data/com.yourapp
Dadurch werden Sie in ein Verzeichnis
read/writable
verschoben, in dem Sie die Dateien nach Bedarf ändern können. Da der Ordner auf dem identisch istemulator
, können Sie damit den Ordnerpfad abrufen.quelle
Wenn Sie nur Ihre DB & Tabellen sehen möchten, ist es am einfachsten, sie zu verwenden
Stetho
. Ziemlich cooles Tool für jeden Android-Entwickler, derSQLite
buit by verwendetFacobook developed
.Steps to use the tool
Erstellen Sie jetzt Ihre Anwendung und wenn die App ausgeführt wird, können Sie Ihre App-Datenbank durchsuchen, indem Sie Chrome in der URL öffnen:
Screenshots davon sind wie folgt:
Hoffe das wird allen helfen! :) :)
quelle
Dies funktioniert, wenn Ihr Android-Gerät auf irgendeine Weise gerootet ist (nicht sicher, ob es für nicht gerootete Geräte funktioniert).
adb shell
- Zugriff auf die Shellsu
- werde der Superuser.Sie können jetzt alle Dateien in allen Verzeichnissen lesen.
quelle
Ohne das Gerät zu rooten, können Sie über den folgenden cmd-Screenshot auf die Dateien zugreifen:
Starten Sie die ADB mit cmd aus dem Ordner "platform-tools" entsprechend Ihrem Benutzer
Es kann sich in einem anderen Ordner befinden, je nachdem, wo Sie es installiert haben.
Zeigen Sie die Arbeitsgeräte an.
Zum Beispiel die Antwort auf den Befehl
Schreiben Sie den Befehl
es wird sich öffnen in
4. Wenn Sie auf Dateien zugreifen, listen Sie alle Dateien auf
und so weiter Wechseln Sie das Verzeichnis zu einem anderen Ort wie dem Datenordner
quelle
su
) funktioniert nicht / ist nicht zulässig. Testen mit Android 4.3.Wenn Sie sich im Shell-Verzeichnis des Geräts befinden. Renn einfach
Dann sollten Sie auf die Daten / Ordner zugreifen können.
quelle