我正在尝试访问我正在我的Nexus上直接开发的应用程序的数据库,但是当我尝试执行“sqlite3”命令时,我得到了“权限被拒绝”。 我也尝试在root mod中启动adb,但同样,设备上的权限被拒绝... 我想我将不得不使用模拟器,但我有很多数据需要加载,而且Wifi上的手机比模拟器快10倍... 除非有人有任何想法? 感谢
答案 0 :(得分:8)
我挣扎了一段时间,所以这是我的解决方案,适用于无根设备:
#!/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
答案 1 :(得分:4)
文件被读取保护,您需要根据手机或使用模拟器。
答案 2 :(得分:3)
典型。
我通过在我的应用程序中添加一项功能来解决这个烦恼,该功能将数据库备份(复制)到SD卡。 adb pull
适用于任何SD卡文件。
编辑:修正了“adb”拼写错误(是“sdp”。
答案 3 :(得分:0)
我有类似的问题。我从模拟器中取出sqlite3并将其推入我的设备并且无法运行它 - 权限被拒绝。
显然sqlite3二进制文件没有执行权限(-rw-rw-rw-)所以chmod + x sqlite3解决了这个问题。