使用adb命令时的错误
如果直接使用adb命令会产生以下错误:
1 2 3 4 5 6 |
127|shell@android:/ $ cd /data cd /data shell@android:/data $ ls ls opendir failed, Permission denied |
你是没有权限的。
正确使用adb读取data目录下的文件方式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
shell@android:/data $ run-as com.your.package run-as com.your.package shell@android:/data/data/com.your.package $ cd /data/data/com.your.package cd /data/data/com.your.package shell@android:/data/data/com.your.package $ ls ls cache databases lib shared_prefs shell@android:/data/data/com.your.package $ cd databases cd databases shell@android:/data/data/com.your.package/databases $ ls yourpackagename.db $ cat preferences.db > /mnt/sdcard/yourpackagename.db |
将你要访问的package目录下的db文件拷贝到sdcard中,这样就可以正常访问了!
使用限制
1.在Android 4.3的某些版本上面,存在BUG,导致这个功能是没办法使用的,一般会提示android run-as permission denied
。
具体的讨论参考run-as doesn't work after update to 4.3
2.应用的AndroidManifest.xml
中必须设置了android:debuggable="true"
。
从Android设备拉取文件
4.x系统
1 2 3 4 5 |
$ adb shell "run-as package.name chmod 666 /data/data/package.name/databases/file" $ adb pull /data/data/package.name/databases/file . $ adb shell "run-as package.name chmod 600 /data/data/package.name/databases/file" |
5.x系统
1 |
$ adb exec-out run-as package.name cat databases/file > file |
参考资料
在不root手机的情况下读取Data目录下的文件
android adb, retrieve database using run-as