我正在尝试提取我的应用程序数据库文件,我可以看到我拥有数据库文件“-rwxrwxrwx”中的所有权限,我是由chmod -r 777 /data/data/com.example.myapp提供的,但我无法做到,当我尝试拉动它时,我不断得到上述错误,而且设备管理器一直在崩溃。
我得到的错误:
[2015-07-19 19:48:44 - ddms]传输错误:权限被拒绝
[2015-07-19 19:48:44]选择失败:权限被拒绝
我正在使用Android Studio,我的设备具有root访问权限,而且我在Mac上。
这就是我想要提取的内容:
编辑:当我运行以下命令时,我收到此错误Package 'com.example.hackbot' has corrupt installation
:
run-as com.example.hackbot chmod /data/data/com.example.hackbot/databases/HackBotDB
任何帮助都很有价值。
干杯
答案 0 :(得分:7)
这很容易做到:
adb shell
run-as com.myapplication.packagname
cd databases
cat my_datbase_name.db > /sdcard/my_database_name_temp.db
exit
然后再次exit
以返回正常的终端提示adb pull /sdcard/my_database_name_temb.db
,应该是您可以下载sqlitebrowser来查看此数据
答案 1 :(得分:4)
adb shell linux用户和你的app linux用户不同。因此,出于安全原因,您无法从adb获取私有应用数据,但您可以像您一样制作副本。我同意,这是混乱和不洁,但它是这样设计的。所以我的建议是将Stetho添加到您的应用中。您可以从Chrome监控您的数据库,以及获取其他调试信息。
答案 2 :(得分:-1)