2026 年下半年对原生开发者来说是个忙碌的窗口:Android 17 已 GA,iOS 27 即将发布,两端的 target SDK 硬性截止日期同时生效。本文把两端必须处理的破坏性变更、声明式 UI 现状,以及一份可执行的适配清单整理出来。
2026 年下半年对原生开发者来说是个忙碌的窗口:Android 17 已经 GA,iOS 27 即将发布,两端的 target SDK 硬性截止日期同时生效。这不只是”升个版本号”,而是一批会真正改变 App 行为的破坏性变更。
本文把两端的现状、必须处理的破坏性变更,以及一份可执行的适配清单整理出来。
一、版本坐标与截止日期
Android 侧
- Android 17(API 37,代号 Cinnamon Bun)已于 2026 年 6 月 16 日发布正式版并推送 AOSP;
- Google Play 要求新应用和应用更新将 targetSdk 提升到 36 及以上(2026 年 8 月 31 日起);
- Android 16(API 36)仍是当前覆盖面最广的版本,占比领先。
iOS 侧
- iOS 26.6.1 是当前绝大多数用户在跑的版本;
- iOS 27 已完成多轮开发者与公开测试,正式版预计 2026 年 9 月中旬随新机发布;
- App Store Connect 自 2026 年 4 月 28 日起,已拒绝非 iOS 26 SDK / Xcode 26 及以上构建的上传——这条已经生效,不是预告;
- Xcode 27 目前处于 beta 阶段,且要求 Apple 芯片。
换句话说:Android 这边的 target 36 是刚生效的硬门槛,iOS 那边的 SDK 门槛也已经落地。还在旧版本上拖着的团队,上传时间窗口已经很紧了。Gradle 侧的一行核对:
// app/build.gradle.kts —— targetSdk 36 是 2026-08-31 起的商店硬门槛
android {
compileSdk = 37 // 用 Android 17 SDK 编译,提前暴露行为变更
defaultConfig {
targetSdk = 36 // 商店要求;升 37 前先过完行为变更回归
}
}
二、Android 17:最需要注意的破坏性变更
Android 17 的变更清单很长,下面这几项是最容易在生产上出事故的。

1. 大屏方向锁定被移除
在 API 36 上还可以选择退出大屏适配,API 37 起这个 opt-out 被移除:面向 API 37 的应用在 600dp 及以上的屏幕上必须支持自由方向调整。
影响面:POS、自助终端、数字标牌这类硬编码横竖屏的应用,必须先改成自适应布局才能升 target。这不是配置项,是实际的开发工作量。
2. 短信验证码延迟约 3 小时
面向 API 37 的应用,读取标准短信 OTP 会有约 3 小时的延迟(SMS Retriever API 豁免,WebOTP 对所有应用生效)。
这条杀伤力极大:凡是自动读取短信验证码完成登录/激活的流程,都会静默失效。这类功能往往没有埋点,等客服收到投诉才发现。排查建议:全局搜索验证码自动填充相关代码,优先迁到 SMS Retriever API 或其他验证方式。
3. 证书透明度默认开启
面向 API 37 的应用默认启用证书透明度校验,要求证书带有足够的 Signed Certificate Timestamp。自建证书体系、企业内网代理、部分老旧的支付/认证 SDK 都可能受影响。
4. 反射与 JNI 的限制收紧
static final 字段不能再通过反射或 JNI 修改。这条会精准打击一批”黑科技”库——热修复、某些插件化框架、以及部分通过反射改系统行为的兼容库。升级前务必把这类依赖排查一遍。
5. 其他值得登记的项
- MessageQueue 改为无锁实现,反射其私有字段的代码会失效;
- 蓝牙 RFCOMM socket 断开时返回
-1,不再抛IOException,依赖异常捕获的读取逻辑要改判返回码; - 本地网络权限从可选变为强制;
- 应用内存上限对所有应用生效,不再区分 targetSdk;
- 面向 API 37 的应用 Keystore 密钥上限收紧到 5 万(其他为 20 万)。
三、iOS 27:适配重点
1. Liquid Glass 的延续
iOS 26 引入的 Liquid Glass translucent 设计语言在 27 上延续并细化。用新 SDK 构建的应用会自动继承这套观感,除非显式退出。这意味着:
- 自定义 UI 组件需要重新审一遍,避免和系统半透明控件摆在一起显得突兀;
- 图标和截图建议在新系统上重新核对, translucent 背景下的问题在截图上是看不出来的。
2. Siri 的上下文感知
新的 Siri 能够理解当前屏幕上在做什么、并触发应用内动作。这让 App Intents 从”锦上添花”变成了”分发入口”——用户通过 Siri 触达你的功能,不再需要先找到 App 再点进去。
3. 其他需要回归的点
- RCS 消息支持内联回复与更可靠的投递,跨平台的会话线程要重测;
- Wallet Insights 提供消费摘要,涉及钱包集成的应用要看新数据类型;
- 家长控制颗粒度更细,儿童类和家庭类应用面临新的审核标准。
四、声明式 UI 现状:Compose 与 SwiftUI
两端的主流都已经彻底转向声明式,但成熟度曲线不同。
Jetpack Compose
已经完全稳定且是官方推荐路径,新建项目默认就是它。Material 3 Expressive 在 Android 17 上成为新的视觉默认。对老项目,Compose 与 View 系统可以互操作,支持逐个界面渐进替换,这一点做得很友好。
SwiftUI
能力逐年补齐,但在复杂列表性能、精细动画控制、以及某些系统控件的深度定制上,很多团队仍会退回 UIKit。现实的主流做法是混合开发:新界面用 SwiftUI,复杂或性能敏感的模块保留 UIKit,两端通过 UIViewRepresentable 之类的桥接互相嵌入。
一个实用建议:不要为了”纯 SwiftUI”而重写已经稳定的 UIKit 模块。迁移的收益应该来自新界面的开发效率,而不是架构洁癖。
五、适配清单
按优先级排序,前四项是硬门槛:
- 确认构建工具链达标:Xcode 26+ 已强制,Android 侧 targetSdk 36+ 已生效。工具链不达标的直接卡在上传环节;
- 全局搜索短信验证码自动读取:Android 17 的 3 小时延迟是静默故障,必须主动排查;
- 排查反射与 JNI 黑科技:
static final修改、MessageQueue 私有字段访问,逐个列出替代方案; - 大屏方向适配:如果目标设备包含 600dp 以上屏幕,确认应用能自由旋转;
- 证书与网络安全配置:验证服务端证书链满足证书透明度要求;
- 蓝牙读取逻辑改判:
-1返回码优先于异常捕获; - Liquid Glass 视觉回归:iOS 侧在真机上过一遍主要界面;
- App Intents 补齐:至少覆盖核心功能,为 Siri 分发留出入口。
六、小结
这一轮平台更新的共同特点是:破坏性变更集中在”以前能偷偷绕过”的地方——反射改字段、静默读短信、锁定屏幕方向、绕过证书校验。这些做法在过去能跑,现在要么被禁止,要么被默认安全策略拦下。
因此适配工作的重点不是”学新 API”,而是把项目里那些依赖历史宽松行为的角落翻出来。建议尽早开一个适配分支,用新 target 跑完整回归,把问题列成清单逐项清——这类问题几乎不可能靠”升完再说”侥幸躲过。
#Android#iOS#适配#移动端

