跳到主要内容

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,Google 引入了多项强制行为变更和权限约束,这些变更仅在 targetSdkVersion = 35 时生效,主要包括:

类别备注
PendingIntent 安全策略必须显式声明 FLAG_IMMUTABLEFLAG_MUTABLE
前台服务声明必须在 Manifest 文件中声明 foregroundServiceType
通知权限Android 13+ 起,通知权限必须运行时申请
存储访问限制禁止访问 /Android/data/obb 目录,推荐使用 SAF 或 MediaStore
JobScheduler 限制Job 限制更严格,如频繁调度被系统抑制

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

注意

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

支持 16KB Page Size

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

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

当前仅有 Pixel 8、8Pro、8a 设备安装了 Android 15 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.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。

如何验收

基本信息确认

解包产物 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 上的表现。

附录