3

是否发生了一些变化,以下命令不再适用于 Android O?

adb -d shell "run-as package.name cat /data/data/package.name/databases/foo.db" > foo.db

跑步:

  • 构建:OPP2.170420.019
  • 设备:Nexus 6P

我已经尝试了无数种方法,但即使是 /sdcard 的 cat 或 cp 也无济于事。我猜一些权限已经改变,我们不能再使用 run-as package.name。

我能够从我的非根 Android O 设备获取数据的唯一方法是使用 FileProvider 并复制到 /sdcard。

有没有人在调试包上使用 run-as 成功?有人和我有同样的问题吗?

4

2 回答 2

1

我不知道我的具体问题的答案,但想分享我的新发现(可能对某些人来说很明显)。

在测试了 Android Studio 3.0 Canary 1 之后,有一个新的设备文件资源管理器,可以轻松下载甚至同步最新的数据库!

Android Studio 3 Canary 1 - 设备文件资源管理器

对于需要从开发中的设备中获取任何类型的文件的任何人来说,这是一个如此强大的功能。cat 命令从来都不是完美的,并且总是时不时地搞砸数据库。

这个 File Explorer + SQLPro for SQLite对于任何有数据库的 Android 开发来说都是黄金!

如果有人确实对我原来的问题有理由或解决方案,将保持问题开放。另外,我会觉得自己像个混蛋一样接受自己的回答。:)

于 2017-05-26T14:07:59.363 回答
0

看起来 run-as 会将当前目录设置为 /data/data/packageName。

我认为以下方法会起作用:

adb -d shell "run-as package.name cat数据库/foo.db " > foo.db

于 2019-03-23T02:49:50.263 回答