自应用发布以来,我一直在使用Android Studio开发应用。

直到最近,一切都很好,我必须调试和检查数据库文件。由于我不知道如何直接看到数据库,当我调试生成数据库文件时,我不得不将数据库文件从我的手机导出到PC上。

为此,我必须打开DDMS >文件资源管理器。一旦我打开DDMS,我必须重新连接USB,我失去了调试线程。在检查数据库文件之后,我必须关闭DDMS并重新连接USB以回到调试模式。

这太复杂了。有人有更好的方法来做到这一点在Android Studio(我知道它更容易在Eclipse) ?


当前回答

最后,Android Studio通过数据库检查器选项卡支持此功能。您可以轻松应用视图/更新/查询操作。它现在还不是稳定的渠道,但你可以尝试Android Studio 4.1 Canary 5或更高版本。

您可以在这里看到数据库检查器的样子

你可以在这里下载相应的版本

其他回答

不使用模拟器时最简单的方法

$ adb shell
$ run-as your.package.name
$ chmod 777 databases
$ chmod 777 databases/database_name
$ exit
$ cp /data/data/your.package.name/databases/database_name /sdcard
$ run-as your.package.name # Optional
$ chmod 660 databases/database_name # Optional
$ chmod 660 databases # Optional
$ exit # Optional
$ exit
$ adb pull /sdcard/database_name

警告:

我有段时间没测试了。API>=25时可能不起作用。 如果cp命令不适合你,试试下面的命令:

# Pick a writeable directory <dir> other than /sdcard
$ cp /data/data/your.package.name/databases/database_name <dir>

# Exit and pull from the terminal on your PC
$ exit
$ adb pull /data/data/your.package.name/databases/database_name

解释:

第一个块将数据库的权限配置为可读。这利用了run-as,它允许您模拟包的用户来进行更改。

$ adb shell
$ run-as your.package.name
$ chmod 777 databases
$ chmod 777 databases/database_name
$ exit # Closes the shell started with run-as

接下来,我们将数据库复制到一个世界可读/可写目录。这允许adb拉用户访问。

$ cp /data/data/your.package.name/databases/database_name /sdcard

然后替换现有的读写权限。这对于您的应用程序的安全性很重要,但是特权将在下次安装时被替换。

$ run-as your.package.name
$ chmod 660 databases/database_name 
$ chmod 660 databases
$ exit # Exit the shell started with run-as

最后,将数据库复制到本地磁盘。

$ exit # Exits shell on the mobile device (from adb shell) 
$ adb pull /sdcard/database_name

它是其他答案加加号的组合

Install DB Browser for SQLite Get the exact location from Device File Explorer for MyBase.db something like "/data/data/com.whatever.myapp/databases/MyBase.db" Set the project window from Android to Project - so you can see the files (build.gradle, gradle.properties,...etc) In Project window right click and chose Open in Terminal In terminal you are now in the root director of your application from the hardisk so execute: adb pull /data/data/com.whatever.myapp/databases/MyBase.db Now on the Project window of you Android Studio you have a file "MyBase.db" Double click your db file from Project and you can now browse/edit your databases in DB Browser When you are ready just do Write Changes in DB Browser so databases are saved on hardisk In terminal with the command: adb push MyBase.db /data/data/com.whatever.myapp/databases/MyBase.db you just send from the Hardisk to device the edited database.

这可能不是你想要的答案,但我没有更好的方法从手机下载DB。我的建议是确保您使用的是这种迷你ddms。它将超级隐藏,但如果你不点击非常小的伪装框在程序的左下角。(试着在它上面盘旋,否则你可能会错过它。)

同样,下拉菜单显示没有过滤器(右上)。它实际上有很多不同的方法,你可以通过PPID,名称等监视不同的进程/应用程序。我一直用这个来监控手机,但请记住,我不是在做那种需要120%肯定数据库没有做一些不寻常的事情的开发工作。

希望能有所帮助

在Android 4.1 Canary 5预览版中引入了新的数据库检查器,您现在可以直接从IDE - https://developer.android.com/studio/preview/features?linkId=86173020#database-inspector检查、查询、修改和调试正在运行的应用程序中的SQLite数据库

支持数据库实时查询以及- https://developer.android.com/studio/preview/features?linkId=86173020#query

最简单的方法是连接你的设备并运行Android Studio 然后从工具栏:

视图——>工具窗口——>设备文件资源管理器 进入data/数据并找到您的包 找到你想要浏览并下载的DB文件 我推荐使用这个在线工具:https://sqliteonline.com/来查看db文件

另一种方法是使用Stetho库:

在build.gradle中添加Stello依赖: 编译com.facebook.stetho: stetho: 1.5.0的 在你的应用程序类或主活动的onCreate()上放以下一行: Stetho.initializeWithDefaults(这个); 连接您的设备,运行应用程序,并在Chrome上进入以下站点: chrome: / /检查/ #设备

就是这样。现在可以探索您的表了。

注意:建议在转移到生产环境之前删除依赖项。