跳至正文
兼容性与性能 发布机构:西安守界御盾信息安全技术有限公司 95 views

Android 17 折叠屏与大屏 APP 加固验收矩阵 V1(未执行模板)

从阅读进入评估 把大屏与窗口状态、候选包身份、组件路径、阻断条件和回滚对象整理成可执行矩阵;未执行项不作兼容承诺。
申请大屏兼容矩阵评估

这是一份 Android 17 折叠屏、大屏、多窗口与桌面窗口的 APP 加固验收模板,不是御盾兼容性实测报告。模板中的每一个结果都默认标记为“未执行”;只有绑定真实业务提交、系统、窗口状态、原始 Release、基础保护、目标保护和最终发布物并完成对应业务步骤后,项目团队才可以把状态改成“通过”“失败”或“阻断”。

模板用途

项目常用一句“折叠屏兼容”概括多个完全不同的状态,导致问题无法复现。Android 官方指出,目标 API 37 的应用在符合条件的大屏上不再能依赖旧方向、可调整大小和宽高比限制退出自适应行为;同一设备又可能因为外屏、展开、旋转、分屏和桌面窗口获得不同的可用区域。矩阵的目标是把这些条件与候选包身份、业务路径和发布决定放到同一张表,而不是制造一个笼统的通过率。

本模板适合研发、QA、安全和发布团队共同使用。研发维护平台与应用实现,QA 定义可复现步骤与视觉阈值,安全团队管理保护候选与边界,发布负责人决定阻断、降级或回滚。需要先理解规则与归因方法,可阅读Android 17 大屏和折叠屏 APP 加固验收指南

读者对象

适用于 Android 研发负责人、移动 QA、安全工程师、跨平台技术负责人和发布负责人。团队应先约定谁提供原始 Release、谁生成保护产物、谁控制正式签名、谁执行窗口与业务路径、谁拥有阻断和回滚权限。模板不能由单一角色在缺少真实执行时自行填写“通过”。

核心结论

  • 折叠屏兼容必须绑定目标 API、窗口条件、折叠姿态和真实业务步骤;设备名称不能代替这些条件。
  • 原始 Release、基础保护、目标保护和最终发布物要按同一业务提交逐级对照。
  • 首页启动、一次展开或静态截图不能代表 Camera、Surface、WebView、支付和状态恢复通过。
  • 未执行、未覆盖与不适用均不是通过;公开结论只能覆盖实际记录的格子。
  • 御盾可以参与保护产物与发布证据,不能替应用团队完成自适应布局或替服务端决定业务结果。

状态枚举

状态 含义 是否可当作兼容证据
未执行 尚未在真实候选与目标环境运行
未覆盖 已明确不在本轮范围,但仍可能影响发布
通过 在记录的环境和步骤中符合预设阈值 仅限该范围
失败 可复现地不符合阈值 否,需归因
阻断 失败或证据缺失使候选不得发布
不适用 经确认该业务没有该组件或路径 需说明依据

“空白”“没有发现问题”和“测试人员没有反馈”都不是状态。对外页面不得把未执行和未覆盖合并为通过,也不得用某一台设备的一次结果宣称覆盖全部 Android 17 大屏。

技术拆解

候选对象登记

字段 A 旧稳定 Release B API 37 原始 Release C 基础保护 D 目标保护 E 最终发布物
业务提交 待填写 待填写 与 B 对应 与 B 对应 与 D 对应
targetSdk 待填写 待填写 待填写 待填写 待填写
构建工具版本 待填写 待填写 待填写 待填写 待填写
候选摘要 待填写 待填写 待填写 待填写 待填写
签名责任 待填写 待填写 待填写 待填写 待填写
保护策略 不适用 不适用 待填写 待填写 待填写
渠道或商店 待填写 待填写 待填写 待填写 待填写
回滚对象 待填写 待填写 待填写 待填写 待填写

正式执行时,不能用 Debug、不同分支、不同 SDK 或不同业务数据替代同一 Release 线。对外脱敏报告可以隐藏摘要和签名细节,但内部发布台账必须能回答每一列属于哪个真实对象。

大屏与窗口状态矩阵

场景 B 原始 Release C 基础保护 D 目标保护 E 最终发布物 关键观察
普通手机竖屏 未执行 未执行 未执行 未执行 启动、导航、输入
大屏竖屏 未执行 未执行 未执行 未执行 布局宽度、控件位置
大屏横屏 未执行 未执行 未执行 未执行 方向、双栏、动画
折叠外屏 未执行 未执行 未执行 未执行 紧凑窗口与状态
展开内屏 未执行 未执行 未执行 未执行 重排、折痕与恢复
书本姿态 未执行 未执行 未执行 未执行 铰链两侧内容
桌面姿态 未执行 未执行 未执行 未执行 控件区域与输入
分屏 未执行 未执行 未执行 未执行 连续调整与可见性
自由窗口 未执行 未执行 未执行 未执行 最小、最大、拖动
连接显示器 未执行 未执行 未执行 未执行 显示方向与资源
前后台恢复 未执行 未执行 未执行 未执行 会话、导航与表单
进程重建恢复 未执行 未执行 未执行 未执行 保存状态与幂等

每一格的执行记录应附带系统版本、窗口宽高或尺寸类别、折叠姿态、方向、首次失败步骤、预期与实际结果。视觉问题应绑定可复核截图或视频的受控引用,但公开内容不能包含客户资料、账号、设备标识或生产日志。

组件与业务路径矩阵

组件或路径 原始 Release 基础保护 目标保护 核心判定
冷启动与首页 未执行 未执行 未执行 无异常退出,首屏状态正确
登录与账号恢复 未执行 未执行 未执行 输入、会话、旋转恢复正常
表单与提交 未执行 未执行 未执行 状态不丢失,不重复提交
CameraX/Camera2 未执行 未执行 未执行 预览、拍摄、旋转和恢复正确
Surface/视频 未执行 未执行 未执行 尺寸、画面、播放状态正确
WebView 未执行 未执行 未执行 重排、桥接、页面状态正常
地图与定位 未执行 未执行 未执行 地图尺寸、手势与标记正常
Native SDK 未执行 未执行 未执行 加载、回调和窗口变化正常
Flutter/RN/KMP 未执行 未执行 未执行 插件、桥接和重组路径正常
Unity 未执行 未执行 未执行 渲染面、输入和生命周期正常
支付与高价值动作 未执行 未执行 未执行 服务端幂等与结果一致
覆盖升级与回滚 未执行 未执行 未执行 签名一致、数据保留、可回滚

项目可删除不适用行,但必须写明理由。首页通过不能替代支付、相机、文档或真实高价值路径;普通手机结果也不能替代折叠与多窗口结果。

归因与发布门禁

归因从 B 开始。B 失败时,先修 Android 17 平台、布局、生命周期或 SDK 问题;B 正常而 C 失败时,检查最小保护、构建与初始化差异;C 正常而 D 失败时,只调整一个目标保护变量;D 正常而 E 失败时,检查签名、渠道、商店生成物和最终安装对象。任何阶段都不得用另一包体的结果替代当前候选。

建议阻断条件包括:原始 Release 在目标环境未通过、基础保护首次出现关键路径失败、目标保护导致不可接受的视觉或稳定性回归、最终发布物身份不明、覆盖升级失败、关键状态未执行却被误标为通过。发布负责人应同时保存回滚对象和触发条件。

事实依据与脱敏证据

编号 公开依据 支持的事实 本模板如何使用
1 Android 17 方向与 resizability API 37 大屏旧限制与例外 定义平台条件和常见风险
2 Android 17 准备指南 Android 17 移除临时退出路径并给出 API 37 规划 区分当前要求与未来准备
3 Window size classes 窗口可用区域动态变化 记录窗口而非只记录设备
4 Foldables quality 折叠姿态、相机、多窗口与多实例测试 构成状态和组件矩阵
5 Fold awareness 折痕、铰链与姿态信息 检查内容布局区域
6 Google Play target API 当前 2026 API 36 要求 避免误报 API 37 截止

御盾可以在授权范围内参与真实保护产物的对照、异常归因、发布门禁和回滚证据,不替代应用团队的大屏布局、相机实现、第三方 SDK 修复、商店审核或服务端业务裁决。本模板没有任何现场结果,不构成兼容性承诺。

工程落地

开始执行前,先冻结构建输入、targetSdk、框架与 SDK 版本,生成原始 Release,再按同一输入生成基础保护和目标保护。为每次执行分配记录编号,把窗口尺寸、尺寸类别、折叠姿态、方向和首个失败步骤写入同一条记录。涉及正式商店时,最终安装对象应另列一列,不能用上传前 AAB 或中间 APK 的结果替代。

执行结束后按“平台与原包、基础保护、目标保护、最终发布”顺序归因,并由不同负责人复核。若结果不能复现、截图含敏感内容、候选身份不清或回滚对象缺失,状态应保持阻断或未覆盖,而不是为了发布进度改成通过。

攻防视角

窗口变化可能让原本在小屏上不可见的控件、错误提示或调试内容进入画面,也可能因状态丢失造成重复提交、流程跳转和客户端与服务端不一致。防守不能靠固定竖屏长期掩盖这些问题:应用负责布局与状态,客户端保护负责关键分支与完整性,服务端负责幂等、权限和最终业务结果。兼容性通过不等于保护强度通过,两类证据应分别验收。

风险边界

本模板没有设备、应用或保护策略的现场结果,不代表御盾或任何第三方产品已经兼容 Android 17 大屏。Android 17 规则存在 targetSdk、显示条件、游戏和用户设置等边界;Google Play 当前 2026 年要求仍是 API 36。实施时必须重新核对官方文档,并只对实际执行范围作结论。

常见误区

  • 把“折叠屏”当成一个固定状态,不记录外屏、展开、姿态和窗口尺寸;
  • 用旧线上包和新保护包直接比较,忽略 targetSdk、SDK 与构建工具变化;
  • 只测首页启动,不测 Camera、Surface、WebView、支付和状态恢复;
  • 全部关闭保护后业务恢复,就宣布某一保护模块有问题;
  • 把未执行、未覆盖或空白格自动统计为通过;
  • 用一台设备的一次结果对外宣称所有 Android 17 折叠屏兼容。

FAQ

这份矩阵可以直接写“御盾 Android 17 已兼容”吗?

不可以。模板只定义对象、步骤与状态。没有绑定真实候选并执行的项目必须保持“未执行”或“未覆盖”。

为什么要保留基础保护包?

基础保护帮助判断最小保护范围是否正常;如果直接比较原包和最高目标策略,出现异常时很难定位是构建、SDK、Native 还是哪一层策略造成差异。

游戏属于例外,还要测吗?

要。例外仅说明 Android 17 大屏方向和 resizability 规则的适用边界,不代表游戏的 Unity Surface、输入、折叠姿态、分屏、状态恢复与最终发布物无需测试。

如何申请真实矩阵?

可通过御盾内测申请提交原始 Release、候选范围、目标系统、窗口状态和关键业务路径。测试范围、数据处理、未覆盖项和发布责任应在 PoC 前书面确认。

结语

矩阵的价值不是让每一格尽快变绿,而是让每一个“通过”都有对象、条件和步骤,让每一个“未覆盖”都不会被隐藏。先固定原始 Release,再逐级进入基础保护、目标保护和最终发布物,才能把 Android 17 平台变化、应用自适应缺陷、第三方组件与保护差异分开,形成可发布、可降级和可回滚的工程结论。

相关阅读