मैं एंड्रॉइड स्टूडियो का उपयोग करके साझा प्राथमिकताएं फ़ाइल कैसे देख सकता हूं?


101

मैं अपने ऐप के लिए कुछ मानों को संग्रहीत करने के लिए साझा प्राथमिकताओं का उपयोग कर रहा हूं। मैं उस फ़ाइल को देखना चाहूंगा जहां जानकारी वास्तव में मेरे फोन पर संग्रहीत है। मुझे ग्रहण पर ऐसा करने के कई तरीके मिले, लेकिन मैं एंड्रॉइड स्टूडियो पर डिबगिंग कर रहा हूं। मेरा फोन रूट हो गया है। मैंने पढ़ा कि इस प्रकार की फाइलों को पढ़ने के लिए रूट एक्सेस का होना महत्वपूर्ण है। अगर कोई रास्ता नहीं है, तो मैं देखूंगा कि मेरे कार्यक्रम के माध्यम से जानकारी तक कैसे पहुंचा जाए, फिर इसे कैट लॉग में आउटपुट करें। उम्मीद है, हालांकि, मैं सीधे फोन पर फ़ाइल देख सकता हूं क्योंकि यह बहुत सरल है। धन्यवाद।


ES फ़ाइल एक्सप्लोरर स्थापित करें और रूट ब्राउज़िंग सक्षम करें। आप इसे सीधे फोन पर खोल सकेंगे।
कर्लीपॉल

3
फ़ाइल को डेस्कटॉप पर लाने के लिए adb पुल का उपयोग करने का प्रयास करें। adb pull /data/data/<packagename>/shared_prefs/prefs.xml
लाल

2
या गोटो फाइल एक्सप्लोरर और फाइल ट्री में, /data/data/com.your-package/sared_prefs के तहत अपने ऐप के डेटा फ़ोल्डर को ढूंढें। प्राथमिकता फ़ाइल एक XML के रूप में वहाँ होगी। इसे डिवाइस से कॉपी करें और आनंद लें। फ़ाइल एक्सप्लोरर दृश्य के ऊपरी दाएं कोने में, दो आइकन बटन हैं - एक डिस्क के साथ और एक मोबाइल फोन के साथ। ये बटन आपको क्रमशः और फोन / एमुलेटर से फाइल कॉपी करने की अनुमति देंगे।
लाल

1
किसी कारण से मेरी प्रीफ़ेज़ xml फ़ाइल को <PACKAGENAME> _preferences.xml
JPM

जवाबों:


95

एंड्रॉइड स्टूडियो से, एंड्रॉइड डिवाइस मॉनिटर शुरू करें, फ़ाइल एक्सप्लोरर पर जाएं, और "/ डेटा / डेटा / <अपने पैकेज का नाम> / साझा करें / साझा करें" ब्राउज़ करें। आपको एक्सएमएल वहां मिलेगा ... और आप इसे निरीक्षण के लिए भी कॉपी कर सकते हैं।

यदि आपके पास एक गैर-रूटेड डिवाइस है, तो सीधे एंड्रॉइड स्टूडियो से ऐसा करना संभव नहीं है। हालाँकि, adb shellजब तक आपका एप्लिकेशन डीबग संस्करण है, तब तक आप फ़ाइल तक पहुँच सकते हैं ।

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

उसके बाद आप फ़ाइल को adb से sdcard डायरेक्टरी से खींच सकते हैं।


मैं इस फ़ोल्डर को डिवाइस मॉनिटर से एक्सेस नहीं कर सकता। क्या रूट की आवश्यकता है?
मैरिएन क्लॉस्प्सिज

2
गैर-निहित उपकरणों के लिए दूसरी विधि काम करती है। Sd कार्ड में फाइल कॉपी करने के बाद, आप adb से बाहर निकल सकते हैं और adb खींच सकते हैं "/ sdcard / your_preferences_file" और आपको अपनी वर्तमान निर्देशिका में एक xml फ़ाइल मिलेगी जिसका आप निरीक्षण कर सकते हैं।
बेबोप_

4
आप वास्तव में रूट के बिना एक एमुलेटर से इस जानकारी को पकड़ सकते हैं, यदि आप इस तरह से डिबग कर सकते हैं। यदि आप एक भौतिक उपकरण पर हैं, तो आपको रूट की आवश्यकता होगी।
बूगर

3
AndroidStudio के निचले दाएं कोने में डिवाइस फ़ाइल एक्सप्लोरर देखें। यह आप पर डिवाइस फाइल सिस्टम के लिए आसान पहुँच प्रदान करेगा
Maksim Turaev

2
डिवाइस फ़ाइल एक्सप्लोरर का उपयोग करते हुए, मैं रूट एक्सेस के बिना साझा प्राथमिकताओं का उपयोग कर सकता हूं
देवांश मौर्य

77

डिवाइस फ़ाइल एक्सप्लोरर जो एंड्रॉइड स्टूडियो 3.x का हिस्सा है, आपकी वरीयता फ़ाइल (एस), कैश आइटम या डेटाबेस की खोज के लिए वास्तव में अच्छा है।

  1. साझा वरीयताएँ / डेटा / डेटा // साझा_परिवर्तित निर्देशिका

यहां छवि विवरण दर्ज करें

यह कुछ इस तरह दिखता है

यहां छवि विवरण दर्ज करें

डिवाइस फ़ाइल एक्सप्लोरर को खोलने के लिए:

व्यू> टूल विंडोज> डिवाइस फाइल एक्सप्लोरर पर क्लिक करें या टूल विंडो बार में डिवाइस फाइल एक्सप्लोरर बटन पर क्लिक करें।

यहां छवि विवरण दर्ज करें


13
डिवाइस फ़ाइल एक्सप्लोरर (स्क्रीन का निचला दायां) खोलें।
एपित जॉन इस्माइल

47

Stetho

आप अपनी साझा प्राथमिकताओं को एक्सेस करने के लिए http://facebook.github.io/stetho/ का उपयोग कर सकते हैं, जबकि आपका एप्लिकेशन डीबग मोड में है। कोई जड़ नहीं

विशेषताएं:

  1. साझाकरण देखें और संपादित करें
  2. साइक्लाइट डीबी देखें और संपादित करें
  3. दृश्य देखें उत्तराधिकार
  4. http नेटवर्क अनुरोधों की निगरानी करें
  5. डिवाइस की स्क्रीन से स्ट्रीम देखें
  6. और अधिक....

यहां छवि विवरण दर्ज करें

बुनियादी ढांचा:

  1. बिल्ड.ग्रेड में जोड़ें compile 'com.facebook.stetho:stetho:1.5.0'
  2. एप्लिकेशन के ऑनक्रिएट () में जोड़ें Stetho.initializeWithDefaults(this);
  3. क्रोम में अपने पीसी पर क्रोम पर जाएं : // निरीक्षण /

अद्यतन: फ्लिपर

फ्लिपर फेसबुक का एक नया विकल्प है। इसमें और अधिक विशेषताएं हैं, लेकिन समय के लिए लेखन केवल मैक के लिए उपलब्ध है, कॉन्फ़िगर करने के लिए थोड़ा कठिन है और डेटा बेस डिबगिंग का अभाव है, जबकि अत्यधिक बढ़ाया लेआउट इंस्पेक्टर के लिए

आप @ जेफ्री सुझाव का भी उपयोग कर सकते हैं:

  • डिवाइस फ़ाइल एक्सप्लोरर खोलें (स्क्रीन का निचला भाग)
  • डेटा / डेटा / com.yourAppName / share_prefs पर जाएं

क्या यह एमुलेटर पर काम कर सकता है? मैं इसे काम करने के लिए प्रतीत नहीं कर सकता
EduardoMaia

@EduardoMaia इसे करना चाहिए। मैं हर दिन एमुलेटर के साथ इसका उपयोग करता हूं। आप स्क्रीनशॉट के साथ एक सवाल बना सकते हैं, इसलिए मैं आपकी मदद करने की कोशिश करूंगा।
मक्सिम तुराएव

@EduardoMaia आप निम्न कार्य करने का प्रयास कर सकते हैं: 1. क्लोन फेसबुक स्टेथो रिपॉजिटरी। 2. इस परियोजना को नवीनतम एंड्रॉइड स्टूडियो में आयात करें (फ़ाइल-> आयात -> "सेटिंग्स चुनें। उन्नयन") 3. ग्रेडिंग प्लगइन को अपडेट करने के लिए सहमत हों। 4. एंड्रॉइड एमुलेटर शुरू करें (मेरे मामले में एपीआई 24) 5. लॉन्च करें स्टेथो-सैंपल (हरे तीर के बगल में रन कॉन्फ़िगरेशन मेनू से इसका चयन करें। 6. अपने पीसी पर नवीनतम क्रोम ब्राउज़र खोलें। क्रोम से जाएं: // पता 8 का निरीक्षण करें। संसाधन टैब के लिए खोला खिड़की जाने में सूची में अपने एमुलेटर चुना है 9. 10 बाईं ओर LocalStorage मेनू के तहत अपने साझा वरीयताओं का पता लगाएं 11. बूलियन ध्वज के साथ आवेदन खेल में।।।
Maksim Turaev

मैंने अपनी समस्या कल साझा किए गए पूर्वावलोकन को देखने की आवश्यकता के बिना तय की। लेकिन मैं एक और दिन इस चरण-दर-चरण की कोशिश करूंगा। धन्यवाद।
एडुआर्डोमैया

14

आप केवल डीबगिंग उद्देश्य के लिए एक विशेष गतिविधि बना सकते हैं:

@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.

यह बहुत उपयोगी था, लेकिन यह मेरी जरूरत के अनुकूल नहीं था। मैंने एक संपादित जोड़ा जो कई साझा प्राथमिकता वाली फ़ाइलों के लिए अनुमति देता है
क्रिस्टोफर रुकिंस्की

धन्यवाद, मुझे सिर्फ यह समझने में परेशानी हो रही है कि संपादन को कैसे स्वीकार किया जाए
cyrixmorten

इसका दूसरों ने खंडन किया था। उन्होंने कहा कि यह अपना उत्तर होना चाहिए, इसलिए मैंने इसे एक नए उत्तर के रूप में रखा। मैंने मूल रूप से आपके उत्तर को केवल इसलिए संपादित किया क्योंकि मैं केवल वही कर पाया जो मैंने आपके उत्तर को देखने के दौरान किया था।
क्रिस्टोफर रुकिंस्की

ठीक है :-) हाँ मेरे साथ हुआ उसके बाद इसे दूसरों द्वारा समीक्षा की जानी थी
cyrixmorten

13

Android Studio -> डिवाइस फ़ाइल एक्सप्लोरर (दाएं नीचे के कोने) -> डेटा -> डेटा -> {package.id} -> साझा-प्रीफ़

नोट: आपको मोबाइल डिवाइस को एंड्रॉइड स्टूडियो से कनेक्ट करना होगा और चयनित एप्लिकेशन डीबग मोड में होना चाहिए


10

यह एक पुरानी पोस्ट है, लेकिन मुझे हालांकि यहां एक आलेखीय उत्तर देना चाहिए क्योंकि प्रश्न SharedPreferences.xmlएंड्रॉइड स्टूडियो का उपयोग करने के बारे में है । तो यहाँ यह जाता है।

टूल्स -> एंड्रॉइड डिवाइस मॉनिटर पर जाएं। डिवाइस मॉनिटर को क्लिक करके खोलें।

यहां छवि विवरण दर्ज करें

फिर आपको डिवाइस मॉनिटर में फ़ाइल एक्सप्लोरर टैब का चयन करने की आवश्यकता है। डेटा फ़ोल्डर ढूंढें और उसके अंदर एक और डेटा फ़ोल्डर ढूंढें। इसमें एक फ़ोल्डर होगा जिसमें आपके एप्लिकेशन पैकेज का नाम होगा और वांछित होगा SharedPreferences.xml

यहां छवि विवरण दर्ज करें

SharedPreferences.xmlफ़ाइल का चयन करें और फिर ऊपर की छवि के ऊपरी-दाएँ कोने में चिह्नित बटन का उपयोग करके अपने कंप्यूटर में फ़ाइल को खींचें और सहेजें।

मैंने एक डिवाइस एमुलेटर का उपयोग किया है।


1
आपकी पोस्ट के लिए धन्यवाद, मैंने डेवलपर के बारे में सीखा ।android.com/studio/debug/device-file-explorer जो आप यहां बता रहे हैं वही करने का नया तरीका है।
मैलेरेस

यह जानकर बहुत खुशी हुई कि मैं मदद कर सकता हूँ! आपका बहुत स्वागत है।
रेयाज मुरशेड

4

एकल या एकाधिक साझा वरीयता फ़ाइलें

यदि आपके पास कई Shared Preferenceफाइलें हैं, तो यहां उन सभी को दिखाने का एक अच्छा तरीका है, लेकिन आप केवल 1 फ़ाइल नाम में भी पास कर सकते हैं।

  • loadSharedPrefs("pref_name");

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

अपनी आवश्यकताओं के अनुरूप निम्नलिखित में से एक चुनें ...

एकल-प्रकार मान

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", "----------------------------------");

}

कई प्रकार के मान

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", "------------------------------------");

}

}

लोगकैट आउटपुट

मेरे Shared Preferenceमान सभी हैं String, लेकिन यह 2 विधियों में से किसी एक का उपयोग करके आउटपुट है ...

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

एक और सरल तरीका अपने फोन पर एक रूट एक्सप्लोरर ऐप का उपयोग करना होगा।

इसके बाद /data/data/package name/shared preferences folder/name of your preferences.xml, आप ES फ़ाइल एक्सप्लोरर का उपयोग कर सकते हैं , और rootअपने डिवाइस पर जा सकते हैं, नहीं sd card


1
यह प्रश्न का उत्तर प्रदान नहीं करता है। किसी लेखक से स्पष्टीकरण मांगने या उसका अनुरोध करने के लिए, उनके पोस्ट के नीचे एक टिप्पणी छोड़ दें - आप हमेशा अपने स्वयं के पोस्ट पर टिप्पणी कर सकते हैं, और एक बार आपके पास पर्याप्त प्रतिष्ठा होने पर आप किसी भी पोस्ट पर टिप्पणी करने में सक्षम होंगे । - समीक्षा से
लुका डेटोमी

@LucaDetomi आप जानते हैं कि मैं यहाँ से क्या बाहर हूँ
user5291072

आपका उत्तर बहुत छोटा मान लिया गया था। उत्तर में विवरण होना चाहिए जो उपयोगकर्ताओं को "क्यों" समझने में मदद करते हैं यह एक अच्छा जवाब हो सकता है और शायद सबसे अच्छा। मैं आपको और अधिक विवरण जोड़ने का सुझाव देता हूं जो सिद्धांतों को समझने में मदद करते हैं और हो सकता है कि वे इसे अन्य समान मुद्दों के लिए अनुकूल कर सकें
लुका डेटोमी

4

preferenceAndroid स्टूडियो में साझा करने के लिए

दाईं ओर से डिवाइस एक्सप्लोरर फाइल खोलें- डेटा> डेटा>> शेयर्ड_प्रोफ़्स

अधिक विवरण के लिए संलग्न छवि खोजें



2

एमुलेटर में कुछ डेटा डालने के बाद एप्लिकेशन को चलाएं, बस एप्लिकेशन को बंद कर दें।

अब डीडीएमएस या एंड्रॉइड मॉनिटर खोलें और अपने एमुलेटर का चयन करें, दाईं ओर आप फ़ाइल एक्सप्लोरर देख सकते हैं, इसमें डेटा फ़ोल्डर देख सकते हैं और अपने एप्लिकेशन पैकेज की तलाश कर सकते हैं जिसे आपने बनाया है, जिसमें आप साझा प्राथमिकता फ़ाइल खोल सकते हैं यह, आप एक्सएमएल फ़ाइल देख सकते हैं, इसे क्लिक करें और ऊपरी दाएं कोने में डिवाइस बटन से एक फ़ाइल खींचें पर क्लिक करें।

XML फ़ाइल आपके इच्छित स्थान पर सहेजी जाएगी, फिर आप इसे नोटपैड ++ जैसे किसी भी संपादक का उपयोग करके खोल सकते हैं और आपके द्वारा दर्ज किए गए डेटा को देख सकते हैं।


में एंड्रॉयड स्टूडियो 3.0 , मैं यह पाया डिवाइस फ़ाइल एक्सप्लोरर > डेटा> डेटा> (पैकेज नाम)> shared_prefs> (पैकेज नाम) _preferences.xml
जोसेलिन

2

डिवाइस फ़ाइल एक्सप्लोरर में निम्न पथ का अनुसरण करें: -

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

1

मुझे हमेशा ये कमांड कंसोल में उपयोगी लगते हैं:

  1. सही फ़ाइल नाम ढूँढें

    adb shell

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

  2. स्थानीय निर्देशिका में फ़ाइल प्राप्त करें

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

  3. इसे अपने में जांचें $local_dir


1

यदि आप एक एमुलेटर का उपयोग कर रहे हैं तो आप sharedPrefs.xmlइस कमांड के साथ फाइल को टर्मिनल पर देख सकते हैं :

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

उसके बाद आप उपयोग कर सकते हैं adb unrootयदि आप वर्चुअल डिवाइस को रूट नहीं रखना चाहते हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.