安卓 10(API 29)和安卓 14(API 34)相隔多个版本,在系统特性、开发限制、API 变化等方面存在显著差异,这些差异直接影响应用开发的兼容性、功能实现和用户体验。以下是核心区别:
一、核心系统特性与 API 变化
| 类别 | 安卓 10(API 29) | 安卓 14(API 34) |
|---|---|---|
| 隐私与权限 | 首次引入分区存储(Scoped Storage),限制应用对外部存储的直接访问;新增位置权限 “仅在使用时允许”。 | 强化隐私控制:- 通知权限需单独申请(POST_NOTIFICATIONS);- 精确位置权限默认隐藏,需先申请大致位置;- 限制后台应用访问剪贴板、传感器(如加速度计)。 |
| 用户体验 | 引入系统级深色模式(AppCompatDelegate);支持折叠屏基础适配。 | 新增动态颜色(Dynamic Colors),可从壁纸提取主题色;强化折叠屏适配(WindowManager 新增折叠状态回调);支持应用语言独立设置(不受系统语言影响)。 |
| 性能与安全 | 引入应用待机分组(App Standby Buckets);限制后台启动 Activity。 | 强制启用前置摄像头隐私指示器(绿点提示);优化后台任务调度(WorkManager 2.8+ 支持即时任务);新增应用休眠机制,长期未使用的应用自动限制资源。 |
| 核心 API 更新 | 新增 androidx.window 库基础版;支持 5G 网络状态检测。 | 引入 androidx.window.core 库,完善多窗口 / 折叠屏适配;新增照片选择器(PhotoPicker),无需存储权限即可访问图片;支持精确闹钟权限(USE_EXACT_ALARM),需单独申请。 |
二、开发限制与兼容性要求
-
分区存储强制生效
- 安卓 10:分区存储默认开启,但可通过
requestLegacyExternalStorage=true暂时关闭兼容旧应用。 - 安卓 14:彻底移除
requestLegacyExternalStorage选项,所有应用必须遵循分区存储规则(通过MediaStore或沙盒目录访问文件),无法再直接读写外部存储的任意文件。
- 安卓 10:分区存储默认开启,但可通过
-
权限申请流程变化
- 安卓 10:危险权限需在运行时申请,但通知、精确位置等权限可直接在 Manifest 声明。
- 安卓 14:
- 通知权限(
POST_NOTIFICATIONS)必须在运行时动态申请,否则应用无法发送通知; - 新增 “单次权限”(如位置、相机),用户可授权应用仅本次使用权限;
- 权限分组更严格,例如
READ_MEDIA_IMAGES和READ_MEDIA_VIDEO需分别申请。
- 通知权限(
-
应用行为限制
- 安卓 10:限制后台启动 Activity,需通过通知渠道引导用户打开。
- 安卓 14:进一步限制后台行为,例如:
- 后台应用访问剪贴板时会触发系统提示;
- 后台启动 Service 需使用
startForegroundService()并在 5 秒内转为前台服务; - 针对 “滥用唤醒锁” 的应用,系统会自动降低其优先级。
三、适配重点差异
| 开发场景 | 安卓 10 适配要点 | 安卓 14 适配要点 |
|---|---|---|
| 文件操作 | 逐步迁移到 MediaStore 或应用沙盒;如需兼容旧逻辑,可临时开启 requestLegacyExternalStorage。 | 完全基于分区存储开发,使用 MediaStore 访问公共媒体,或 Context.getExternalFilesDir() 存储应用私有文件;推荐使用系统照片选择器(PhotoPicker)替代自定义文件选择。 |
| UI / 主题 | 支持深色模式,需在布局中使用 ?attr/ 引用主题属性。 | 适配动态颜色(Theme.Material3.DynamicColors.DayNight);针对折叠屏 / 多窗口,使用 WindowManager 监听窗口尺寸变化,避免 UI 变形。 |
| 权限处理 | 重点处理位置权限的 “仅在使用时允许” 场景。 | 新增通知权限申请逻辑;处理 “单次权限” 的重新申请流程;精确位置权限需先申请大致位置,用户同意后再申请精确权限。 |
| 后台任务 | 使用 WorkManager 替代后台 Service;遵循应用待机分组规则。 | 优化 WorkManager 任务调度,优先使用 setExpedited() 处理紧急任务;避免后台频繁唤醒设备,否则可能被系统限制。 |
四、API 废弃与替代
| 安卓 10 及之前的 API | 安卓 14 中的替代方案 |
|---|---|
Environment.getExternalStorageDirectory()(直接访问外部存储) | Context.getExternalFilesDir()(应用私有目录)或 MediaStore(公共媒体) |
隐式广播(如 ACTION_PACKAGE_REPLACED) | 动态注册广播或使用 WorkManager 监听系统事件 |
AlarmManager.set()(普通闹钟) | 若需精确闹钟,使用 AlarmManager.setExactAndAllowWhileIdle() 并申请 USE_EXACT_ALARM 权限 |
直接使用 ClipboardManager 后台访问剪贴板 | 仅在前台时访问,后台访问会触发系统提示 |
五、总结:开发时的核心注意事项
- 兼容性策略:若应用需同时支持安卓 10 和 14,需通过
Build.VERSION.SDK_INT区分版本逻辑(如分区存储的兼容处理、权限申请差异)。 - 隐私合规:安卓 14 对权限和后台行为的限制更严格,需确保应用仅在必要时申请权限,避免被系统标记为 “不安全”。
- 用户体验:安卓 14 更强调个性化(动态颜色、应用语言独立)和场景适配(折叠屏、多任务),需优化 UI 以适配新特性。
建议通过 Android 开发者官网 查看完整的 API 变更列表,结合 AndroidX 库(如 core-ktx、window)简化跨版本适配。

被折叠的 条评论
为什么被折叠?



