任何人都可以告诉我,是否可以使用ADB从应用程序中提取和推送数据库,而无需手机上的root权限?
例如,我知道我的根本魔法和梦想的位置是:
/data/data/com.xxxx.xxxx/databases/xxxx
Run Code Online (Sandbox Code Playgroud)
我知道您可以在没有root的情况下使用ADB,但在尝试使用shell时 - 如果没有root privalges,则无法查看该位置.但有人告诉我,如果你知道你想要的文件,你可以使用推拉吗?
基本上我想从非root用户手机上的MY应用程序中提取数据库进行修改并重新启动.
我遇到的麻烦就是,我拥有的两部手机都是root用户,我无法访问非root用户进行试用.
Pil*_*_51 79
虽然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
Run Code Online (Sandbox Code Playgroud)
使用外部存储的替代方法(已确认可与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
Run Code Online (Sandbox Code Playgroud)
Nil*_*cem 13
一个快速的解决方法是使用该run-as命令将数据库复制到您可以访问的文件夹中,例如/sdcard然后执行正常操作adb pull
adb shell
$ run-as package.name cp /data/data/package.name/dbname.db /sdcard/
$ exit
adb pull /sdcard/dbname.db
Run Code Online (Sandbox Code Playgroud)
有关run-as命令的更多信息,请参见此处
请注意,run-as命令是因为API级别8(的Android 2.2)可用,如果应用程序是仅可用于debbugable.
| 归档时间: |
|
| 查看次数: |
42455 次 |
| 最近记录: |