返回

Android 11 的分区存储之殇:开发者心声

Android

Android 11开发者的痛点:分区存储之争

Android 11 的发布带来了令人振奋的新功能和 API,但也给开发者带来了一个棘手的问题:分区存储。这一新特性旨在提升用户对数据隐私和安全的控制,但也给应用程序的存储访问带来了限制。

理解分区存储

在 Android 11 中,文件访问被划分为两个分区:

  • 外部存储: 用于存储来自外部来源(如 SD 卡或 USB 驱动器)的文件。
  • 应用专属存储: 用于存储特定应用程序生成或使用的文件。

这种分离旨在防止应用程序访问敏感的用户数据,例如图片、视频和文档。

targetSdkVersion 的影响

应用程序的 targetSdkVersion 直接影响分区存储的生效情况:

  • targetSdkVersion 升级到 Android 11 时,分区存储将强制生效。
  • targetSdkVersion 未升级到 Android 11 时,分区存储在 Android 11 系统上不会强制生效。

此差异导致了开发者面临的困境。对于目标为 Android 10 或更低版本的应用程序,即使它们运行在 Android 11 系统上,分区存储也不会生效。但是,如果应用程序针对 Android 11 及更高版本进行编译,则必须遵守分区存储限制。

开发者的担忧

开发者对分区存储的担忧主要集中在以下几个方面:

  • 用户体验不佳: 分区存储限制了应用程序访问外部存储的能力,从而可能导致用户难以访问和共享文件。
  • 功能受限: 依赖于外部存储的应用程序(如媒体播放器或文件管理器)将受到分区存储的限制,影响其功能。
  • 维护成本: 开发者必须更新其应用程序以适应分区存储,这需要额外的开发和维护成本。
  • 对现有应用程序的影响: 针对较早 Android 版本的现有应用程序可能无法在分区存储生效后正常运行。

寻求解决方案

为了解决这些担忧,开发者正在探索各种解决方案,包括:

  • Scoped Storage: 一个 API,允许应用程序请求访问特定类型的文件,从而减少了对分区存储的影响。
  • SAF(存储访问框架): 一个 API,允许应用程序通过文档提供程序访问文件,绕过分区存储限制。
  • 移动应用程序库: 一些库可以帮助开发者实现分区存储兼容性,例如 Room 和 Kotlin Coroutines。

Google Play 的政策

Google Play 政策要求针对 Android 11 及更高版本的应用程序必须实现分区存储兼容性。对于现有应用程序,Google 提供了宽限期,允许它们在 2023 年 11 月之前更新。

展望未来

分区存储是一个有争议的功能,它在提升用户隐私和限制应用程序存储访问之间取得了平衡。随着开发者探索适应分区存储的方法,预计未来几个月内会有更多解决方案和最佳实践的出现。