我试图直接在我的Nexus上访问我正在开发的应用程序的数据库,但是当我尝试执行"sqlite3"命令时,出现了"权限被拒绝"的错误。 我还尝试以root模式启动adb,但设备上仍然显示"权限被拒绝"... 我想我必须使用模拟器来完成这个任务,但我有很多数据需要加载,如果使用手机连接wifi的话,速度会比使用模拟器快十倍… 除非有人有什么好主意? 谢谢
我曾经为此苦恼过一段时间,下面是我的解决方案,适用于非root设备:
#!/bin/sh
# fill these values in
PACKAGE=com.example.android
DB=something.db
# copy db to sdcard using package permission (using cat because no cp command)
adb shell "run-as $PACKAGE cat /data/data/$PACKAGE/databases/$DB > /sdcard/$DB"
# pull file from sd card
adb pull /sdcard/$DB
# do something with it (need to install sqlitebrowser obviously)
sqlitebrowser $DB
典型的问题。
我通过为我的应用程序添加一个备份(复制)数据库到SD卡的功能来解决了这个烦恼。 adb pull
可以针对任何sdcard文件进行操作。
编辑:已修正“adb”拼写错误(原为“sdp”)。
我遇到了类似的问题。我从模拟器中拉出sqlite3并将其推送到我的设备上,但无法运行 - 权限被拒绝。
显然,sqlite3二进制文件没有执行权限(-rw-rw-rw-),因此使用chmod + x sqlite3解决了这个问题。
.db
扩展名。 - HRJ