Android 设备监视器“数据”文件夹为空
Posted
技术标签:
【中文标题】Android 设备监视器“数据”文件夹为空【英文标题】:Android Device Monitor "data" folder is empty 【发布时间】:2016-04-08 18:51:58 【问题描述】:我已经测试了在我的应用程序数据库中创建、插入和检索数据,并且知道它可以通过使用 Log 语句来工作。
但是,我希望加快测试并使用 android 设备监视器。但是,虽然db存在并存储了数据,但在下面访问时,data
文件夹是空的:
为什么会这样?如何将其配置为显示 db 文件和内容?
【问题讨论】:
在调试模式下,这个答案帮助了我:***.com/a/42865585/3520656 【参考方案1】:如果您使用的是 Windows,请按照以下说明逐步操作:
-
在 android 模拟器中启动您的应用。
然后以管理员身份打开命令提示符并导航到 sdk 路径,例如
cd C:\Android\sdk\platform-tools
输入adb root
然后输入adb pull /data/data/ name-of-your-package /databases/name-of-your-database
您会在名为platform-tools
的文件夹中找到您的数据库。
然后您可以通过 chrome webstore 在 Google Chrome 中安装 Sqlite Manager 扩展,并使用它来查看和管理您导出的数据库。
如果您的手机已root,则可以按照与上述相同的说明进行操作。
【讨论】:
【参考方案2】:在 cmd GoTo 中:
C:\Users\UserName\android-sdks\platform-tools
执行:
adb root
完成
【讨论】:
【参考方案3】:如果有人遇到上述问题,请在终端窗口中按照以下步骤操作:
-
导航到 /Users/用户名/Library/Android/sdk/platform-tools
执行 ./adb root
就是这样。问题解决了。
【讨论】:
【参考方案4】:如果你想浏览你的设备数据(data/data)文件夹,有两种方法。
-
您需要拥有具有 root 访问权限的手机才能使用 ADM(Android 设备监视器)浏览数据文件夹。
ADM 位置 - (YOUR_SDK_PATH\Android\sdk\tools)
-
您需要在 root 模式下运行 ADB,执行此操作:
adb root
如果您只想查看您的数据库和表,那么最简单的方法是使用Stetho
。对于每个使用SQLite
buit by Facobook developed
的 Android 开发人员来说,这是一个非常酷的工具。
Steps to use the tool
-
在应用程序的 gradle 文件中添加以下依赖项(模块:app)
'编译'com.facebook.stetho:stetho:1.4.2'
-
在您的 Activity onCreate() 方法中添加以下代码行
@Override protected void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); Stetho.initializeWithDefaults(this); setContentView(R.layout.activity_main);
现在,构建您的应用程序,当应用程序运行时,您可以通过在 url 中打开 chrome 浏览您的应用程序数据库:
chrome://inspect/#devices
相同的截图如下_
ChromeInspact
你的数据库
希望这对所有人都有帮助! :)
【讨论】:
【参考方案5】:API_25
也有同样的问题,但它对我不起作用。
配置一个API_23 emulator
,它将在API_23
上工作。
【讨论】:
【参考方案6】:使用模拟器解决问题
文件夹/data
可以为空,因为您缺少适当的权限。为了解决它,我不得不执行以下命令。
adb shell
su
这些命令会在模拟器中启动一个 shell 并授予您 root 权限。命令adb
位于Android SDK 的platform-tools
文件夹中,在MacOS 上通常安装在~/Library/Android/sdk/
中。
chmod -R 777 /data
修改文件夹(以及递归子文件夹)/data
的权限,以使它们出现在工具 Aandroid 设备监视器中。
adb root
最后,此命令以 root 身份重新启动 adb
。请注意,它仅适用于开发版本(通常是模拟器版本)。
之后,您可以看到文件夹/data
的内容并传输位于其中的数据。您也可以在控制台中使用adb pull <remote> <locale>
,例如:
adb pull /data/data/<app name>/databases/<database> .
【讨论】:
【参考方案7】:除了@Steven K 的回答:如果您想在无需 root 真实设备的情况下访问您的数据,您需要在具有 API 23模拟器 中运行您的应用程序/strong>(或更低)。这是一个known problem,在部署 Android Device Monitor 时,23 以上的 API 可能会导致问题。
【讨论】:
【参考方案8】:在开发过程中将数据库存储在公用文件夹中可能更容易。
或者你可以看看这个帖子:
How to access data/data folder in Android device?
【讨论】:
能否请您概述一下如何做到这一点? 文件 dbfile = new File("/sdcard/mydb.sqlite" ); SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(dbfile, null); System.out.println("打开了吗?" + db.isOpen【参考方案9】:它不是空的....您只是没有权限在设备上查看该文件夹。
在模拟器中试一试,因为您有 root 访问权限,所以它会为您工作。
【讨论】:
我正在我的个人设备上进行测试。如何获得 root 访问权限? 您只能在root手机中查看数据库。以上是关于Android 设备监视器“数据”文件夹为空的主要内容,如果未能解决你的问题,请参考以下文章
XamarinSQLite教程在Xamarin.Android项目中定位数据库文件
XamarinSQLite教程在Xamarin.Android项目中定位数据库文件
无法打开内核设备“\.Globalvmx86”: 系统找不到指定的文件。是否在安装 VMware Workstation 后重新引导? 未能初始化监视器设备。