跳到主要内容

升级至 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 的业务,此次升级必不可少。

升级内容

文件结构重组:

  • 创建了一个新的 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 中。

加密功能

更新前

Encrypt 文件夹,与加密功能相关的文件与其他编辑器配置文件一起分散在 Editor 文件夹中,如下图所示:

Image: Upgrade117/19

更新后

所有与加密功能相关的文件都被移至 INTLSDK/Scripts/INTLConfig/Editor/Encrypt 文件夹,如下图所示:

Image: Upgrade117/18

配置文件

更新前

配置文件的路径因平台而异:

  • 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 Gradle 文件

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

无更新

C# 脚本

更新前

所有插件的 {XXX}PostProcess.cs 脚本都存储在 INTLSDK/Editor 目录下,如下图所示:

Image: Upgrade117/23

更新后

脚本按插件划分,且新路径为 INTLSDK/Scripts/INTL{Plugin}/Editor/INTL{Plugin}XXXPostProcess.cs,如下图所示:

Image: Upgrade117/22

升级指引

  1. 根据 下载资源 中的说明下载并解压 Player Network SDK V1.17,文件夹结构如下:

    Image: Unity Plugin Directory

  2. 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
  3. 对于 Android,请根据 Unity 引擎的版本更新 Gradle 配置文件。

    Unity 2018 及之前版本
    1. Plugins/Android/Gradle/INTLCore.mainTemplate.gradle 文件中的占位符配置替换为项目中 Assets/Plugins/Android/mainTemplate.gradle 文件中的配置。

      Image: Upgrade117/3

    2. 将项目中的 Assets/Plugins/Android/mainTemplate.gradle 文件合并到 Player Network SDK V1.17 中的 Plugins/Android/mainTemplate.gradle 文件中。

      Player Network SDK 的配置必须保留。

      Image: Upgrade117/5

    Unity 2019 and later versions
    1. Plugins/Android/Gradle/INTLCore.launcherTemplate.gradle 文件中的占位符配置替换为项目中 Assets/Plugins/Android/launcherTemplate.gradle 文件中的配置。

      Image: Upgrade117/8

    2. 将项目中的下列文件合并到 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 的配置必须保留。

      Image: Upgrade117/10

  4. 删除项目中的 Assets/INTLSDK 文件夹,并替换为 Player Network SDK V1.17 中的 INTLSDK 文件夹。

  5. 删除 Assets/Plugins 文件夹中与 Player Network SDK 相关的文件。

    需要删除的文件示例:

    Image: Upgrade117/13

  6. 将 Player Network SDK V1.17 中的 Plugins 文件夹合并到项目的 Assets/Plugins 文件夹中。

注意事项

  1. 为避免 Android com.google.android.play.core 库依赖冲突,根据 从 Play Core Java 和 Kotlin 库迁移 中的说明拆分依赖库并更改任务包的名称。

    Image: FAQ1

  2. Android 项目的 ext 字段在 Player Network SDK 1.17 被移动到 INTLCore.mainTemplate.Gradle,其中包含 apply from: "$rootDir/INTL.Gradle/INTLCore.mainTemplate.gradle" 代码。因此 ext 字段仍然有效。但是,commonVersions 不再有效,只能在 ext 字段中使用 common

    Image: FAQ3

  3. Android Gradle 文件 ext.common 字段中的 compileSdkVersionbuildToolsVersionminSdkVersiontargetSdkVersion 以根据 Google Play 需求升级。如果业务无需上架 Google Play 则可以恢复到以前的版本。

  4. ext.common 字段中指定了两个新版本: ndkVersioncmakeVersion。如果业务不需要,则可以不配置。

  5. 对于 minSdkVersion 23 及以上版本,AndroidManifest.xml 中新增的 overrideLirary 不是必须的。SDK 添加这些字段是因为默认的 minSdkVersion 为 16,但配置未使用的插件包名不影响业务运行。

    Image: FAQ6

  6. 对于 targetSdkVersion : 33,必须申请的系统权限需要更新。

    • 启用推送需在清单文件中添加 <uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>

    • android.permission.READ_EXTERNAL_STORAGEandroid.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" />
  7. 若需在 Android Gradle 中更新依赖库,将 compile fileTree(dir:'libs',include:['*.jar']) 修改为 implementation fileTree(dir:'libs',include:['*.jar']),并将下图中箭头指示的 Gradle 修改复制到对应的文件。

    Image: FAQ5