如何使用Android Studio查看共享首选项文件?

169

我正在使用共享偏好设置来存储应用程序的某些值。我想查看实际存储信息的文件在我的手机上的位置。我找到了许多在Eclipse中执行此操作的方法,但我正在使用Android Studio进行调试。我的手机已经获取了Root权限。我读到了获得Root权限对于读取这些类型的文件是很重要的。如果没有其他方法,那么我将查找如何通过我的程序访问信息,然后将其输出到日志窗口。希望能够直接在手机上查看文件,因为这样更简单。谢谢。


安装ES文件浏览器并启用Root浏览。然后您将能够直接在手机上打开它。 - CurlyPaul
5
尝试使用adb pull命令将文件提取到桌面。adb pull /data/data/<包名>/shared_prefs/prefs.xml - Lal
2
或者进入文件浏览器,在文件树中找到/data/data/com.your-package/shared_prefs下的应用数据文件夹。偏好设置文件将在那里,以XML格式存在。从设备上复制它并享受它。在文件浏览器视图的右上角,有两个图标按钮 - 一个是磁盘,一个是手机。这些按钮将允许您分别从手机/模拟器复制文件。 - Lal
1
由于某种原因,我的偏好设置 XML 文件被称为 <PACKAGENAME>_preferences.xml。 - JPM
15个回答

179

Android Studio 3.x中的设备文件资源管理器非常适合浏览您的偏好文件、缓存项或数据库。

  1. 共享偏好设置 /data/data//shared_prefs目录

enter image description here

它看起来像这样

enter image description here

打开设备文件资源管理器:

单击“视图”>“工具窗口”>“设备文件资源管理器”,或在工具窗口栏中单击“设备文件资源管理器”按钮。

enter image description here


15
打开设备文件浏览器(屏幕右下方)。 - Apit John Ismail
6
可以编辑并保存文件吗? - alex
你可以“另存为”文件,然后修改它并替换原始文件。 - Andrey Liashuk
1
@AndreyLiashuk 你如何替换原始文件? - Daniel
@Daniel 我只是删除原始文件,然后上传更新的版本。幸运的是,设备文件浏览器支持删除和上传操作。 - Andrey Liashuk

122

从Android Studio开始,启动Android设备监视器,转到文件浏览器,并浏览“/data/data/<您的软件包名称>/shared_prefs/”。您会在那里找到XML文件...您也可以复制它以进行检查。

如果您的设备没有root权限,则无法直接从Android Studio执行此操作。但是,只要您的应用程序是调试版本,就可以使用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目录中拉取文件。


我无法从设备监视器访问此文件夹。需要Root权限吗? - Marian Klühspies
2
第二种方法适用于非root设备。将文件复制到SD卡后,您可以退出ADB,运行adb pull "/sdcard/your_preferences_file",然后您将在当前目录中获得一个XML文件,您可以进行检查。 - Bebop_
4
如果您能够以调试的方式获取信息,您实际上可以在不需要root权限的情况下从模拟器中获取此信息。如果您使用的是物理设备,则需要root权限。 - Booger
4
在Android Studio的右下角寻找“设备文件浏览器”,它将为您提供访问设备文件系统的便利。 - Maksim Turaev
3
通过设备文件浏览器,我可以在不获取 root 访问权限的情况下访问共享偏好设置。 - Devansh Maurya
显示剩余2条评论

51

更新:Flipper

Flipper是Facebook提供的一种更新的替代品。它具有更多功能,并且正在积极维护。

Stetho

您可以使用http://facebook.github.io/stetho/在调试模式下访问共享首选项。无需ROOT权限

功能:

  1. 查看和编辑SharedPreferences
  2. 查看和编辑SQLite数据库
  3. 查看视图层次结构
  4. 监视HTTP网络请求
  5. 查看来自设备屏幕的流
  6. 等等……

输入图像描述

基本设置:

  1. 在build.gradle中添加 compile 'com.facebook.stetho:stetho:1.5.0'
  2. 在应用程序的onCreate()方法中添加 Stetho.initializeWithDefaults(this);
  3. 在PC上的Chrome浏览器中,转到chrome://inspect/

您还可以使用@Jeffrey的建议:

  • 打开设备文件资源管理器(屏幕右下角)
  • 转到data/data/com.yourAppName/shared_prefs

这个能在模拟器上运行吗?我好像无法让它工作。 - EduardoMaia
@EduardoMaia 应该可以。我每天都用模拟器。你可以创建一个带有截图的问题,我会尽力帮助你。 - Maksim Turaev
@EduardoMaia 您可以尝试以下步骤:1. 克隆Facebook Stetho存储库。2. 将此项目导入到最新的Android Studio中(文件->导入->“选择settings.gradle”)。3. 同意更新Gradle插件。4. 启动Android模拟器(在我的情况下是API 24)。5. 启动stetho-sample(从绿色箭头旁边的运行配置菜单中选择它)。6. 在您的PC上打开最新的Chrome浏览器。7. 转到chrome://inspect地址。8. 在列表中选择您的模拟器。9. 在打开的窗口中转到资源选项卡。10. 在左侧的LocalStorage菜单下找到您的共享首选项。11. 在应用程序中使用布尔标志进行操作。 - Maksim Turaev
昨天我已经解决了我的问题,不需要查看共享首选项。但是我会在另一天尝试按步骤操作。谢谢。 - EduardoMaia
Stetho已经过时了。你需要使用Flipper或其他工具来代替它。 - S.Javed

26

Android Studio -> 设备文件浏览器(右下角)-> data -> data -> {package.id} -> shared-prefs

注意:您需要将移动设备连接到Android Studio,并选择调试模式的应用程序。


21

这是一篇旧帖,但由于问题涉及使用Android Studio查看SharedPreferences.xml,因此我认为我应该在此提供一个图形答案。以下是具体操作:

前往“工具”->“Android Device Monitor”。通过单击打开设备监视器。

enter image description here

然后您需要在设备监视器中选择“文件浏览器”选项卡。找到"data"文件夹,里面有另一个"data"文件夹。它将包含一个名为您的应用程序包名称的文件夹,其中将包含所需的SharedPreferences.xml

enter image description here

选择SharedPreferences.xml文件,然后使用上面图像右上角标记的按钮将文件拉出并保存到您的计算机中。

我已经使用了一个设备模拟器。


2
多亏了您的帖子,我了解到https://developer.android.com/studio/debug/device-file-explorer ,这是一个新的方式来做你在这里解释的事情。 - malarres

14

您可以为调试目的创建一个特殊的 Activity:

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

这非常有用,但并不完全符合我的需求。我添加了一个编辑功能,允许使用多个共享首选项文件。 - Christopher Rucinski
谢谢,我只是在困惑如何接受这些编辑。 - cYrixmorten
其他人否认了它。他们说它应该是自己的答案,所以我把它作为一个新的答案。我最初只是编辑了你的答案,因为当我看到你的答案时,我才能做到我所做的事情。 - Christopher Rucinski
好的:)是的,我之后意识到它必须由其他人审核。 - cYrixmorten

8
另一种简单的方法是在手机上使用根浏览器应用程序。
然后,转到 /data/data/package_name/shared_preferences_folder/name_of your_preferences.xml,您可以使用ES文件浏览器,并进入您设备的根目录,而不是SD卡

1
这并没有提供问题的答案。如果要批评或请求作者澄清,请在他们的帖子下留言 - 您始终可以在自己的帖子上发表评论,并且一旦您拥有足够的声望,您将能够评论任何帖子。- 来自审查 - Luca Detomi
@LucaDetomi 你知道,我要离开了。 - user5291072
你的答案被标记为太简短。回答应包含细节,使用户了解“为什么”它可能是一个好答案,甚至是最好的答案。我建议你添加更多细节,以帮助理解原则,可能还能适用于其他类似问题。 - Luca Detomi

7

如何在Android Studio中打开共享的preference

从右侧打开设备资源管理器文件- data>data>>shared_prefs

查看附加的图片以获得更多说明


3
附带的图片在哪里? - Mahmoud Mabrok
1
在Android Studio 4.1中,路径为data/data/[YOUR_APP_PACKAGE]/shared_prefs/ - A.W.

6
在设备文件浏览器中,请按以下路径:
/data/data/com.**package_name**.test/shared_prefs/com.**package_name**.test_preferences.xml

4
在向模拟器中插入一些数据后,运行应用程序,然后关闭应用程序。现在打开DDMS或Android监视器,并选择您的模拟器,在右侧可以看到文件浏览器,在其中查找Data文件夹并查找您创建的应用程序包,在其中可以找到共享首选项文件,打开它,您可以看到XML文件,单击它并单击右上角的从设备拉取文件按钮。 XML文件将保存在您想要的位置,然后可以使用任何编辑器(如notepad ++)打开它,查看您输入的数据。

Android Studio 3.0 中,我在 设备文件浏览器 > data > data > (包名) > shared_prefs > (包名)_preferences.xml 找到了它。 - Josselin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接