在 Android 10 及以下版本,APK 文件的安装过程相对来说比较简单。当你从浏览器或者其他应用(例如 APKMirror Installer)中安装APK文件的时候,会被要求授予安装权限。
如果你选择打开该选项,那么使用手势或者点击返回按钮就会跳转回原来的位置,并且会跳出一个对话框询问你是否愿意安装之前选择的APK。如下方图片所示:
而这个行为在 Android 11 上就会发生改变。正如不满该特性的测试人员在该问题的追踪页面上所反馈的,在用户授予权限之后,虽然安装对话框依然会弹出,但是该应用本身就消失了。
当你重新打开应用程序的时候,你就会发现整个 APP 被重新加载,这就意味着此前输入的内容或者其他尚未缓存的数据就会丢失。而 Android 通常只有在撤销权限的时候才会强行退出应用程序以阻止应用被破解,而不是在授予权限的时候强行退出。
在问题追踪器上,谷歌工程师并没有太过重视这个问题。最初的评论中只是写道:“这实际上是按照预期的工作方式进行”。直到有更多开发者反馈这个问题之后,谷歌才明确这个新特性是实际上和分区存储(Scoped Storage)有关。
在 Android R 中,文件系统和存储挂载的设置方式发生了很大变化。当一个应用程序在没有这个权限的情况下启动时,它将获得一个不允许写入某些目录(例如 Android/obb 的文件系统视图。一旦应用被授予了这个权限,这个视图就不再准确,需要更新为允许应用写入某些目录的视图。
以 Android R 文件系统现有的设置方式,不可能马上改变这个视图。正如评论#16中提到的,我们正在内部评估。我只是提供了一些额外的细节,说明为什么这和Q上的方式不一样。
虽然 Scoped Storage 将有利于安全和隐私,但新系统显然会带来比预期的更大的变化。让我们希望该公司想出一个不需要强行退出应用程序改变其读写权限的解决方案。但 sideloading 支持在谷歌的优先级上不会太高,我不会感到惊讶,特别是由于每个应用程序只需要授予权限一次,因此理想情况下,每个应用程序只需要强行停止一次。