Wie kann ich die Datei mit den freigegebenen Einstellungen mit Android Studio anzeigen?


99

Ich verwende gemeinsame Einstellungen, um bestimmte Werte für meine App zu speichern. Ich möchte die Datei sehen, in der die Informationen tatsächlich auf meinem Telefon gespeichert sind. Ich habe in Eclipse viele Möglichkeiten gefunden, dies zu tun, aber ich debugge in Android Studio. Mein Telefon ist gerootet. Ich habe gelesen, dass Root-Zugriff wichtig ist, um diese Dateitypen zu lesen. Wenn es keine Möglichkeit gibt, werde ich nachschlagen, wie ich über mein Programm auf die Informationen zugreifen kann, und sie dann an log cat ausgeben. Hoffentlich kann ich die Datei einfach direkt auf dem Telefon anzeigen, da sie viel einfacher ist. Vielen Dank.


Installieren Sie den ES File Explorer und aktivieren Sie das Root-Browsing. Sie können es dann direkt am Telefon öffnen.
CurlyPaul

3
Versuchen Sie, die Datei mit adb pull auf den Desktop zu holen. adb pull /data/data/<packagename>/shared_prefs/prefs.xml
Lal

2
ODER gehen Sie zum Datei-Explorer und suchen Sie im Dateibaum den Datenordner Ihrer App unter /data/data/com.your-package/shared_prefs. Die Voreinstellungsdatei wird dort als XML angezeigt. Kopieren Sie es vom Gerät und genießen Sie. In der oberen rechten Ecke der Datei-Explorer-Ansicht befinden sich zwei Symbolschaltflächen - eine mit einer Festplatte und eine mit einem Mobiltelefon. Mit diesen Schaltflächen können Sie Dateien vom bzw. zum Telefon / Emulator kopieren.
Lal

1
Aus irgendeinem Grund heißt meine bevorzugte XML-Datei <PACKAGENAME> _preferences.xml
JPM

Antworten:


93

Starten Sie in Android Studio den Android-Geräte-Monitor, gehen Sie zum Datei-Explorer und durchsuchen Sie "/ data / data / <Name Ihres Pakets> / shared_prefs /". Dort finden Sie das XML ... und Sie können es auch zur Überprüfung kopieren.

Wenn Sie ein Gerät ohne Rootberechtigung haben, ist dies nicht direkt in Android Studio möglich. Sie können jedoch auf die Datei zugreifen, adb shellsolange Ihre Anwendung die Debug-Version ist.

adb shell
run-as your.app.id
chmod 777 shared_prefs/your.app.id_preferences.xml
exit # return to default user
cp /data/data/your.app.id/shared_prefs/your.app.id_preferences.xml /sdcard

Danach können Sie die Datei mit adb aus dem Verzeichnis / sdcard ziehen.


Ich kann über den Gerätemonitor nicht auf diesen Ordner zugreifen. Ist Root erforderlich?
Marian Klühspies

2
Die zweite Methode funktioniert für Geräte ohne Rootberechtigung. Nachdem Sie die Datei auf die SD-Karte kopiert haben, können Sie adb beenden und adb pull "/ sdcard / your_preferences_file" ausführen. In Ihrem aktuellen Verzeichnis erhalten Sie eine XML-Datei, die Sie überprüfen können.
Bebop_

4
Sie können diese Informationen tatsächlich von einem Emulator ohne Root abrufen, wenn Sie auf diese Weise debuggen können. Wenn Sie sich auf einem physischen Gerät befinden, benötigen Sie root.
Booger

3
Suchen Sie in der unteren rechten Ecke von AndroidStudio nach dem Gerätedateie-Explorer. Es bietet Ihnen einen einfachen Zugriff auf das Gerätedateisystem
Maksim Turaev

2
Mit dem
Gerätedateie-

76

Der Gerätedateie-Explorer, der Teil von Android Studio 3.x ist, eignet sich hervorragend zum Durchsuchen Ihrer bevorzugten Datei (en), Cache-Elemente oder Datenbank.

  1. Shared Preferences / data / data // shared_prefs-Verzeichnis

Geben Sie hier die Bildbeschreibung ein

Es sieht ungefähr so ​​aus

Geben Sie hier die Bildbeschreibung ein

So öffnen Sie den Gerätedateie-Explorer:

Klicken Sie auf Ansicht> Werkzeugfenster> Gerätedateie-Explorer oder klicken Sie in der Werkzeugfensterleiste auf die Schaltfläche Gerätedatei-Explorer.

Geben Sie hier die Bildbeschreibung ein


13
Öffnen Sie den Gerätedateie-Explorer (rechts unten auf dem Bildschirm).
Apit John Ismail

47

Stetho

Sie können http://facebook.github.io/stetho/ verwenden, um auf Ihre freigegebenen Einstellungen zuzugreifen, während sich Ihre Anwendung im Debug-Modus befindet. Keine Wurzel

Eigenschaften:

  1. Gemeinsame Einstellungen anzeigen und bearbeiten
  2. Anzeigen und Bearbeiten von sqLite db
  3. Ansicht Ansicht Hierarchie
  4. Überwachen Sie http-Netzwerkanforderungen
  5. Stream vom Bildschirm des Geräts anzeigen
  6. und mehr....

Geben Sie hier die Bildbeschreibung ein

Grundeinstellung:

  1. im build.gradle hinzufügen compile 'com.facebook.stetho:stetho:1.5.0'
  2. in der Anwendung onCreate () hinzufügen Stetho.initializeWithDefaults(this);
  3. Gehen Sie in Chrome auf Ihrem PC zu Chrome: // inspect /

UPDATE: Flipper

Flipper ist eine neuere Alternative von Facebook. Es hat mehr Funktionen, aber für die Zeit ist das Schreiben nur für Mac verfügbar, etwas schwieriger zu konfigurieren und es fehlt das Debuggen von Datenbanken, während der extrem verbesserte Layout-Inspektor erweitert wird

Sie können auch den @ Jeffrey-Vorschlag verwenden:

  • Öffnen Sie den Gerätedateiexplorer (rechts unten auf dem Bildschirm).
  • Gehen Sie zu data / data / com.yourAppName / shared_prefs

Kann das mit Emulatoren funktionieren? Ich kann nicht scheinen, dass es funktioniert
EduardoMaia

@EduardoMaia Es sollte. Ich benutze es jeden Tag mit Emulator. Sie können eine Frage mit Screenshots erstellen, daher werde ich versuchen, Ihnen zu helfen.
Maksim Turaev

@EduardoMaia Sie können Folgendes versuchen: 1. Klonen Sie das Facebook-Stetho-Repository. 2. Importieren Sie dieses Projekt in das NEUESTE Android Studio (Datei-> Importieren -> "Einstellungen auswählen.gradle"). 3. Stimmen Sie zu, das Gradle-Plugin zu aktualisieren. 4. Starten Sie den Android Emulator (in meinem Fall API 24). 5. Starten Sie stetho-sample (wählen Sie es im Menü "Konfiguration ausführen" neben dem grünen Pfeil aus. 6. Öffnen Sie auf Ihrem PC den neuesten Chrome-Browser. 7. Gehen Sie zu Chrome: // Adresse 8 überprüfen. Wählen Sie Ihren Emulator in der Liste aus. 9. Gehen Sie im geöffneten Fenster zur Registerkarte Ressourcen. 10. Suchen Sie Ihre freigegebenen Einstellungen im Menü LocalStorage auf der linken Seite. 11. Spielen Sie in der Anwendung mit dem Booleschen Flag
Maksim Turaev

Ich habe mein Problem gestern behoben, ohne die freigegebenen Einstellungen anzeigen zu müssen. Aber ich werde es an einem anderen Tag Schritt für Schritt versuchen. Vielen Dank.
EduardoMaia

14

Sie können einfach eine spezielle Aktivität zum Debuggen erstellen:

@SuppressWarnings("unchecked")
public void loadPreferences() {
// create a textview with id (tv_pref) in Layout.
TextView prefTextView;
prefTextView = (TextView) findViewById(R.id.tv_pref);
    Map<String, ?> prefs = PreferenceManager.getDefaultSharedPreferences(
            context).getAll();
    for (String key : prefs.keySet()) {
        Object pref = prefs.get(key);
        String printVal = "";
        if (pref instanceof Boolean) {
            printVal =  key + " : " + (Boolean) pref;
        }
        if (pref instanceof Float) {
            printVal =  key + " : " + (Float) pref;
        }
        if (pref instanceof Integer) {
            printVal =  key + " : " + (Integer) pref;
        }
        if (pref instanceof Long) {
            printVal =  key + " : " + (Long) pref;
        }
        if (pref instanceof String) {
            printVal =  key + " : " + (String) pref;
        }
        if (pref instanceof Set<?>) {
            printVal =  key + " : " + (Set<String>) pref;
        }
        // Every new preference goes to a new line
        prefTextView.append(printVal + "\n\n");     
    }
}
// call loadPreferences() in the onCreate of your Activity.

Das war sehr nützlich, aber es passte nicht ganz zu meinen Bedürfnissen. Ich habe eine Bearbeitung hinzugefügt, die mehrere gemeinsam genutzte
Einstellungsdateien

Danke, ich habe nur Probleme herauszufinden, wie ich die Änderungen akzeptieren soll
cYrixmorten

Es wurde von anderen geleugnet. Sie sagten, es sollte seine eigene Antwort sein, also habe ich es als neue Antwort angegeben. Ich habe Ihre Antwort ursprünglich nur bearbeitet, weil ich nur das tun konnte, was ich getan habe, als ich Ihre Antwort gesehen habe.
Christopher Rucinski

Okay :-) Ja, mir ist danach eingefallen, dass es von anderen überprüft werden musste
cYrixmorten

13

Android Studio -> Gerätedateie-Explorer (rechte untere Ecke) -> Daten -> Daten -> {package.id} -> Shared-Prefs

Hinweis: Sie müssen das mobile Gerät mit Android Studio verbinden und die ausgewählte Anwendung sollte sich im Debug-Modus befinden


10

Dies ist ein alter Beitrag, aber ich denke, ich sollte hier eine grafische Antwort einfügen, da es um das Anzeigen SharedPreferences.xmlvon Android Studio geht. Also los geht's.

Gehen Sie zu Extras -> Android-Gerätemonitor. Öffnen Sie den Gerätemonitor, indem Sie darauf klicken.

Geben Sie hier die Bildbeschreibung ein

Anschließend müssen Sie im Gerätemonitor die Registerkarte Datei-Explorer auswählen. Suchen Sie den Datenordner und einen anderen Datenordner darin. Es enthält einen Ordner mit dem Namen Ihres Anwendungspakets und den gewünschten Ordner SharedPreferences.xml.

Geben Sie hier die Bildbeschreibung ein

Wählen Sie die SharedPreferences.xmlDatei aus und ziehen Sie sie mit der Schaltfläche in der oberen rechten Ecke des obigen Bilds auf Ihren Computer.

Ich habe einen Geräteemulator verwendet.


1
Dank Ihres Beitrags habe ich von developer.android.com/studio/debug/device-file-explorer erfahren. Dies ist die neue Methode, um dasselbe zu tun, was Sie hier erklären.
Malarres

Schön zu wissen, dass ich helfen kann! Gern geschehen.
Reaz Murshed

4

Einzelne oder mehrere gemeinsam genutzte Voreinstellungsdateien

Wenn Sie mehrere Shared PreferenceDateien haben, können Sie hier alle anzeigen. Sie können jedoch auch nur einen Dateinamen übergeben.

  • loadSharedPrefs("pref_name");

  • loadSharedPrefs("shared_pref1", "shared_pref2", "shared_pref3");

Wählen Sie eine der folgenden Optionen, um Ihren Anforderungen gerecht zu werden ...

Einzeltypwerte

public void loadSharedPrefs(String ... prefs) {

    // Logging messages left in to view Shared Preferences. I filter out all logs except for ERROR; hence why I am printing error messages.

    Log.i("Loading Shared Prefs", "-----------------------------------");
    Log.i("----------------", "---------------------------------------");

    for (String pref_name: prefs) {

        SharedPreferences preference = getSharedPreferences(pref_name, MODE_PRIVATE);
        for (String key : preference.getAll().keySet()) {

            Log.i(String.format("Shared Preference : %s - %s", pref_name, key),
                  preference.getString(key, "error!"));

        }

        Log.i("----------------", "---------------------------------------");

    }

    Log.i("Finished Shared Prefs", "----------------------------------");

}

Werte mit mehreren Typen

public void loadSharedPrefs(String ... prefs) {

    // Define default return values. These should not display, but are needed
    final String STRING_ERROR = "error!";
    final Integer INT_ERROR = -1;
    // ...
    final Set<String> SET_ERROR = new HashSet<>(1);

    // Add an item to the set
    SET_ERROR.add("Set Error!");

    // Loop through the Shared Prefs
    Log.i("Loading Shared Prefs", "-----------------------------------");
    Log.i("------------------", "-------------------------------------");

    for (String pref_name: prefs) {

        SharedPreferences preference = getSharedPreferences(pref_name, MODE_PRIVATE);
        Map<String, ?> prefMap = preference.getAll();

        Object prefObj;
        Object prefValue = null;

        for (String key : prefMap.keySet()) {

            prefObj = prefMap.get(key);

            if (prefObj instanceof String) prefValue = preference.getString(key, STRING_ERROR);
            if (prefObj instanceof Integer) prefValue = preference.getInt(key, INT_ERROR);
            // ...
            if (prefObj instanceof Set) prefValue = preference.getStringSet(key, SET_ERROR);

            Log.i(String.format("Shared Preference : %s - %s", pref_name, key),
                  String.valueOf(prefValue));

        }

        Log.i("------------------", "-------------------------------------");

    }

    Log.i("Loaded Shared Prefs", "------------------------------------");

}

}

Logcat-Ausgabe

Meine Shared PreferenceWerte sind alle String, aber dies ist die Ausgabe mit einer der beiden oben genannten Methoden ...

I/Loading Shared Prefs -----------------------------------
I/------------------﹕ -------------------------------------
I/Shared Preference : FAVORITE - 135397 Jurassic World
I/Shared Preference : FAVORITE - 87101 Terminator Genisys
I/Shared Preference : FAVORITE - 177677 Mission: Impossible  Rogue Nation
I/------------------﹕ -------------------------------------
I/Shared Preference : WATCHED - 177677 Mission: Impossible  Rogue Nation
I/Shared Preference : WATCHED - 157336 Interstellar
I/Shared Preference : WATCHED - 135397 Jurassic World
I/Shared Preference : WATCHED - 87101 Terminator Genisys
I/------------------﹕ -------------------------------------
I/Shared Preference : WILL_WATCH - 211672 Minions
I/Shared Preference : WILL_WATCH - 102899 Ant-Man
I/------------------﹕ -------------------------------------
I/Loaded Shared Prefs ------------------------------------

4

Eine andere einfache Möglichkeit wäre die Verwendung einer Root-Explorer-App auf Ihrem Telefon.

Gehen /data/data/package name/shared preferences folder/name of your preferences.xmlSie dann zu , Sie können den ES File Explorer verwenden und gehen Sie zu rootIhrem Gerät, nicht sd card.


1
Dies gibt keine Antwort auf die Frage. Um einen Autor zu kritisieren oder um Klärung zu bitten, hinterlassen Sie einen Kommentar unter seinem Beitrag. Sie können jederzeit Ihre eigenen Beiträge kommentieren. Sobald Sie einen ausreichenden Ruf haben, können Sie jeden Beitrag kommentieren . - Aus dem Rückblick
Luca Detomi

@ LucaDetomi Sie wissen, was ich hier
raus

Ihre Antwort wurde als zu kurz markiert. Die Antworten sollten Details enthalten, anhand derer Benutzer verstehen können, warum dies eine gute und möglicherweise die beste Antwort sein kann. Ich schlage vor, dass Sie weitere Details hinzufügen, die helfen, Prinzipien zu verstehen und sie möglicherweise an andere ähnliche Probleme anzupassen
Luca Detomi

4

In preferenceAndroid Studio freigegeben zu öffnen

Öffnen Sie die Geräte-Explorer-Datei auf der rechten Seite - Daten> Daten >> shared_prefs

Weitere Informationen finden Sie im angehängten Bild


3

In Android Studio 3 :

  • Öffnen Sie den Gerätedateie-Explorer (rechts unten auf dem Bildschirm).
  • Gehen Sie zu data / data / com.yourAppName / shared_prefs.

oder verwenden Sie die Android-Debug-Datenbank


2

Führen Sie die Anwendung in Emulator aus, nachdem Sie einige Daten eingefügt haben. Schließen Sie einfach die Anwendung.

Öffnen Sie nun den DDMS- oder Android-Monitor und wählen Sie Ihren Emulator aus. Auf der rechten Seite sehen Sie den Datei-Explorer, suchen darin nach dem Datenordner und suchen nach dem von Ihnen erstellten Anwendungspaket, in dem Sie die freigegebene Voreinstellungsdatei geöffnet finden Sie können die XML-Datei anzeigen, darauf klicken und auf die Schaltfläche zum Abrufen einer Datei von der Geräteschaltfläche in der oberen rechten Ecke klicken.

Die XML-Datei wird an Ihrem gewünschten Speicherort gespeichert. Anschließend können Sie sie mit einem beliebigen Editor wie Notepad ++ öffnen und die von Ihnen eingegebenen Daten anzeigen.


In Android Studio 3.0 fand ich es im Gerätedateie-Explorer > Daten> Daten> (Paketname)> shared_prefs> (Paketname) _preferences.xml
Josselin

2

Folgen Sie im Gerätedateie-Explorer dem folgenden Pfad: -

/data/data/com.**package_name**.test/shared_prefs/com.**package_name**.test_preferences.xml

1

Ich finde diese Befehle in der Konsole immer nützlich:

  1. Suchen Sie den richtigen Dateinamen

    adb shell

    ls /data/data/com.your.package/shared_prefs

  2. Holen Sie sich die Datei in das lokale Verzeichnis

    adb pull /data/data/com.your.package/shared_prefs/the_file_you_want $local_dir

  3. Überprüfen Sie es in Ihrem $local_dir.


1

Wenn Sie einen Emulator verwenden, können Sie die sharedPrefs.xmlDatei auf dem Terminal mit den folgenden Befehlen anzeigen:

  • adb root
  • cat /data/data/<project name>/shared_prefs/<xml file>

Danach können Sie verwenden, adb unrootwenn Sie das virtuelle Gerät nicht als Root verwenden möchten.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.