在设备上观看sqlite db

时间:2010-11-09 11:14:22

标签: android sqlite device

当我在模拟器上调试我的Android应用程序时,我可以使用adb shell连接到它并使用sqlite3命令查看我的数据库文件。但在真实设备上我不能这样做,因为我没有root权限。有什么方法可以做到这一点吗?

3 个答案:

答案 0 :(得分:0)

如果您正在使用Eclipse,请尝试以下方法:questoidsqlitemanager

答案 1 :(得分:0)

您的数据库文件必须位于/ data / data / YOUR_PACKAGE_NAME / databases中,请尝试以下操作:

adb shell (Use "-s" option if you have more than one device)
sqlite3  /data/data/YOUR_PACKAGE_NAME/databases/YOUR_DATABASE_NAME

将YOUR_DATABASE_NAME移至/ DATA文件夹更改右侧(chmod 777 YOUR_DATABASE_NAME)。现在您将能够获取该文件。现在您可以使用sqlite3或SQLite Manager插件。

您可以使用超级用户root。

答案 2 :(得分:0)

这是操作系统级别的权限问题,因此您必须将数据库移动到具有更宽松权限的某个位置(不确定api是否允许您将其放在SD卡上,尽管底层库应该)。

否则你可以从有权读取数据库的东西进行数据库监控,也就是说以root身份运行的东西,或更可能是安装时为应用程序创建的app _ ##用户ID。例如 - 除了在您的设备上进行测试之外,这不是您应该做的事情 - 您可以制作工具箱shell的副本,以便编写和执行(例如/ sqlite_stmt_journals目录)并使其成为应用程序的用户ID(您的应用程序本身必须以编程方式进行复制和chmod'ing)。然后,您可以从adb shell运行该shell,并成为应用程序的用户ID。

或者应用程序以编程方式启动的任何进程都会拥有它的用户ID,所以你也可以在它的mini-insecure-telnet-daemon中读取运行netcat(“nc”,我认为甚至打包在官方的android版本中)模式并从您的应用程序启动它,这样如果您使用adb shell或adb port forward连接到它正在侦听的端口,您将获得一个作为应用程序用户ID运行的shell。

或者您可以在应用程序中构建数据库探索功能,或者使用tcp监听,或者使用文件监视器作为触发器,并将文件转储到您可以检查的SD卡上。

或者你可以根据你的手机。