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
- Unreal Engine
建议将 Unity 升级至以下 LTS 版本或以上:
- 2021.3.45f1
- 2022.3.60f1
- 6000.0.45f1
将游戏设置为针对 Android API 级别 35,在 Unreal Engine 升级 targetSdkVersion
:
-
在你的 Unreal Engine 项目中,找到 Config 文件夹,然后打开
DefaultEngine.ini
文件; -
在
DefaultEngine.ini
文件中,你需要添加或修改以下行来设置targetSdkVersion
:TargetSDKVersion=35
SDKAPILevelOverride=android-35 -
修改完成后,保存并关闭
DefaultEngine.ini
文件。
升级 Android Gradle Plugin (AGP)
- Unity
- Unreal Engine
升级 Gradle Wrapper 版本
-
在 Editor 菜单 Unity > Settings > External Tools 中找到 Gradle installed with Unity 选项并取消勾选后,在下方 Gradle 路径中选择设备的
gradle-8.7-bin
的路径。 -
修改环境变量,将环境变量
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。否则无需修改。
参考以下步骤升级 AGP:
升级 Gradle Wrapper 版本
-
下载 gradle-8.7-bin.zip 并解压;
-
修改环境变量
GRADLE_HOME
到gradle-8.7-bin
的解压路径:# sh
export GRADLE_HOME=/Users/***/.gradle/wrapper/dists/gradle-8.7-bin/****/gradle-8.7
export PATH=${PATH}:${GRADLE_HOME}/bin -
修改引擎中的
/Engine/Build/Android/Java/gradle/gradle/wrapper/gradle-wrapper.properties
文件, 将distributionUrl
改为 Gradle 8.7 的 URL:distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-all.zip
修改 AGP 版本依赖
升级至 Player Network SDK V1.28 后,INTLSDK/Source/INTLCore/Libs/Android/INTLCore_APL.xml
中已经将 AGP 升级到 8.6.0 版本,无需修改。
在 APL 文件中新增或修改:
<buildscriptGradleAdditions>
<insert>
dependencies {
classpath 'com.android.tools.build:gradle:8.6.0'
}
</insert>
</buildscriptGradleAdditions>
升级 Java 版本
- Unity
- Unreal Engine
建议使用 Unity 默认版本 Java。
AGP 8.6.0 需要搭配 Java 17,如果当前 Java 版本低于 17,需要下载安装 JDK 17 并修改环境变量:
# sh
# set JAVA_HOME to your jdk 17 installation path.
export JAVA_HOME=/Users/***/Library/Java/JavaVirtualMachines/microsoft-17.jdk/Contents/Home
export PATH=${PATH}:${JAVA_HOME}/bin
支持 16KB Page Size
从 Android 15 开始,AOSP 支持设备将内存页面大小配置为 16KB。如果您的应用使用了任何 NDK 库,无论是直接使用还是通过 SDK 间接使用,那么您将需要重新构建您的应用,以便在这些 16KB 设备上运行。随着设备制造商继续生产拥有更大物理内存(RAM)的设备,许多这类设备将采用 16KB(甚至更大)的内存页面大小来优化设备性能。为 16KB 内存页面大小的设备添加支持,可以使您的应用在这些设备上运行并使应用从相关的性能改进中受益。如果不重新编译,应用可能无法在未来 Android 版本中正式支持 16KB 的设备上正常运行。
更多详情,请参见 Support 16 KB page sizes。
游戏适配 16KB 内存页面大小需要引擎支持,主流引擎的支持版本如下:
- Unity:已支持,详见 [INFO] Unity Engine support for 16 KB memory page sizes (Android 15+)。
- Unreal Engine:UE 5.6、UE 4.27 在 4.26-plus 分支已支持,详见 Support for 16kb memory page size on Android。
项目在顺利打出 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 或以上)