You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Studio打包APK适配Android10/11存储政策报错求解

Android 10/11 存储适配报错解决方案

Android 10(API 29)引入的分区存储机制与Android 11(API 30)对该机制的强制执行,是导致APK在低版本系统正常运行、高版本报错的核心原因,可按以下方案处理:

1. 紧急临时兼容方案

仅适用于Android 10设备的紧急上线场景,不支持Android 11及以上版本,不可长期使用:
在AndroidManifest.xml的application节点添加如下属性,临时关闭分区存储校验:

<application
    ...
    android:requestLegacyExternalStorage="true">
</application>

注:Android 11及以上系统会直接忽略该属性,必须完成正式适配

2. 正式适配方案

2.1 调整权限声明

根据实际业务场景调整权限配置,无需冗余申请权限:

  • 仅读写应用专属目录:无需申请任何存储权限,直接通过Context提供的API获取路径即可
  • 访问公共媒体文件(图片/音频/视频):仅需申请READ_EXTERNAL_STORAGE权限,修改自身应用生成的媒体文件无需额外权限,修改其他应用生成的媒体文件需单独申请用户授权
  • 访问公共非媒体文件(文档/安装包等):使用系统存储访问框架(SAF)唤起用户主动选择文件/目录,无需申请存储权限
  • 全量存储访问(仅适用于文件管理器/备份类工具等特殊应用):需申请MANAGE_EXTERNAL_STORAGE特殊权限,声明后引导用户跳转系统设置页手动开启:
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />

2.2 替换存储路径逻辑

废弃原有直接读写Environment.getExternalStorageDirectory()公共根目录的逻辑,按场景替换为对应路径:

  • 应用私有缓存/文件:使用context.getExternalCacheDir()、context.getExternalFilesDir(对应目录类型)
  • 公共媒体文件读写:统一使用MediaStoreAPI进行查询、插入、修改操作
  • 跨应用文件分享:使用FileProvider生成临时访问URI,禁止直接传递本地文件路径

内容的提问来源于stack exchange,提问作者Atul Kumar 9517

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 13:24:07