Unity无法将类转换成dex格式

Unable to convert classes into dex format Unity

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

我正在使用 Unity Unity 5.6.1f1(64 位)。

游戏服务:https://github.com/playgameservices/play-games-plugin-for-unity Ads: 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
    ]

一些背景知识

当 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;

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

可能的原因

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

  • 在项目的不同文件夹下多次包含同一个插件。
  • 同一个插件在不同版本中被多次包含。
  • 插件中包含其他依赖项"embedded",但这些依赖项已经以某种形式包含在项目中。

如何修复

您应该在您的项目中查找重复的 Android 个插件并删除它们(只保留 1 个副本)。从您发布的错误消息来看,此处的问题与 Google 播放服务库有关。您应该调查一下(名为 play-services-xxxx.aar 的库)。

付费帮助(无耻插件)

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

Google 广告 11.2 有错误。它重复使用某些 jar classes 。 就其本身而言,这不是问题 一旦你添加了另一个 google class,即 firebase,你就完成了。 虽然有一个修复。 Google 推出 Firebase 4.2 和广告 11.4

在我的项目中添加 admob 后,我遇到了同样的问题,这里有 2 种可能的解决方案:

  1. 转到文件 >> 构建设置并将内部选项更改为 gradle

  2. 分别打开Facebook SDK和Google播放服务的libs文件夹并删除匹配文件

会是这样的(支持v4)