在 Android 11+ 模拟器中测试时,从计算机访问您自己的应用程序的沙箱文件夹

Access your own app's sandbox folder from a computer, when testing in Android 11+ emulators

在开发应用程序时,我经常面临管理我自己的应用程序私有目录中的文件的问题,在 Android/data/com.package.name/... 下 - 复制、创建、编辑、删除测试那里的文件。在 Android 11(将来可能更新的版本)上,只有在使用 USB 电缆连接时才能在物理设备上使用。在模拟器中,完全不可能访问该目录 - adb shell 或 Android studio 中的普通“设备文件资源管理器”,目前在尝试输入或列出 Android/data文件夹。即使在旧版本的 Android 上使用 adb shell 或“设备文件资源管理器”也不方便,设备文件资源管理器甚至不列出“隐藏”文件和文件夹(名称以点开头),我也需要管理。

这个问题的最佳解决方案是什么?在 Android 的旧版本上,我使用的是 Google Play 的 WebDAV 服务器应用程序,它让我可以将模拟器(或设备)的整个存储作为虚拟目录或驱动器安装在我的开发人员计算机上,但是在 Android 11 它无法访问我的应用程序的沙箱目录。

在使用第 3 方 WebDAV 服务器后,我得出的结论是 Android 11+ 的唯一解决方案是将文件服务器(WebDAV 或类似的)嵌入到我自己的应用程序中,至少在调试构建。

我为 Android 项目克隆了一个非常旧的 GitHub WebDAV 服务器:https://github.com/erspicu/Baxermux.server.http,但是有太多需要更改、修复、增强的地方,所以我最终创建了一个新的 Android 应用程序项目,从 Baxermux 复制代码片段并从那里继续。您可能会在 GitHub 上看到结果,这是一个非常轻量级的 WebDAV 服务器库,可以包含在 gradle 的 debugImplementation 语句中,用于管理文件应用程序沙箱(或整个 Android 存储,如果需要,也减去 Android 11+ 下其他应用程序的沙箱文件夹):

https://github.com/gregko/Mini-WebDAV-server-for-Android

现在我可以使用任何 WebDAV 客户端访问这些文件夹。在我的 Windows 开发主机上,我使用优秀的 WebDrive 产品 - 它将 Mini WebDAV 服务器导出的目录安装为 Windows 驱动器,我可以使用本机 Windows 文件资源管理器,或者命令提示符,可以查看和编辑文件,就像它们在我的计算机本地一样。