【发布时间】:2020-03-15 10:13:41
【问题描述】:
我无法更改需要在 Android 虚拟设备 (AVD) 上测试的 shell 脚本的权限。 AVD 是 Google Pixel 2 (API 29) - 它是通过 Android Studio 创建的。在 MacBook 上使用 Android SDK 中的 Android Debug Bridge (adb),我做到了:
%adb push file.sh /sdcard/steve
file.sh 脚本在 MacBook 上是可执行的(模式 755),但当它被推送到 AVD 时,模式变为 660(即不再可执行)。那么我就这样做了:
%adb 外壳
这会打开一个模拟器 shell 会话。然后我在 AVD shell 会话中进行如下操作:
%generic_x86: cd /sdcard/steve
%generic_x86: chmod +x file.sh
这不会产生错误消息,实际上根本不会产生任何消息。 file.sh 的权限没有变化。它仍然无法执行。
我需要将文件推送到 AVD 上的其他目录吗?或者是否有其他方法可以让我在将文件推送到 AVD(模拟器)后更改文件权限?
注意:我查看了可以在其中创建文件的 Android Studio“设备文件资源管理器”和 AVD 上的目录,但是,不能更改文件的权限。
TIA 提供任何提示,
史蒂夫
【问题讨论】:
-
你知道你提到的路径的读写访问被Android Q阻止了吗?我不明白你设法创建了一个目录 /sdcard/steve。
-
显然不是 - 在“adb shell”之后,
-
显然它没有被这个 AVD 阻止,Google Pixel 2 - 在“adb shell”之后,我做了 - %generic_x86: cd /sdcard, %generic_x86: mkdir steve,并且创建了目录。然后正如我所说,我能够对 /sdcard/steve 的文件执行“adb push ..”。但是,不能更改此文件的权限。我应该在 AVD 上使用不同的目录吗?
-
不知道。 Q 下的限制不适用于 getFilesDIr()、getExternalFilesDir() 和 getExternalFilesDirs()。所以你可以在那里尝试。
-
好的 - 很高兴知道。由于我还没有处于编码阶段,因此很高兴知道您引用的那些程序正在触及哪些目录。
标签: android file permissions virtual device