自应用发布以来,我一直在使用Android Studio开发应用。
直到最近,一切都很好,我必须调试和检查数据库文件。由于我不知道如何直接看到数据库,当我调试生成数据库文件时,我不得不将数据库文件从我的手机导出到PC上。
为此,我必须打开DDMS >文件资源管理器。一旦我打开DDMS,我必须重新连接USB,我失去了调试线程。在检查数据库文件之后,我必须关闭DDMS并重新连接USB以回到调试模式。
这太复杂了。有人有更好的方法来做到这一点在Android Studio(我知道它更容易在Eclipse) ?
不使用模拟器时最简单的方法
$ 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
从Android Studio查看数据库:
选项1:
Download and install SQLiteBrowser.
Copy the database from the device to your PC:
Android Studio versions < 3.0:
Open DDMS via Tools > Android > Android Device Monitor
Click on your device on the left.
You should see your application:
Go to File Explorer (one of the tabs on the right), go to /data/data/databases
Select the database by just clicking on it.
Go to the top right corner of the Android Device Monitor window. Click on the 'pull a file from the device' button:
A window will open asking you where you want to save your database file. Save it anywhere you want on your PC.
Android Studio versions >= 3.0:
Open Device File Explorer via View > Tool Windows > Device File Explorer
Go to data > data > PACKAGE_NAME > database, where PACKAGE_NAME is the name of your package (it is com.Movie in the example above)
Right click on the database and select Save As.... Save it anywhere you want on your PC.
Now, open the SQLiteBrowser you installed. Click on 'open database', navigate to the location you saved the database file, and open. You can now view the contents of your database.
选项2:
转到这个Github存储库,并按照自述文件中的说明在您的设备上查看您的数据库。你得到的结果是这样的:
就是这样。当然,在发布应用之前,你应该撤销所有这些步骤。
要知道sqlite数据库存储由你在android studio,你需要遵循简单的步骤:
1.Run your application
2.Go to Tools--->Android---->Device Monitor
3.Find your application name in left panel
4.Then click on File Explorer tab
5.Select data folder
6.Select data folder again and find your app or module name
7.Click on your database name
8.On right-top window you have an option to pull file from device.
9.Click it and save it on your PC
10.Use FireFox Sqlite manager to attach it to your project.
欲了解更多信息,此链接将是有用的。
http://www.c-sharpcorner.com/UploadFile/e14021/know-where-database-is-stored-in-android-studio/
要查看您的db文件中的数据,您需要下载sqlite浏览器或在任何浏览器中添加相同的插件,因此您需要在浏览器中打开文件并查看您的数据。
从http://sqlitebrowser.org/下载浏览器
这里是屏幕截图显示浏览器包含注册数据库
谢谢,
最后,我找到了一个最简单的解决方案,不需要打开DDMS。
实际上,解决方案是基于@Distwo提到的,但它不必那么复杂。
首先,记住数据库文件在设备中的路径,它应该始终相同。
例如我的是:/data/data/com.XXX.module/databases/com.XXX.module.database
其次,执行这个命令,将数据库文件拉到PC上
adb pull /data/data/com.XXX.module/databases/com.XXX.module.database /Users/somePathOnYourPC/
您需要做的就是复制并存储这个命令,然后您就可以一次又一次地使用它。
第三,如果你得到了Permission Denied或类似的情况,只需在前面的命令之前运行adb root。