上期重点:Android 11 中的前台服务类型

—— 点击查看92ce3799baef00b59c02eee18af9da0c.png

本期重点:Android分区存储

Android分区存储是从Android 10开始的重要行为变更,分区存储改变了应用访问外部存储的方式、并对媒体数据进行分类以改变外部存储数据混乱的情况,同时限制对隐私数据访问限制保护用户隐私。

Android 11 对分区存储功能进行了更加严格的限制。

● 在Android 10上,无法兼容分区存储的应用可以使用 requestLegacyExternalStorage  来规避分区存储的限制。而当你的应用升级 targetSdkVersion 到 Android 11 (API 等级 30) 之后,这个标志将不再生效。

● 系统允许应用选择是否开启分区存储模型,Android 11上,将会根据应用TargetSDK来决定应用的存储模型:`应用TargetSDK >= 30,将强制打开分区存储模型。

● 当应用运行在 Android 11 系统上时,无论应用 targetSdkVersion 是什么都将无法访问其他应用的专属存储空间,例如 getExternalFilesDir() API 返回的路径。

1. 分区存储如何工作

365c679daa7690b3d24fdae0526909ea.png上图是分区存储的总体结构。在Android 11,分区存储被分为了两大部分:共享存储空间、应用专属存储空间(Android/data、Android/obb)。存放到共享存储空间的数据可以与其他应用共享;而存放到应用专属存储空间的数据则是应用的私有数据,其他应用无法访问。并且Google重新引入了对使用直接文件路径方式访问媒体文件的支持,用于管控共享存储空间内容,能够更加精细化的管理共享存储空间里面的数据。通过支持文件路径方式访问,能够兼容一些三方库文件和原生代码库。而应用专属存储空间,应用则无需权限即可访问自己沙盒化的应用空间,而其他应用无法访问。2. 分区存储新权限以及新API另外,相较于 Android 10,Android 11 在有关存储的权限和接口方面也作出了如下改进:相应的也提供了一些权限以及功能: ● MANAGE_EXTERNAL_STORAGE为类似文件管理、手机管家等应用,提供了能访问所有共享存储空间的能力,但是依然无法访问其他应用专属存储空间。● 根据开发者的需求反馈,新增了MediaStore的批量处理多媒体文件接口:○ createWriteRequest○ createFavoriteRequest○ createTrashRequest○ createDeleteRequest3. 分区存储带来什么问题正是因为分区存储带来的这些变化,给应用适配以及应用兼容性带来了一些问题。● 访问其他应用应用专属存储空间在Android 11上,所有应用都无法访问其他应用专属存储空间,三方SDK分享访问其他应用专属存储空间,将会导致分享功能失效。建议分享使用FileProvider而不是直接使用路径进行分享。● 直接路径访问共享存储空间新能问题在直接路径访问带给Android更加精细化管控的同时,也带来了一个性能问题。直接路径访问共享存储空间,会带来一些性能问题。建议是通过MediaStore接口来访问共享存储空间数据。● SAF API限制○ SAF将无法选择各个Volume的根目录○ SAF将无法选择Downloads目录○ SAF将无法访问应用专属存储空间4. 结束语分区存储功能,从Android 10开始实施,但仍允许少部分无法兼容的应用选择豁免此项政策的限制,而Android 11则会根据 targetSdkVersion 来决定是否打开,且所有应用都不可访问其他应用的私有存储空间。通过对存储空间管理的加强,在安全性、隐私性和存储空间归属上都会有很大的改进。5. 参考文档Android 11 中的存储机制更新:https://developer.android.google.cn/preview/privacy/storage 
使用OPPO远程真机进行Android 11兼容测试OPPO开放平台远程真机现已上线了搭载有Android 11 开发者预览版的测试机型——OPPO Find X2,欢迎开发者前来使用。OPPO远程真机官网链接:https://open.oppomobile.com/newservice/capability?pagename=cloudmachine0293c4b18b5a1a382e079f6520bbfac7.png065a7847d6ccf4918a171bad488fd74a.png065a7847d6ccf4918a171bad488fd74a.png Android 11 开发者测试版适配指引
Logo

一站式 AI 云服务平台

更多推荐