【问题标题】:Android application targeting Android SDK Version 26 - Cannot access the application data directory via ADB针对 Android SDK 版本 26 的 Android 应用程序 - 无法通过 ADB 访问应用程序数据目录
【发布时间】:2018-09-07 15:08:22
【问题描述】:

我最近将我的 android 应用程序更改为面向 Android SDK 版本 26(之前的版本 19)。当我在 Oreo 设备上安装应用程序时,我尝试使用 ADB 通过 ADB shell 命令检查应用程序的数据目录(/data/data/app-package-name)。但是命令行返回了:

cd: /data/data/app-package-name: 权限被拒绝

当我的应用面向 Android SDK 版本 19 时,我之前能够访问该目录。

现在,我已经阅读了很多关于此的其他堆栈溢出帖子,它们的答案通常是您需要一个根设备或使用某种第 3 方库。

我注意到从 API 23 开始,Google 引入了一个新的权限模型 (https://developer.android.com/about/versions/marshmallow/android-6.0-changes),所以我想知道这是否会导致我遇到的问题。

任何帮助将不胜感激。

【问题讨论】:

  • 当您在 19 上设置目标时,您是否也在 19 设备上进行了测试?这应该与应用权限无关,而与shell 用户拥有的权限有关。
  • 我在同一个 Oreo 设备 (API 26) 上测试了应用程序 (API 19 & 26)。
  • 这很奇怪。但无论如何,你一开始就不应该这样做,即使是来自亚行。不幸的是,您在工作流程中使用了一个错误。
  • 你在用模拟器吗?
  • 在根设备上,您可以访问该文件夹,否则您不能。我认为从棒棒糖开始,genymotion模拟器默认没有root访问权限。

标签: android adb


【解决方案1】:

您必须具有根访问权限(根设备)才能访问该文件夹。它与运行时权限无关。

【讨论】:

    【解决方案2】:

    应用程序的内部存储是应用程序私有的,不能从其他应用程序访问,除非它是系统应用程序或您具有 root 权限。

    为了通过 adb 访问应用程序的内部存储,设备应该是 root 或者 应用程序应该是可调试的。 确保您没有尝试访问应用程序的内部存储这是不可调试的。

    并且与从 Android 6 开始引入的新 android 权限模型无关。它是一个与 linux 文件系统相关的权限。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-31
      • 2017-10-23
      • 1970-01-01
      • 2014-02-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多