adb -d shell“run-as ...”无法在Android O上运行

问题描述 投票:3回答:2

有什么改变,如下面的命令不再适用于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了。

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

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

android shell adb android-sdcard android-8.0-oreo
2个回答
1
投票

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

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

Android Studio 3 Canary 1 - Device File Explorer

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

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

如果某人确实有原因或解决我原来的问题,请将问题保持打开状态。另外,我觉得自己可以接受我自己的答案了。 :)


0
投票

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

我认为以下方法可行:

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

© www.soinside.com 2019 - 2024. All rights reserved.