Android ADB无需root即可访问应用程序数据库

标签 android adb root

谁能告诉我,是否可以使用 ADB 从应用程序中拉取和推送数据库,而无需手机上的 root 权限?

例如,我知道我根深蒂固的魔法和梦想的位置是:

/data/data/com.xxxx.xxxx/databases/xxxx

我知道您可以在没有 root 的情况下使用 ADB,但是在尝试使用 shell 时 - 如果没有 root 权限,您将无法查看该位置。但有人告诉我,如果你知道你想要的文件,你可以使用 push 和 pull?

基本上我想在非root手机上从我的应用程序中提取一个数据库,修改它并将其推回。

我唯一的问题是,我拥有的两部手机都是 root 用户,我无法使用非 root 用户来试用。

最佳答案

虽然 Nilhcem 的回答对我不起作用,但它引导我朝着正确的方向前进(为此我投了赞成票),我现在有了一个可行的解决方案。

旧答案可能不适用于较新版本的 Android:

#Transfer file from app databases directory to PC
adb shell
$ run-as package.name
$ cd ./databases/
$ ls -l #Find the current permissions - r=4, w=2, x=1
$ chmod 666 ./dbname.db
$ exit
$ exit
adb pull /data/data/package.name/databases/dbname.db ~/Desktop/

#Transfer file from PC to app databases directory (requires the above permission change)
adb push ~/Desktop/dbname.db /data/data/package.name/databases/dbname.db
adb shell
$ run-as package.name
$ chmod 660 ./databases/dbname.db #Restore original permissions
$ exit
$ exit

使用外部存储的替代方法(已确认适用于 6.0.1):

#Transfer file from app databases directory to external storage
adb shell
$ run-as package.name
$ cp ./databases/dbname.db /sdcard/
$ exit
$ exit

#Transfer file from external storage to app databases directory
adb shell
$ run-as package.name
$ cp /sdcard/dbname.db ./databases/
$ exit
$ exit

关于Android ADB无需root即可访问应用程序数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2078710/

相关文章:

android - 按钮在设备中不可见

android - Android 6 中的 adb 在哪里?它被删除了吗?

android - 如何在 Android 中将项目添加到快速设置

android - 如何以编程方式通过 tcp 启动 adb 服务器

xml - Delphi:尝试访问 XMLDocument 时出现 EInvalidPointer

java - 对列表中的重复项进行排序

android - Facebook 授权访问 token ?

android - 带有 ActionBar 和 Fragment 的 Android 选项卡布局

android - adb reboot broadcast 在某些应用程序上不起作用

Android ADB 连接空主机名