【问题标题】:adb -d shell "run-as ..." not working on Android Oadb -d shell "run-as ..." 在 Android O 上不起作用
【发布时间】:2017-05-23 03:38:51
【问题描述】:

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

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

跑步:

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

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

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

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

【问题讨论】:

    标签: android shell adb android-sdcard android-8.0-oreo


    【解决方案1】:

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

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

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

    这个文件资源管理器 + SQLPro for SQLite 是任何拥有数据库的 Android 开发的黄金!

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

    【讨论】:

      【解决方案2】:

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

      我认为以下方法可行:

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

      【讨论】:

        猜你喜欢
        • 2014-05-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-03-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多