引子
Android 17(API 级别 37)是 Android 向"智能系统"过渡的起点:自适应优先的开发标准、下一代隐私与安全能力、更完善的桌面模式支持。官方发布了版本总览、所有应用的行为变更与目标 API 37 的行为变更三份文档。
本文按"先保命、再升级"的顺序,把适配要点整理成一份可落地的清单。
1、适配策略总览
Android 17 的行为变更分两层:
- 对所有应用生效:无论
targetSdkVersion是多少,装上 Android 17 就生效——这类变更必须最先验证 - 仅对 targetSdkVersion=37 生效:升级 target 后才触发——可按节奏安排,但要提前排期
建议的适配节奏:先全量回归"所有应用变更",再升级 targetSdkVersion 到 37,逐一验证第二层变更。
2、必须优先验证的行为变更
以下是官方标注"影响所有应用"的重点项:
- 安全与隐私默认值收紧:部分敏感权限与系统行为在 17 上默认更严格,需检查崩溃与功能异常
- ART 运行时改进:JIT/AOT 混合编译策略调整,关注启动速度与内存曲线变化
- 前台服务与通知:类型限制更严格,声明不对会被系统拒绝启动
- 媒体与相机权限:部分接口要求显式声明,未适配的应用将拿不到数据
排查顺序:崩溃日志 → 权限拒绝 → 前台服务启动失败 → 相机/媒体黑屏
3、升级 targetSdkVersion 到 37
android {
compileSdk 37
defaultConfig { targetSdk 37 }
}
升级后重点回归:
- 16KB 页面大小:17 设备逐步支持 16KB 内存页,含原生库的应用需重编译验证
- 广播与 JobScheduler:隐式广播限制范围扩大
- 存储权限:分区存储全面强制,
READ_EXTERNAL_STORAGE等旧权限进一步失效
4、大屏与桌面模式
Android 17 将平板、折叠屏与桌面模式视为一等公民:
- 应用需支持多窗口与响应式布局,横竖屏与分屏下都要可用
- 桌面模式下窗口可自由缩放,固定方向的应用会被系统强制 letterbox
- 建议用
WindowSizeClass适配布局断点,替代写死的尺寸判断
5、兼容性排查工具链
- 兼容性框架:逐项开关新行为,快速定位是哪条变更引起的问题
- Perfetto / Macrobenchmark:量化升级前后的启动、卡顿差异
- Lint 规则:升级 AGP 后跑一遍新告警
./gradlew :app:lintRelease
6、总结
对 Android 17 的适配,本质是三步:先按"所有应用行为变更"做全量回归,再升 targetSdk 37 验证第二层变更,最后补齐大屏与桌面模式体验。对于仍在维护的应用,建议在 17 覆盖率上来之前完成适配——越晚适配,踩坑成本越高。

