Skip to main content

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:

CategoryRemarks
PendingIntent security policyMust explicitly declare FLAG_IMMUTABLE or FLAG_MUTABLE
Foreground service declarationMust declare foregroundServiceType in the Manifest file
Notification permissionsStarting from Android 13+, notification permission must be requested at runtime
Storage access restrictionAccess to the /Android/data and /obb directories is prohibited. Using SAF (Storage Access Framework) or MediaStore is recommended
JobScheduler restrictionsJob 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.

note

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:

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

It is recommended to upgrade Unity to the following LTS version or higher:

  • 2021.3.45f1
  • 2022.3.60f1
  • 6000.0.45f1

Upgrade Android Gradle Plugin (AGP)

Upgrade Gradle Wrapper Version
  1. 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-bin in the Gradle path field below.

  2. Modify environment variables by setting the GRADLE_HOME environment 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
note

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.

Upgrade Java version

It is recommended to use the default Java version provided by Unity.

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 package attribute in <manifest> to confirm the package name is correct;

  • Check the platformBuildVersionCode attribute in <manifest>; the expected value should be 35;

  • Check the android:minSdkVersion attribute 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:targetSdkVersion attribute 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.

Appendix