Android 15 & iOS 18 Compatibility Documentation
Android 15 Compatibility
According to Google Play, latest policies for app publishing, starting from August 2024, targetSdkVersion must be API 34 (Android 14) or higher, and from 2025, it must be API 35 (Android 15) or higher.
To meet long-term compliance requirements and avoid release blocks or app removal risks, Player Network SDK V1.28 has upgraded targetSdkVersion to 35. Integrators need to complete the necessary build environment adjustments.
Behavioral Change Impact
For Android 15, Google has introduced several mandatory behavior changes and permission restrictions. These changes only take effect when targetSdkVersion = 35 and mainly include:
| Category | Remarks |
|---|---|
| PendingIntent security policy | Must explicitly declare FLAG_IMMUTABLE or FLAG_MUTABLE |
| Foreground service declaration | Must declare foregroundServiceType in the Manifest file |
| Notification permissions | Starting from Android 13+, notification permission must be requested at runtime |
| Storage access restriction | Access to the /Android/data and /obb directories is prohibited. Using SAF (Storage Access Framework) or MediaStore is recommended |
| JobScheduler restrictions | Job scheduling is more strictly limited, and frequent jobs may be suppressed by the system |
For the full list of changes, see Android 15 features and changes.
If integrators do not upgrade targetSdkVersion = 35, the above behaviors will not be triggered, and the SDK cannot guarantee correct functionality under a non-compatible behavior model.
Support 16KB Page Size
Starting from Android 15, AOSP supports devices with memory page sizes configured to 16KB.If your app uses any NDK libraries, whether directly or indirectly through an SDK, you will need to rebuild your app to run on these 16KB devices.As device manufacturers continue producing devices with larger physical As device manufacturers continue to produce devices with larger physical memory (RAM), many of these devices will adopt 16KB (or even larger) memory page sizes to optimize performance.Adding support for devices with 16KB memory page size allows your app to run on these devices and benefit from the associated performance improvements.If the app is not recompiled, it may not run properly on devices with 16KB memory pages in future Android versions.
Note: Game adaptation for 16KB memory page size requires engine support. The support status and plans for mainstream engines are as follows:
- Unity: Not supported yet. Planned support in LTS versions. See https://discussions.unity.com/t/about-support-16-kb-page-sizes-on-android-15/950036 for details
- Unreal: Not supported
Currently, only Pixel 8, 8 Pro, and 8a devices running Android 15 QPR1 Beta can enable 16KB mode in Developer Options. The adoption of 16KB mode will take time. Businesses can follow engine support plans to determine or adjust the timing for game support.
Development Environment Compatibility Changes
- Unity
- Unreal Engine
It is recommended to upgrade Unity to the following LTS version or higher:
- 2021.3.45f1
- 2022.3.60f1
- 6000.0.45f1
Set the game to target Android API level 35 in Unreal Engine by upgrading targetSdkVersion:
- In your Unreal Engine project, locate the Config folder and open the
DefaultEngine.inifile; - In the
DefaultEngine.inifile, add or modify the following lines to settargetSdkVersion:
TargetSDKVersion=35
SDKAPILevelOverride=android-35
- After making the changes, save and close the
DefaultEngine.inifile.
Upgrade Android Gradle Plugin (AGP)
- Unity
- Unreal Engine
Upgrade Gradle Wrapper Version
-
In the Editor menu, go to Unity > Settings > External Tools, uncheck the Gradle installed with Unity option, and then select the path to the device’s
gradle-8.7-binin the Gradle path field below. -
Modify environment variables by setting the
GRADLE_HOMEenvironment variable to the path of Gradle version 8.7:# sh
export GRADLE_HOME=/Users/***/.gradle/wrapper/dists/gradle-8.7-bin/****/gradle-8.7
export PATH=${PATH}:${GRADLE_HOME}/bin
Modify AGP version dependencies
After upgrading to Player Network SDK V1.28, AGP has already been upgraded to version 8.6.0 in Assets/Plugins/Android/baseProjectTemplate.gradle, so no further modifications are needed.
Check the Assets/Plugins/Android/baseProjectTemplate.gradle file for "com.android.tools.build:gradle:x.x.x". If the version is lower than 8.6.0, update it to 8.6.0.Otherwise, no modification is needed.
Refer to the following steps to upgrade AGP:
Upgrade Gradle Wrapper version
-
Download gradle-8.7-bin.zip and extract it;
-
Modify the
GRADLE_HOMEenvironment variable to point to the extracted path ofgradle-8.7-bin:# sh
export GRADLE_HOME=/Users/***/.gradle/wrapper/dists/gradle-8.7-bin/****/gradle-8.7
export PATH=${PATH}:${GRADLE_HOME}/bin -
In the engine, modify the file
/Engine/Build/Android/Java/gradle/gradle/wrapper/gradle-wrapper.properties, and change thedistributionUrlto the URL for Gradle 8.7:distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip
Modify AGP version dependencies
After upgrading to Player Network SDK V1.28, AGP has already been upgraded to version 8.6.0 in INTLSDK/Source/INTLCore/Libs/Android/INTLCore_APL.xml, so no modification is needed.
Add or modify the following in the APL file:
<buildscriptGradleAdditions>
<insert>
dependencies {
classpath 'com.android.tools.build:gradle:8.6.0'
}
</insert>
</buildscriptGradleAdditions>
Upgrade Java version
- Unity
- Unreal Engine
It is recommended to use the default Java version provided by Unity.
AGP 8.6.0 requires Java 17. If the current Java version is lower than 17, download and install JDK 17 and modify the environment variables accordingly:
# 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
Validation
Basic Information Confirmation
Unpack the APK and check the AndroidManifest.xml file in the package to ensure the following fields meet expectations:
-
Check the
packageattribute in<manifest>to confirm the package name is correct; -
Check the
platformBuildVersionCodeattribute in<manifest>; the expected value should be 35; -
Check the
android:minSdkVersionattribute in<uses-sdk>; the value should match the minimum Android API version supported by your project;Android API vs. Android version reference: https://apilevels.com/
-
Check the
android:targetSdkVersionattribute in<uses-sdk>; the expected value should be 35;
AndroidManifest.xml example:
{/* -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" />
......
Compatibility Testing
Use the build for compatibility testing, with a focus on its performance on Android 15.
iOS 18 Compatibility
Starting from April 2025, all iOS and iPadOS apps uploaded to App Store Connect must be built using the iOS 18 SDK.
The Player Network SDK plugin is compiled with Xcode 15 and supports Xcode 16 (iOS 18). There are no additional considerations for this adaptation.
Validation
Basic Information Confirmation
Unpack the IPA and check the DTSDKName field in the Info.plist file to ensure it matches the corresponding version. For example, if the app is compiled with Xcode 15, this field should be iphoneos17.*, and if compiled with Xcode 16, it should be iphoneos18.0.
info.plist example:
<key>DTSDKName</key>
<string>iphoneos17.*</string>
Compatibility Testing
Use the build for compatibility testing, focusing on its performance on iOS 18.