升级至 V1.17
Player Network SDK 1.17 集成了 LI PASS SDK 以支持 LI PASS 功能。本次升级新增支持 Unity 2022 和 Unreal Engine 5.1,并且精简了文件结构,方便未来版本的升级。
完整的版本更新详情,请参见 V1.17 更新日志。
升级影响
该版本适用于 Unity 2022 和虚幻引擎 5.1,并且 INTLConfig 插件文件夹包含所有基本的 SDK 配置。对于 UE 5.1,每个插件文件夹都独立管理自己的资源和配置。对于 Unity 2022,每个插件的 Android 库负责管理特定插件的 Android 平台配置。这种安排精简了 SDK 文件夹结构,简化了未来 SDK 版本的升级过程。
因此,计划升级游戏引擎或希望升级以后的 SDK 版本以便于集成新功能或修复问题的业务,应考虑升级至此版本的 SDK。此外,此次升级整合了 LI PASS SDK,支持所有 LI PASS 功能,因此对于希望接入 LI PASS 的业务,此次升级必不可少。
升级内容
- Unity
- Unreal Engine
文件结构重组:
- 创建了一个新的
INTLConfig
文件夹,用于保存 SDK 的所有基本配置,包括Encrypt
文件夹、INTLConfig.ini
配置文件和INTL{Plugin}{Platform}PostProcess.cs
脚本。 - 创建了一个新的
Plugins/Android/Gradle
文件夹,用于存储 Android 的 Gradle 构建说明。每个插件的 Gradle 构建说明已被拆分并移至Plugins/Android/INTL{Plugin}.androidlib
。
因此,配置也进行了调整:
- 无论项目在哪个平台上运行,SDK 配置都存储在
INTLConfig.ini
文件中,其中包括多渠道包配置。 - Player Network SDK 的构建说明存储在
Plugins/Android/Gradle/INTLCore.mainTemplate.gradle
中。 - 插件相关的构建说明被拆分到各个插件的
Plugins/Android/INTL{Plugin}.androidlib
中。
Player Network SDK 文件夹的名称从 INTLSDKPlugin
更改为 INTLSDK
,并实现了以下更改:
- 将
INTLSDKPlugin/Source/INTLSDKPlugin
文件夹拆分为多个插件文件夹。其中包含,INTLCore
、INTLConfig
和INTLFoundation
文件夹。下载的插件都会带有这些文件夹。 - 所有 Player Network SDK 的基本配置都被移到了新的
INTLConfig
文件夹中,例如INTLConfig.ini
配置文件、Player Network SDK 的加密功能、Android Gradle 配置文件、iOS information property list 文件以及用于修改 iOS information property list 文件的 UPL XML 文件。 INTLSDKPlugin/Source/INTLSDKPlugin/INTLPlugin.Build.cs
文件已被拆分,因此每个插件文件夹都包含自己的构建脚本文件INTLSDK/Source/INTL{Plugin}/INTL{Plugin}.Build.cs
。例如,INTLSDK/Source/INTLConfig/INTLConfig.Build.cs
。
加密功能
- Unity
- Unreal Engine
配置文件
- Unity
- Unreal Engine
更新前
配置文件的路径因平台而异:
- Android:
Assets/Plugins/Android/assets/INTLConfig.ini
- iOS :
Assets/Plugins/iOS/INTLSDK/INTLCore/INTLSDK.bundle/INTLConfig.ini
- Windows & PS5:
Assets/Plugins/x86_64/INTLConfig.ini
更新后
配置文件的路径在所有平台上都是一致的:INTLSDK/Scripts/INTLConfig/Editor/Resources/INTLConfig.ini
更新前
配置文件的路径因平台而异:
- Android:
INTLSDKPlugin/Source/INTLSDKPlugin/INTLSDK/Android/assets/INTLConfig.ini
- iOS :
INTLSDKPlugin/Source/INTLSDKPlugin/INTLSDK/iOS/INTLCore/INTLSDK.bundle/INTLConfig.ini
- Windows & PS5:
INTLSDKPlugin/Source/INTLSDKPlugin/INTLSDK/resources/INTLConfig.ini
更新后
配置文件的路径在所有平台上都是一致的:INTLSDK/Source/INTLConfig/Configs/Resources/INTLConfig.ini
Android Gradle 文件
- Unity
- Unreal Engine
Unity 2019 版本前后的 Gradle 项目文件有所不同。因此,将分别介绍 Unity 2018 和 Unity 2019 及以后版本的更改。
Unity 2018 及之前版本
更新前
所有构建说明都在 Assets/Plugins/Android/mainTemplate.gradle
文件中指定。
更新后
Plugins/Android/mainTemplate.gradle
文件包含一般的构建说明,而与插件相关的说明则被切分到每个 INTL{Plugin}.mainTemplate.gradle
文件中。
Unity 2019 及之后版本
更新前
Gradle 项目的所有构建说明文件:
Plugins/Android/mainTemplate.gradle
Plugins/Android/baseProjectTemplate.gradle
Plugins/Android/launcherTemplate.gradle
更新后
- Gradle 项目的通用构建说明文件:
Plugins/Android/mainTemplate.gradle
Plugins/Android/baseProjectTemplate.gradle
Plugins/Android/launcherTemplate.gradle
- Gradle 项目插件相关的构建说明文件:
Plugins/Android/Gradle/INTL{Plugin}.mainTemplate.gradle
Plugins/Android/Gradle/INTL{Plugin}.baseProjectTemplate.gradle
Plugins/Android/Gradle/INTL{Plugin}.launcherTemplate.gradle
iOS information property list
- Unity
- Unreal Engine
C# 脚本
- Unity
- Unreal Engine
升级指引
- Unity
- Unreal Engine
根据 下载资源 中的说明下载并解压 Player Network SDK V1.17,文件夹结构如下:
将
INTLSDK/Scripts/INTLConfig/Editor/Resources/INTLConfig.ini
配置文件替换为项目中包含正确配置的文件。前一版本的配置文件可在以下路径找到:
- Android:
Assets/Plugins/Android/assets/INTLConfig.ini
- iOS:
Assets/Plugins/iOS/INTLSDK/INTLCore/INTLSDK.bundle/INTLConfig.ini
- Windows:
Assets/Plugins/x86_64/INTLConfig.ini
- Android:
对于 Android,请根据 Unity 引擎的版本更新 Gradle 配置文件。
Unity 2018 及之前版本
将
Plugins/Android/Gradle/INTLCore.mainTemplate.gradle
文件中的占位符配置替换为项目中Assets/Plugins/Android/mainTemplate.gradle
文件中的配置。将项目中的
Assets/Plugins/Android/mainTemplate.gradle
文件合并到 Player Network SDK V1.17 中的Plugins/Android/mainTemplate.gradle
文件中。Player Network SDK 的配置必须保留。
Unity 2019 and later versions
将
Plugins/Android/Gradle/INTLCore.launcherTemplate.gradle
文件中的占位符配置替换为项目中Assets/Plugins/Android/launcherTemplate.gradle
文件中的配置。将项目中的下列文件合并到 Player Network SDK V1.17 中的对应文件中:
- 将
Assets/Plugins/Android/mainTemplate.gradle
合并至Plugins/Android/Gradle/INTLCore.mainTemplate.gradle
; - 将
Assets/Plugins/Android/baseProjectTemplate.gradle
合并至Plugins/Android/Gradle/INTLCore.baseProjectTemplate.gradle
; - 将
Assets/Plugins/Android/launcherTemplate.gradle
合并至Plugins/Android/Gradle/INTLCore.launcherTemplate.gradle
。
Player Network SDK 的配置必须保留。
- 将
删除项目中的
Assets/INTLSDK
文件夹,并替换为 Player Network SDK V1.17 中的INTLSDK
文件夹。删除
Assets/Plugins
文件夹中与 Player Network SDK 相关的文件。需要删除的文件示例:
将 Player Network SDK V1.17 中的
Plugins
文件夹合并到项目的Assets/Plugins
文件夹中。
根据 下载资源 中的说明下载并解压 Player Network SDK V1.17,文件夹结构如下:
将
INTLSDK/Source/INTLConfig/Configs/Resources/INTLConfig.ini
配置文件替换为项目中包含正确配置的文件。前一版本的配置文件可在以下路径找到:
- Android:
Plugins/INTLSDKPlugin/Source/INTLSDKPlugin/INTLSDK/Android/assets/INTLConfig.ini
- iOS:
Plugins/INTLSDKPlugin/Source/INTLSDKPlugin/INTLSDK/iOS/INTLCore/INTLSDK.bundle/INTLConfig.ini
- Windows:
Plugins/INTLSDKPlugin/Source/INTLSDKPlugin/INTLSDK/resources/INTLConfig.ini
- Android:
对于 Android,请将
INTLCDK/Source/INTLConfig/Configs/Android/INTLConfig_APL.xml
文件中的占位符配置替换为项目中INTLCore_UPL.xml
文件中的配置。对于 iOS,请将
INTLSDK/Source/INTLPlugin/Libs/iOS/INTLPlugin_UPL.xml
文件中的占位符配置替换为项目中INTLSDKPlugin/Source/INTLSDKPlugin/INTLSDK/iOS/iOS_UPL.xml
文件中的配置。备份
/Plugins/INTLSDKPlugin/Source/INTLSDKPlugin/INTLSDK/Android/googleservices.json
和/Plugins/INTLSDKPlugin/Source/INTLSDKPlugin/IOS/iOS/GoogleService-Info.plist
文件。删除项目中的
Plugins/INTLEncrypt
和Plugins/INTLSDKPlugin
文件夹。将配置已更新为项目配置的 V1.17 版本的
INTLSDK
文件夹放到项目的Plugins
文件夹中。将第5步备份的文件保存为
/Plugins/INTLSDK/Source/INTLFirebase/Libs/Android/googleservices.json
和/Plugins/INTLSDK/Source/INTLFirebase/Libs/iOS/GoogleService-Info.plist
。打开
{Project}.Build.cs
文件,并将PrivateDependencyModuleNames.AddRange(new string[] { "INTLPlugin" });
部分更新为:PrivateDependencyModuleNames.AddRange(new string[] {
"INTLCore",
"INTLFoundation"
});
注意事项
为避免 Android
com.google.android.play.core
库依赖冲突,根据 从 Play Core Java 和 Kotlin 库迁移 中的说明拆分依赖库并更改任务包的名称。Android 项目的
ext
字段在 Player Network SDK 1.17 被移动到INTLCore.mainTemplate.Gradle
,其中包含apply from: "$rootDir/INTL.Gradle/INTLCore.mainTemplate.gradle"
代码。因此ext
字段仍然有效。但是,commonVersions
不再有效,只能在ext
字段中使用common
。Android Gradle 文件
ext.common
字段中的compileSdkVersion
、buildToolsVersion
、minSdkVersion
和targetSdkVersion
以根据 Google Play 需求升级。如果业务无需上架 Google Play 则可以恢复到以前的版本。在
ext.common
字段中指定了两个新版本:ndkVersion
和cmakeVersion
。如果业务不需要,则可以不配置。对于
minSdkVersion 23
及以上版本,AndroidManifest.xml
中新增的overrideLirary
不是必须的。SDK 添加这些字段是因为默认的minSdkVersion
为 16,但配置未使用的插件包名不影响业务运行。对于
targetSdkVersion : 33
,必须申请的系统权限需要更新。启用推送需在清单文件中添加
<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
。将
android.permission.READ_EXTERNAL_STORAGE
和android.permission.WRITE_EXTERNAL_STORAGE
替换为以下权限:<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
<uses-permission android:name="android.permission.READ_MEDIA_AUDIO" />
<uses-permission android:name="android.permission.READ_MEDIA_VIDEO" />
若需在 Android Gradle 中更新依赖库,将
compile fileTree(dir:'libs',include:['*.jar'])
修改为implementation fileTree(dir:'libs',include:['*.jar'])
,并将下图中箭头指示的 Gradle 修改复制到对应的文件。