文档

​
​

Development

User Acquisition

Monetization

工业

LevelPlay SDK - Unity

Unity SDK

Android SDK

iOS SDK

Adobe AIR SDK

Flutter SDK

React Native SDK

LevelPlay SDK - Unity

Unity LevelPlay
​
​
Unity SDK
  • 开始使用
  • 法规和设置
  • 广告格式
  • 聚合网络
  • 测试集成
    • 集成测试套件
    • Unity 集成助手
    • 集成测试
    • 排除不显示广告服务的故障
    • TCF 同意日志故障排除
    • 测试 Ad Quality SDK 集成
    • 在 Unity 编辑器中预览模拟广告服务
    • LevelPlay 集成故障排除
    • 排除 Kotlin 2 导致的 Android 构建失败
  1. 实现游戏增长
  2. Unity LevelPlay
  3. LevelPlay SDK
  4. 适用于 Unity 开发者的 LevelPlay SDK

排除 Kotlin 2 导致的 Android 构建失败

使用 Unity 2022 长期支持版本 或更高版本进行构建时,发现并修复由 LevelPlay 9.6.0 中引入的 Kotlin 2 依赖项关系导致的 Android 构建失败。
阅读时间6 分钟
最后更新于 2 天前

如果将 Unity 2022 长期支持版本 或更高版本与 LevelPlay SDK 9.6.0 结合使用,可能会遇到 Android 构建失败。本指南介绍如何识别和解决这些问题。
注意
此构建失败问题仅影响 Unity 2022 长期支持版本 或更高版本。Unity 6 及更高版本支持与较新的构建工具链兼容,不受影响。

症状

将 LevelPlay Unity 广告服务 Mediation) 软件包级到 9.6.0 后,Android 构构建会失败并显示以下报错:
注意:某些输入文件使用或覆盖已弃用的 API。注意:有关详细信息,请使用 -Xlint:deprecation 重新编译。报错:D8:com.android.tools.r8.kotlin.H失败:构建完成,但 2 次失败。1:任务失败,出现异常。-----------* 问题出在哪里: 任务“:启动器:mergeExtDexRelease”的执行失败。> 无法解析配置“:启动器:releaseRuntimeClasspath”的所有文件。> 变换 kotlin-stdlib-2.1.21.jar (org.jetbrains.kotlin:kotlin-stdlib:2.1.21) 匹配 {artifactType=android-dex, ...}。> DexingWithClasspathTransform 的执行失败: .../transformed/jetified-kotlin-stdlib-2.1.21.jar.> 取消激活时报错。2:任务失败,出现异常。-----------* 问题出在哪里: java.lang.StackOverflowError(无报错消息)构建失败
此报错消息中的两个指标确认这是 Kotlin 2 兼容性问题:
  1. ERROR:D8: com.android.tools.r8.kotlin.H
    行显示在输出中。
  2. 失败的瑕疵是
    kotlin-stdlib-2.1.21.jar
    (或任何
    Kotlin 2.x stdlib
    )。

原因

Android 构建失败可能出于以下原因:
  • LevelPlay SDK 9.6.0(及其某些网络适配器)对 Kotlin 2.x 标准库(
    kotlin-stdlib-2.1.21
    )有依赖项。
  • Unity 2022 长期支持版本 捆绑了早于 Kotlin 2 支持的 AGP/R8 版本。捆绑的 D8/R8 无法显示为
    D8: com.android.tools.r8.kotlin.H
    报错和辅助
    StackOverflowError
    的 Kotlin 2 stdlib 元数据。

解决方案

要解决此问题,请按照以下说明向
settingsTemplate.gradle
添加
buildscript
代码块来覆盖 R8:
  1. 如果项目中还没有
    settingsTemplate.gradle
    文件,请在 Unity Editor 中通过执行以下操作启用该文件: a.选择 File(文件)> Build Settings(构建设置)。 b.选择 Android 作为平台,然后选择 玩家设置。项目设置窗口打开。 c.在 Android Settings 选项卡中,转到 Publisher Settings,然后启用 Custom Gradle Settings 模板。这样做可以使 Unity 在 中
    ssets/Plugins/Android/settingsTemplate.gradle
    使用 ARTIFACTORYREPOSITORY 和 DIR_UNITYPROJECT 令牌创建文件。
  2. Open
    Assets/Plugins/Android/settingsTemplate.gradle
    .open
  3. 添加从 Google R8 版本 Maven 中提取 R8 8.5.35 的
    buildscript
    代码块。将其直接添加到现有
    pluginManagement
    代码块之后:
注意
建议的最佳做法是使用 R8 版本 8.5.35,因为它是 Unity 2022 长期支持版本 LevelPlay 9.6.0 的验证版本。但是,您可以使用比 8.5.35 更新的 R8 版本。具体而言,任何大于或等于 8.5.x 且支持 Kotlin 2 的 R8 版本都将正常工作。
pluginManagement { repositories { **ARTIFACTORYREPOSITORY** gradlePluginPortal() google() mavenCentral() }}buildscript { repositories { maven { url "https://storage.googleapis.com/r8-releases/raw" } } dependencies { classpath 'com.android.tools:r8:8.5.35' }}
注意
解决此问题不需要 Kotlin Gradle 插件升级。故障发生在 dex 管线中,而不是 Kotlin 编译中,因此只需要升级 R8。
以下代码行强制 Gradle 解析 R8 8.5.35(支持
Kotlin 2 stdlib
),然后 Android Gradle 插件才能选择其捆绑的过时版本。然后,
mergeExtDexRelease
任务使用较新的 R8,构建成功完成。
buildscript { dependencies { classpath 'com.android.tools:r8:...' } }
注意
覆盖 R8 不会影响非 Kotlin 代码。这只会更改 Dexer/shrinker 版本,不会改变应用程序代码、AGP 版本或缩小规则。

验证分辨率

  1. 通过从项目根目录运行以下命令来关闭所有打开的 Gradle 守护程序:
    ./gradlew --stop.
    或者,也可以通过运行以下命令删除 Gradle 变换:
    ~/.gradle/caches/transforms-3/
  2. 在 Unity 编辑器中,转到文件 > 构建设置… > 构建(发布配置)。
  3. 确认
    :launcher:mergeExtDexRelease
    任务完成并且 APK 或 AAB 构建时没有 D8 报错。
如果报错仍然存在,请尝试以下操作:
  • 确认
    buildscript
    代码块处于
    settingsTemplate.gradle
    状态而不是处于
    mainTemplate.gradle
    或
    baseProjectTemplate.gradle
    状态。
  • 确认没有其他模板正在重新引入较旧的 R8 类路径。 0- 使用以下命令清除 Gradle 变换缓存,然后重新构建:
    rm -rf ~/.gradle/caches/transforms-3/

Copyright © 2026 Unity Technologies
法律信息隐私政策CookiesDocumentation Terms of Use请勿出售或分享我的个人信息您的隐私选择(Cookie 设置)

“Unity”、Unity 徽标及其他 Unity 商标是 Unity Technologies 或其附属公司在美国和其他地方的商标或注册商标(此处查看更多信息)。其他名称或品牌是其各自所有者的商标。

为方便起见,一些页面是机器翻译的,可能包含不准确的内容。如有信息不一致的情况,以英文版本为准。

  • 在本页上
    • 症状

    • 原因

    • 解决方案

    • 验证分辨率


报告此页面的问题