Skip to main content

Android 16 & Target 36 适配文档

适配 Android 16

根据 Google Play 对于应用发布的最新政策,自2025年8月31日起 targetSdkVersion 必须为 API 35(Android 16)或更高版本,并从2026年8月起必须为 API 36(Android 16)或更高版本。**API预计 API 36(Android 16)将在 2026 年第三季度 左右成为强制要求,这基于 Google 每年的执行模式。

为满足长期合规要求、避免发布阻断及版本下架风险,Player Network SDK V1.32 已升级 targetSdkVersion 为 36,接入方需完成必要的构建环境调整。

行为变更影响

对于 Android 16,Google 引入了多项强制行为变更和权限约束,这些变更仅在 targetSdkVersion = 36 时生效,主要包括:

类别备注
Edge-to-Edge 强制适配View.setSystemUiVisibilitySYSTEM_UI_FLAG_* 系列常量在 Android 16 上完全失效,需改用 WindowInsetsControllerCompat 实现沉浸式与全屏
Predictive Back 手势废弃 onBackPressed() 重写方式,必须改用 OnBackPressedDispatcher + OnBackPressedCallback 处理返回逻辑

整体变更请参见 Android 16 功能以及变更

note

若接入方未同步升级 targetSdkVersion = 36,上述行为不会触发,SDK 无法在非兼容行为模型下保障功能正确性。

支持 16KB Page Size

从 Android 16 开始,AOSP 支持设备将内存页面大小配置为 16KB。如果您的应用使用了任何 NDK 库,无论是直接使用还是通过 SDK 间接使用,那么您将需要重新构建您的应用,以便在这些 16KB 设备上运行。随着设备制造商继续生产拥有更大物理内存(RAM)的设备,许多这类设备将采用 16KB(甚至更大)的内存页面大小来优化设备性能。为 16KB 内存页面大小的设备添加支持,可以使您的应用在这些设备上运行并使应用从相关的性能改进中受益。如果不重新编译,应用可能无法在未来 Android 版本中正式支持 16KB 的设备上正常运行。

注:游戏适配 16KB 内存页面大小需要引擎支持,主流引擎的支持情况以及计划如下:

当前仅有 Pixel 8、8Pro、8a 设备安装了 Android 16 QPR1 Beta 版本后可以在开发者选项中开启 16KB 模式,16KB 模式的普及也会有一个时间窗口,业务可以关注引擎的支持计划,来确定或调整游戏的支持时间。

开发环境适配修改点

建议将 Unity 升级至以下 LTS 版本或以上:

  • 2021.3.45f1
  • 2022.3.60f1
  • 6000.0.45f1

升级 Android Gradle Plugin (AGP)

升级 Gradle Wrapper 版本
  1. 在 Editor 菜单 Unity > Settings > External Tools 中找到 Gradle installed with Unity 选项并取消勾选后,在下方 Gradle 路径中选择设备的 gradle-8.11.1-bin 的路径。

  2. 修改环境变量,将环境变量 GRADLE_HOME 设置为 Gradle 8.11.1 版本的路径:

    # sh
    export GRADLE_HOME=/Users/***/.gradle/wrapper/dists/gradle-8.11.1-bin/****/gradle-8.11.1
    export PATH=${PATH}:${GRADLE_HOME}/bin
修改 AGP 版本依赖
note

升级至 Player Network SDK V1.32 后,Assets/Plugins/Android/baseProjectTemplate.gradle 中已经将 AGP 升级到 8.9.1 版本,无需修改。

查看 Assets/Plugins/Android/baseProjectTemplate.gradle 文件中的 "com.android.tools.build:gradle:x.x.x",如果版本低于 8.9.1,需要修改至 8.9.1。否则无需修改。

升级 Java 版本

建议使用 Unity 默认版本 Java。

如何验收

基本信息确认

解包产物 APK,在包中的 AndroidManifest.xml 文件中,查看以下字段是否符合预期:

  • 查看 <manifest> 中的 package 属性,以确认产物包名是否正确;

  • 查看 <manifest> 中的 platformBuildVersionCode 属性,其值预期应为 36;

  • 查看 <uses-sdk> 中的 android:minSdkVersion 属性,其值应为业务所支持的最低 Android API 版本;

    Android API 与 Android 版本对照表:https://apilevels.com/

  • 查看 <uses-sdk> 中的 android:targetSdkVersion 属性,其值预期应为 36;

AndroidManifest.xml 示例:

{/*-AndroidManifest*/}
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
android:versionCode="1"
android:versionName="1.0"
android:compileSdkVersion="36"
android:compileSdkVersionCodename="14"
package="your.package.name"
platformBuildVersionCode="36"
platformBuildVersionName="14">

<uses-sdk
android:minSdkVersion="16"
android:targetSdkVersion="36" />
......

兼容性测试

使用产物进行兼容性测试,重点关注产物在 Android 16 上的表现。

附录