Skip to main content

Android 15 & iOS 18 Migration Guide

Migrate to Android 15

According to the latest Google Play requirements for app releases, targetSdkVersion must be API 34 (Android 14) or later from August 2024, and API 35 (Android 15) or later from 2025.

In order to meet compliance requirements in the long-term and ensure that your app can be released, Player Network SDK V1.28 has upgraded targetSdkVersion to 35. Developers should complete the necessary adjustments to their build environments.

Impact points

In Android 15, Google has introduced several mandatory behavioral changes and permission constraints that take effect only when targetSdkVersion = 35, notably:

CategoriesRemarks
PendingIntent security policyMust explicitly declare FLAG_IMMUTABLE or FLAG_MUTABLE
foregroundServiceDeclarationMust declare foregroundServiceType in the manifest file
Notification permissionsNotification permissions must be requested at runtime since Android 13+
Storage access restrictionsAccess to /Android/data and /obb directories are prohibited, SAF or MediaStore recommended
JobScheduler restrictionsTighter restrictions on jobs, such as suppressing scheduling frequency

For a comprehensive overview of the changes, see Android 15 Features and Changes.

note

If your project does not upgrade to targetSdkVersion = 35, the above behaviors will not be triggered. However, the SDK is unable to guarantee functionality in projects with conflicting versions.

Support for 16KB Page Size

Since Android 15, AOSP supports devices configured with a 16KB memory page size. If your app utilizes any NDK libraries, whether directly or indirectly through an SDK, you will need to rebuild your app to ensure it runs on these 16KB devices. As manufacturers continue to produce devices with larger physical memory (RAM), many will adopt a 16KB (or larger) memory page size to optimize device performance. Adding support for 16KB memory page sizes allows your app to run on these devices and benefit from the associated performance improvements. Without recompilation, apps might not function properly on devices supporting 16KB in future Android versions.

Note: Game adaptation to 16KB memory page sizes requires engine support. The support status and plans for mainstream engines are as follows:

Currently, only Pixel 8, 8Pro, 8a devices with Android 15 QPR1 Beta installed can enable 16KB mode in the developer options. The widespread adoption of 16KB mode will have a timeline, and businesses should monitor engine support plans to determine or adjust the timing of game support.

Changes in the project environment

Upgrade Unity to the following LTS versions or later:

  • 2021.3.45f1
  • 2022.3.60f1
  • 6000.0.45f1

Upgrade Android Gradle Plugin (AGP)

Upgrade Gradle Wrapper version
  1. Find the Gradle installed with Unity option in the Editor menu Unity > Settings > External Tools and uncheck it, then select the path of gradle-8.7-bin in the Gradle path.

  2. Modify the environment variable GRADLE_HOME to the path of Gradle 8.7 version:

    # sh
    export GRADLE_HOME=/Users/***/.gradle/wrapper/dists/gradle-8.7-bin/****/gradle-8.7
    export PATH=${PATH}:${GRADLE_HOME}/bin
Modify AGP version dependency
note

After upgrading to Player Network SDK V1.28, INTLSDK/Source/INTLCore/Libs/Android/INTLCore_APL.xml has already upgraded the AGP to version 8.6.0, so no modification is required.

Check the version of "com.android.tools.build:gradle:x.x.x" in the Assets/Plugins/Android/baseProjectTemplate.gradle file. If the version is below 8.6.0, you will need to update it to 8.6.0.

Upgrade Java version

The default Java version for Unity is recommended to be used.

Validation

Verify basic information

When unpacking an APK, check the following fields in the AndroidManifest.xml file to ensure they meet expectations:

  • Review the package attribute in the <manifest> tag to confirm that the package name is correct.

  • Examine the platformBuildVersionCode attribute in the <manifest> tag, which should be set to 35.

  • Look at the android:minSdkVersion attribute within the <uses-sdk> tag. This should reflect the minimum Android API level supported by your game.

    Relationship between Android API Levels and Android Versions: https://apilevels.com/

  • Check the android:targetSdkVersion attribute within the <uses-sdk> tag, which is expected to 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

Conduct compatibility testing using the product, with a focus on its performance on Android 15.

Migrate to iOS 18

Starting 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 other specific issues to consider for this adaptation.

Validation

Verify basic information

To verify the iOS build, unpack the IPA file and check the DTSDKName field in the info.plist to ensure it corresponds to the version used. For instance, if the build was compiled with XCode 15, the field should show iphoneos17.*. If compiled with XCode 16, it should show iphoneos18.0.

Example of info.plist:

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

Compatibility testing

Conduct compatibility testing using the product, with a focus on its performance on iOS 18.

Appendix