谁能告诉我,是否可以使用 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/