我已经测试了在我的应用程序数据库中创建,插入和检索数据,并且通过使用Log语句知道它的工作原理。
但是,我希望加快测试并使用Android设备监视器。但是,尽管存在db并且存储了数据,但在下面访问时,t.references :organization, foreign_key: true
文件夹为空:
为什么会出现这种情况?如何配置它来显示db文件和内容?
答案 0 :(得分:39)
文件夹/data
可能为空,因为您缺少相应的权限。为了解决这个问题,我必须执行以下命令。
adb shell
su
这些命令在模拟器中启动shell并授予root权限。命令adb
位于Android SDK的platform-tools
文件夹中,通常安装在MacOS上的~/Library/Android/sdk/
。
chmod -R 777 /data
修改文件夹(和递归子文件夹)/data
的权限,以使它们出现在工具A ndroid Device Monitor 中。
adb root
最后,此命令以root身份重新启动adb
。要小心,它只适用于开发版本(通常是模拟器版本)。
之后,您可以看到文件夹/data
的内容并传输其中的数据。您也可以使用adb pull <remote> <locale>
在控制台中执行此操作,例如:
adb pull /data/data/<app name>/databases/<database> .
答案 1 :(得分:24)
除了@Steven K的回答:如果您想要获取对数据的访问而无需使用真实设备,您需要使用在模拟器中运行应用程序> API 23 (或更低)。在部署Android设备监视器时,23以上的API可能会导致问题{。{3}}。
答案 2 :(得分:8)
它不是空的......你只是没有权限在设备上查看该文件夹。
在模拟器中试用它,因为你有root权限,它会对你有用。
答案 3 :(得分:6)
如果有人遇到上述问题,请按照以下步骤在终端窗口中进行操作:
就是这样。问题解决了。
答案 4 :(得分:5)
答案 5 :(得分:4)
如果要浏览设备数据(数据/数据)文件夹,有两种方法。
ADM位置 - (YOUR_SDK_PATH \ Android \ sdk \ tools)
adb root
如果您只想查看数据库&amp;表格然后最常用的方法是使用Stetho
。非常酷的工具,适用于SQLite
使用Facobook developed
buit的每位Android开发人员。
Steps to use the tool
&#39;编译&#39; com.facebook.stetho:stetho:1.4.2&#39;
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Stetho.initializeWithDefaults(this); setContentView(R.layout.activity_main); }
现在,构建您的应用程序&amp;当应用程序运行时,您可以通过在URL中打开chrome来浏览您的应用程序数据库:
chrome://inspect/#devices
屏幕截图同样如下_
ChromeInspact
您的数据库
希望这会对所有人有所帮助! :)
答案 6 :(得分:1)
我遇到API_25
同样的问题,它对我不起作用。
配置API_23 emulator
,它将适用于API_23
。
答案 7 :(得分:0)
在cmd转到中:
C:\Users\UserName\android-sdks\platform-tools
执行:
adb root
完成
答案 8 :(得分:0)
如果您使用的是Windows,请按照以下说明进行操作:
cd C:\Android\sdk\platform-tools
adb root
adb pull /data/data/ name-of-your-package /databases/name-of-your-database
platform-tools
的文件夹中找到数据库。然后,您可以通过chrome网站商店在Chrome浏览器中安装Sqlite Manager扩展程序,并使用它来查看和管理您导出的数据库。
如果手机已植根,则可以按照上述相同的说明进行操作。