首页 > 解决方案 > 是否需要 root 设备才能访问范围存储?

问题描述

我们目前正在使用 AWS Device Farm 来测试 Android 应用程序。使用 AWS 设备场,首先构建 apk。然后,将所需的工件放置在测试设备的范围存储中。然后,运行应用程序(使用这些工件)。最近,我在尝试推送工件时遇到了以下问题:(考虑我的应用程序包是“com.myapp”)

[ 5%] /sdcard/Android/data/com.myapp/files/MyFolder/scripts.zip

[ 11%] /sdcard/Android/data/com.myapp/files/MyFolder/scripts.zip

[ 16%] /sdcard/Android/data/com.myapp/files/MyFolder/scripts.zip

[ 22%] /sdcard/Android/data/com.myapp/files/MyFolder/scripts.zip

[ 27%] /sdcard/Android/data/com.myapp/files/MyFolder/scripts.zip

[ 33%] /sdcard/Android/data/com.myapp/files/MyFolder/scripts.zip

[ 38%] /sdcard/Android/data/com.myapp/files/MyFolder/scripts.zip

[ 44%] /sdcard/Android/data/com.myapp/files/MyFolder/scripts.zip

[ 49%] /sdcard/Android/data/com.myapp/files/MyFolder/scripts.zip

[ 55%] /sdcard/Android/data/com.myapp/files/MyFolder/scripts.zip

[ 60%] /sdcard/Android/data/com.myapp/files/MyFolder/scripts.zip

[ 66%] /sdcard/Android/data/com.myapp/files/MyFolder/scripts.zip

[ 71%] /sdcard/Android/data/com.myapp/files/MyFolder/scripts.zip

[ 77%] /sdcard/Android/data/com.myapp/files/MyFolder/scripts.zip

[ 82%] /sdcard/Android/data/com.myapp/files/MyFolder/scripts.zip

[ 88%] /sdcard/Android/data/com.myapp/files/MyFolder/scripts.zip

[ 93%] /sdcard/Android/data/com.myapp/files/MyFolder/scripts.zip

[ 99%] /sdcard/Android/data/com.myapp/files/MyFolder/scripts.zip

[100%] /sdcard/Android/data/com.myapp/files/MyFolder/scripts.zip

adb:错误:无法将“scripts.zip”复制到“/sdcard/Android/data/com.myapp/files/MyFolder/scripts.zip”:远程secure_mkdirs 失败: GOOGLE PIXEL 5(解锁)OS 11 上的权限被拒绝

而相同的逻辑适用于几组设备:

三星盖乐世 S20(解锁)10

三星 GALAXY S9(解锁)9

运行以下命令来推送 scripts.zip 文件: adb push scripts.zip /sdcard/Android/data/com.myapp/files/MyFolder/scripts.zip

我阅读了很多关于此错误的文章,但所有文章都使用有根设备。因此,在运行某些命令时,他们能够修复它。就我而言,aws 云包含运行测试用例的真实设备,因此无法对设备进行生根。

我的要求是使用 cmd 命令将工件推送到我自己的应用程序的范围存储中。先感谢您。

标签: permissionsadbaws-device-farmscoped-storagerooted-device

解决方案


您自己的应用在 Pixel 设备上的范围存储位置是

/data/data/com.myapp/files

要将文件复制到此文件夹中,您可以将其复制到临时位置:

adb push scripts.zip /data/local/tmp/scripts.zip

然后将上传的文件复制到应用程序的私有位置:

adb shell run-as com.myapp cp /data/local/tmp/scripts.zip .

推荐阅读