google-play - Unity无法将类转换为dex格式

标签 google-play admob unity-game-engine

使用 google play games 服务和 Admob 插件,我似乎无法构建 APK,并且收到以下错误消息。任何帮助将不胜感激,因为我已经删除了一些重复的文件,但我仍然无法找到为什么我无法构建我的应用程序。

我使用的是 Unity Unity 5.6.1f1(64 位)。

游戏服务:https://github.com/playgameservices/play-games-plugin-for-unity广告:https://github.com/unity-plugins/Firebase-Admob-Unity

    CommandInvokationFailure: Unable to convert classes into dex format.
C:/Program Files/Java/jdk1.8.0_121\bin\java.exe -Xmx2048M -Dcom.android.sdkmanager.toolsdir="C:/Users/Jack/AppData/Local/Android/sdk\tools" -Dfile.encoding=UTF8 -jar "C:\Program Files\Unity\Editor\Data\PlaybackEngines\AndroidPlayer/Tools\sdktools.jar" -

    stderr[
    Uncaught translation error: java.lang.IllegalArgumentException: already added: Lcom/google/android/gms/internal/zzbyb;
    Uncaught translation error: java.lang.IllegalArgumentException: already added: Lcom/google/android/gms/internal/zzbyc;
    2 errors; aborting
    ]

enter image description here

最佳答案

一些背景

当 Unity 为 Android 构建项目时,它会调用 Android SDK 中的多个工具。作为该过程的一部分,它将所有 Android 原生 (Java) 代码转换为名为 DEX(Dalvik 可执行文件)的文件格式。

使用该工具,您的所有 Android 插件都会构建到一个包中。当一些插件中包含相同的已编译 Java 代码(类)时,问题就开始了。这将导致 DEX 工具失败并出现类似您所看到的错误:

Uncaught translation error: java.lang.IllegalArgumentException: already added: Lcom/google/android/gms/internal/zzbyb; Uncaught translation error: java.lang.IllegalArgumentException: already added: Lcom/google/android/gms/internal/zzbyc;

这意味着具有这些名称的类已经包含在另一个库中,因此无法再次添加它们。

可能的原因

如上所述,当您的项目中有重复的插件时,就会出现此错误;这可能发生在不同的场景中,以下是一些示例:

  • 同一插件在项目的不同文件夹下多次包含。
  • 同一插件在不同版本中多次包含。
  • 插件包含“嵌入”其中的其他依赖项,但这些依赖项已以某种形式包含在项目中。

如何修复

您应该在项目中查找重复的 Android 插件并将其删除(仅保留 1 个副本)。从您发布的错误消息来看,这里的问题与 Google Play 服务库有关。您应该研究一下(名为 play-services-xxxx.aar 的库)。

付费帮助(无耻插件)

我提供专业服务来解决此类问题。如果您(或任何其他人)无法自行解决此类问题,请随时contact me并解决它。

关于google-play - Unity无法将类转换为dex格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44054971/

相关文章:

android - 原生广告选项未出现在我的 admob 帐户中

android - Playstore 中 10 英寸平板电脑的应用列表,但不显示 7 英寸平板电脑

android - 添加到 list 中的内容以拒绝 Kindle Fire 1st Gen

android - 如何在 Android 市场中从免费应用程序链接到付费应用程序?

android - 在同一 View 中使用常规 Admob + 自定义发布者

android - 重复类 com.google.android.flexbox - Android Admob

android - 标记为使用 Play 游戏的应用

c# - Unity3D - 物体在y轴范围内连续上下移动

java - Unity 4.6 导入 Google Analytics 包时抛出 JAVA_HOME 引用错误

c# - HttpWebRequest 收到 "WebException: The request timed out"