跳到主要内容

Android 15 & iOS 18 适配文档

适配 Android 15

根据 Google Play 对于应用发布的最新政策,自2024年8月起 targetSdkVersion 必须为 API 34(Android 14)或更高版本,并从2025年起必须为 API 35(Android 15)或更高版本。

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

注意

针对 Android 15 的适配,Player Network SDK 分了3个版本进行全部的适配:

  • V1.25.00:适配 Android 15 针对所有 app 的改动。未提升 targetSdkVersion 为 35、未支持 Android 16KB。
  • V1.28.00:提升 targetSdkVersion 为 35 及适配相关改动。未支持 Android 16KB。
  • V1.29.00:支持 Android 16KB,完成 Android 15 所有适配工作。

Android 15 的整体变更,请参见 Android 15 功能以及变更

开发环境适配修改点

游戏主要需关注的改动包括:

升级 targetSdkVersion

建议将 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.7-bin 的路径。

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

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

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

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

升级 Java 版本

建议使用 Unity 默认版本 Java。

支持 16KB Page Size

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

更多详情,请参见 Support 16 KB page sizes

游戏适配 16KB 内存页面大小需要引擎支持,主流引擎的支持版本如下:

注意

项目在顺利打出 APK 之后,可以使用 Google 提供的工具 来验证所有的 SO 库是否已经满足 16KB 对齐。

目前仅有以下设备支持真机测试 16KB 功能,并且需要在开发者选项中,打开 16KB 配置(需要 OEM 解锁,重置手机数据并重启):

  • Pixel 8、8 Pro、8a(Android 15 QPR1 或以上)
  • Pixel 9、9 Pro、9 Pro XL(Android 15 QPR2 Beta 2 或以上)

如何验收

基本信息确认

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

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

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

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

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

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

AndroidManifest.xml 示例:

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

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

兼容性测试

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

适配 iOS 18

自2025年4月起,所有上传至 App Store Connect 的 iOS 和 iPadOS App 都必须使用 iOS 18 SDK 来构建。

Player Network SDK 插件使用 XCode 15 编译,支持 XCode 16(iOS 18),本次适配无其他需要关注事项。

如何验收

基本信息确认

解包产物 ipa,在 info.plist 中查看字段 DTSDKName 是否为对应的版本,例如业务使用 XCode 15 编译,则该字段为 iphoneos17.*,如果业务使用 XCode 16 编译,则为 iphoneos18.0

info.plist 示例:

...
<key>DTSDKName</key>
<string>iphoneos17.*</string>
...

兼容性测试

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

附录