我们来全面整理一下针对 Android 15 (API 35) 的应用在 Google Play 上架前需要完成的适配工作、最佳实践以及针对 16K 页面大小设备 的特别考量。
这份指南将分为 强制性要求、强烈建议、针对 16K 设备优化 和 上架前清单 四个部分。
一、强制性要求 (Mandatory Requirements)
若您的应用将 targetSdkVersion 设置为 35 或更高,则必须满足以下要求,否则可能无法通过审核或导致运行崩溃。
- 支持应用归档 (App Archiving)
· 要求:系统会为所有 targetSdkVersion >= 35 的应用启用归档功能。您必须确保应用在被归档和恢复时行为正常。
· 措施:
· 使用命令 adb shell cmd package archive 测试归档。
· 尝试启动已归档的应用,观察其是否能无缝、正确地恢复,且不出现数据丢失、崩溃或功能异常。
· 无需主动编码支持,但必须保证兼容。 - 隐私中心透明化 (Privacy Dashboard)
· 要求:所有对敏感权限(位置、麦克风、摄像头、身体传感器)的访问都会自动被记录并显示在系统的“隐私中心”中。
· 措施:
· 审查权限使用:杜绝任何在后台滥用敏感权限的行为。任何异常访问都将在隐私中心中一目了然,容易引发用户投诉和下架风险。
· 规范权限申请:确保所有权限都遵循运行时申请流程,并提供清晰、合理的用途说明。 - 遵循新的权限变更
· 要求:
· 精确闹钟 (SCHEDULE_EXACT_ALARM):此权限默认不再授予。必须调用 AlarmManager.canScheduleExactAlarms() 进行检查。如果返回 false,必须引导用户前往系统设置页面 (ACTION_REQUEST_SCHEDULE_EXACT_ALARM) 手动开启。
· 身体传感器:新增 BODY_SENSORS_BACKGROUND 权限。如果应用需要在后台持续访问身体传感器数据,必须申请此权限,而不仅仅是 BODY_SENSORS。
二、强烈建议的优化 (Strongly Recommended)
这些措施能显著提升应用质量、用户体验和在商店的竞争力。
- 全面适配“预测性返回” (Predictive Back)
· 措施:
· 在 AndroidManifest.xml 的 标签中启用 android:enableOnBackInvokedCallback=“true”。
· 使用新的 OnBackInvokedCallback API 取代已弃用的 onBackPressed() 和 KeyEvent.KEYCODE_BACK 处理逻辑。
· 为自定义返回操作提供流畅的动画预览,提升导航体验的一致性和可预测性。 - 默认启用“边到边”设计 (Edge-to-Edge)
· 措施:
· 将应用内容延伸到系统状态栏和导航栏之下。
· 使用 WindowInsetsController 正确处理与系统栏的重叠(如设置状态栏文字颜色)。
· 确保关键交互控件不会被系统栏遮挡。 - 为大屏幕设备优化
· 措施:
· 使用响应式布局(如 ConstraintLayout, Jetpack Compose)。
· 为不同屏幕尺寸提供不同的布局资源(如 layout-sw600dp, layout-land)。
· 测试应用在折叠屏设备上的多种状态(折叠、展开、分屏)。 - 集成动态性能框架 (ADPF) - 针对游戏/高性能应用
· 措施:
· 监听设备的热状态和节能模式信号。
· 在设备过热或进入省电模式时,智能降低帧率、渲染分辨率或计算负载,以保持流畅体验而非强行高性能导致卡顿。
三、针对 16K 页面大小设备的优化 (For 16K Page Support)
背景:Android 系统支持多种内存页面大小(如 4K, 16K)。一些现代设备(如搭载 ARM64 架构的特定芯片组)使用 16KB 的内存页面大小以获得性能优势。若应用包含原生代码(C/C++),则必须处理此差异。
- 编译与兼容性
· 要求:确保您的原生库(.so 文件)与 16K 页面设备兼容。
· 措施:
· 在 build.gradle 中配置 ndk { abiFilters ‘arm64-v8a’ },并确保为所有支持的 ABI 编译。
· 使用最新版本的 NDK 进行编译,以获取最好的兼容性支持。 - 测试与验证
· 措施:
· 在真实设备上测试:如果可能,获取使用 16K 页面大小的设备(如某些新款旗舰机)进行测试。
· 使用模拟器:Android Studio 的模拟器允许您创建使用不同页面大小的虚拟设备。创建一个页面大小为 16KB 的 ARM64 模拟器镜像进行全面测试。
· 测试重点:重点关注依赖原生代码的功能,如图形渲染、音频处理、游戏逻辑、AI模型推理等,确保无性能问题和崩溃。 - 避免硬编码假设
· 措施:在原生代码中,避免对内存页大小做任何硬编码假设(例如,不要假定 PAGE_SIZE 永远是 4096)。始终使用 sysconf(_SC_PAGESIZE) 在运行时获取正确的系统页面大小。
四、上架前最终检查清单 (Pre-Launch Checklist)
- 环境与构建:
· 使用最新稳定版的 Android Studio 和 AGP (Android Gradle Plugin)。
· 将 compileSdkVersion 和 targetSdkVersion 设置为 35。
· 构建 Release APK/AAB 包。 - 全面测试:
· 在 Android 15 真机或模拟器上测试所有核心功能。
· 强制性测试:应用归档恢复、精确闹钟权限流程、身体传感器权限。
· 优化测试:预测性返回动画、边到边UI、大屏幕布局。
· 16K 专项测试:在 16K 页面大小的设备或模拟器上测试所有依赖原生代码的功能。 - 审核与提交:
· 审查并更新您的 隐私政策,使其准确反映数据收集行为。
· 将 AAB 文件上传到 Google Play Console。
· 仔细查看 Play Console 的预发布报告,解决任何兼容性、安全或性能问题。
· 在测试轨道进行广泛测试后,再推送到生产环境。
通过遵循以上全面的指南,您不仅可以确保应用满足 Android 15 的上架强制要求,还能打造出更高质量、更面向未来设备的应用,从而在 Google Play 上获得更好的用户体验和表现。