“CommandInvokationFailure:无法将类转换为 dex 格式。”使用适用于 Android 的 Unity Upsight 插件构建
Posted
技术标签:
【中文标题】“CommandInvokationFailure:无法将类转换为 dex 格式。”使用适用于 Android 的 Unity Upsight 插件构建【英文标题】:"CommandInvokationFailure: Unable to convert classes into dex format." with Unity Upsight Plugin Build for Android 【发布时间】:2016-12-31 14:44:11 【问题描述】:由于我导入并配置了 Upsight (http://www.upsight.com/) 插件,因此在尝试为 android 构建 Unity 项目时遇到异常。日志消息被截断,所以我看不到冲突的来源(见下文)。
如果有人知道如何找到此错误的确切来源,那就太好了。也许截断可以以某种方式停用,或者在使用其他插件时这个问题对于 Upsight 是已知的。我使用了更多的插件,比如 Unity Purchasing、Mobile Social 和 Fyber。也许其中之一已知会导致与 Upsight 结合使用的问题!?
我很欣赏任何想法或解决方法。我需要让插件运行。
CommandInvokationFailure:无法将类转换为 dex 格式。看 控制台了解详情。 C:/Program Files/Java/jdk1.8.0_101\bin\java.exe -Xmx2048M -Dcom.android.sdkmanager.toolsdir="C:/Users/ggurbat/AppData/Local/Android/sdk\tools" -Dfile.encoding=UTF8 -jar "C:\Program Files\Unity\Editor\Data\PlaybackEngines\AndroidPlayer/Tools\sdktools.jar" -
标准错误[ 警告:忽略匿名内部类的 InnerClasses 属性 (com.fyber.a) 不附带 关联的 EnclosureMethod 属性。这个类可能是由一个 不针对现代 .class 文件格式的编译器。推荐的 解决方案是使用最新的编译器从源代码重新编译类 并且没有指定任何“-target”类型选项。的后果 忽略 此警告是此类上的反射操作将错误地 表明它不是一个内部类。 警告:忽略匿名内部类的 InnerClasses 属性 (com.fyber.ads.banners.b) 不附带 关联的 EnclosureMethod 属性。这个类可能是由一个 不针对现代 .class 文件格式的编译器。推荐的 解决方案是使用最新的编译器从源代码重新编译类 并且没有指定任何“-target”类型选项。的后果 忽略 此警告是此类上的反射操作将错误地 表明它不是一个内部类。 警告:忽略匿名内部类的 InnerClasses 属性 (com.fyber.ads.banners.BannerSize$1) 关联的 EnclosureMethod 属性。这个类可能是由一个 不针对现代 .class 文件格式的编译器。推荐的 解决方案是使用最新的编译器从源代码重新编译类 并且没有指定任何“-target”类型选项。的后果 忽略 此警告是此类上的反射操作将错误地 表明它不是一个内部类。 警告:忽略匿名内部类的 InnerClasses 属性 (com.fyber.ads.banners.a) 不附带 关联的 EnclosureMethod 属性。这个类可能是由一个 不针对现代 .class 文件格式的编译器。推荐的 解决方案是使用最新的编译器从源代码重新编译类 并且没有指定任何“-target”类型选项。的后果 忽略 此警告是此类上的反射操作将错误地 表明它不是一个内部类。 警告:忽略匿名内部类的 InnerClasses 属性 (com.fyber.ads.banners.c) 不附带 关联的 EnclosureMethod 属性。这个类可能是由一个 不针对现代 .class 文件格式的编译器。推荐的 解决方案是使用最新的编译器从源代码重新编译类 并且没有指定任何“-target”类型选项。的后果 忽略 此警告是此类上的反射操作将错误地 表明它不是一个内部类。 警告:忽略匿名内部类的 InnerClasses 属性 (com.fyber.ads.banners.d) 不附带 关联的 EnclosureMethod 属性。这个类可能是由一个 不针对现代 .class 文件格式的编译器。推荐的 解决方案是使用最新的编译器从源代码重新编译类 并且没有指定任何“-target”类型选项。的后果 忽略 此警告是此类上的反射操作将错误地 表明它不是一个内部类。 警告:忽略匿名内部类的 InnerClasses 属性 (com.fyber.ads.interstitials.a.b) 不附带 关联的 EnclosureMethod 属性。这个类可能是由一个 不针对现代 .class 文件格式的编译器。推荐的 解决方案是使用最新的编译器从源代码重新编译类 并且没有指定任何“-target”类型选项。的后果 忽略 此警告是此类上的反射操作将错误地 表明它不是一个内部类。 警告:忽略匿名内部类的 InnerClasses 属性 (com.fyber.ads.interstitials.a.c) 不附带 关联的 EnclosureMethod 属性。这个类可能是由一个 不针对现代 .class 文件格式的编译器。推荐的 解决方案是使用最新的编译器从源代码重新编译类 并且没有指定任何“-target”类型选项。的后果 忽略 此警告是此类上的反射操作将错误地 表明它不是一个内部类。 警告:忽略匿名内部类的 InnerClasses 属性 (com.fyber.ads.ofw.a) 不附带 关联的 EnclosureMethod 属性。这个类可能是由一个 不针对现代 .class 文件格式的编译器。推荐的 解决方案是使用最新的编译器从源代码重新编译类 并且没有指定任何“-target”类型选项。的后果 忽略 此警告是此类上的反射操作将错误地 表明它不是一个内部类。 警告:忽略匿名内部类的 InnerClasses 属性 (com.fyber.ads.videos.a) 不附带 关联的 EnclosureMethod 属性。这个类可能是由一个 不针对现代 .class 文件格式的编译器。推荐的 解决方案是使用最新的编译器从源代码重新编译类 并且没有指定任何“-target”类型选项。的后果 忽略 此警告是此类上的反射操作将错误地 表明它不是一个内部类。 警告:忽略匿名内部类的 InnerClasses 属性 (com.fyber.ads.videos.a.d) 不附带 关联的 EnclosureMethod 属性。这个类可能是由一个 不针对现代 .class 文件格式的编译器。推荐的 解决方案是使用最新的编译器从源代码重新编译类 并且没有指定任何“-target”类型选项。的后果 忽略 此警告是此类上的反射操作将错误地 表明它不是一个内部类。 警告:忽略匿名内部类的 InnerClasses 属性 (com.fyber.ads.videos.a.f) 不附带 关联的 EnclosureMethod 属性。这个类可能是由一个 不针对现代 .class 文件格式的编译器。推荐的 解决方案是使用最新的编译器从源代码重新编译类 并且没有指定任何“-target”类型选项。的后果 忽略 此警告是此类上的反射操作将错误地 表明它不是一个内部类。 警告:忽略匿名内部类的 InnerClasses 属性 (com.fyber.ads.videos.a.g) 不附带 关联的 EnclosureMethod 属性。这个类可能是由一个 不针对现代 .class 文件格式的编译器。推荐的 解决方案是使用最新的编译器从源代码重新编译类 并且没有指定任何“-target”类型选项。的后果 忽略 此警告是此类上的反射操作将错误地 表明它不是一个内部类。 警告:忽略匿名内部类的 InnerClasses 属性 (com.fyber.ads.videos.a.h) 不附带 关联的 EnclosureMethod 属性。这个类可能是由一个 不针对现代 .class 文件格式的编译器。推荐的 解决方案是使用最新的编译器从源代码重新编译类 并且没有指定任何“-target”类型选项。的后果 忽略 此警告是此类上的反射操作将错误地 表明它不是一个内部类。 警告:忽略匿名内部类的 InnerClasses 属性 (com.fyber.ads.videos.a.i) 不附带 关联的 EnclosureMethod 属性。这个类可能是由一个 不针对现代 .class 文件格式的编译器。推荐的 解决方案是使用最新的编译器从源代码重新编译类 并且没有指定任何“-target”类型选项。的后果 忽略 此警告是此类上的反射操作将错误地 表明它不是一个内部类。 警告:忽略匿名内部类的 InnerClasses 属性 (com.fyber.ads.videos.a.j) 不附带 关联的 EnclosureMethod 属性。这个类可能是由一个 不针对现代 .class 文件格式的编译器。推荐的 解决方案是使用最新的编译器从源代码重新编译类 并且没有指定任何“-target”类型选项。的后果 忽略 此警告是此类上的反射操作将错误地 表明它不是一个内部类。 警告:忽略匿名内部类的 InnerClasses 属性 (com.fyber.ads.videos.a.m) 不附带 关联的 EnclosureMethod 属性。这个类可能是由一个 不针对现代 .class 文件格式的编译器。推荐的 解决方案是使用最新的编译器从源代码重新编译类 并且没有指定任何“-target”类型选项。的后果 忽略 此警告是此类上的反射操作将错误地 表明它不是一个内部类。 警告:忽略匿名内部类的 InnerClasses 属性 (com.fyber.ads.videos.a.n) 不附带 关联的 EnclosureMethod 属性。这个类可能是由一个 不针对现代 .class 文件格式的编译器。推荐的 解决方案是使用最新的编译器从源代码重新编译类 并且没有指定任何“-target”类型选项。的后果 忽略 此警告是此类上的反射操作将错误地 表明它不是一个内部类。 警告:忽略匿名内部类的 InnerClasses 属性 (com.fyber.ads.videos.a.o) 不附带 关联的 EnclosureMethod 属性。这个类可能是由一个 不针对现代 .class 文件格式的编译器。推荐的 解决方案是使用最新的编译器从源代码重新编译类 并且没有指定任何“-target”类型选项。的后果 忽略 此警告是此类上的反射操作将错误地 表明它不是一个内部类。 警告:忽略匿名内部类的 InnerClasses 属性 (com.fyber.ads.videos.a.e) 不附带 关联的 EnclosureMethod 属性。这个类可能是由一个 不针对现代 .class 文件格式的编译器。推荐的 解决方案是使用最新的编译器从源代码重新编译类 并且没有指定任何“-target”类型选项。的后果 忽略 此警告是此类上的反射操作将错误地 表明它不是一个内部类。 警告:忽略匿名内部类的 InnerClasses 属性 (com.fyber.ads.videos.c) 不附带 关联的 EnclosureMethod 属性。这个类可能是由一个 不针对现代 .class 文件格式的编译器。推荐的 解决方案是使用最新的编译器从源代码重新编译类 并且没有指定任何“-target”类型选项。的后果 忽略 此警告是此类上的反射操作将错误地 表明它不是一个内部类。 警告:忽略匿名内部类的 InnerClasses 属性 (com.fyber.ads.videos.e) 不附带 关联的 EnclosureMethod 属性。这个类可能是由一个 不针对现代 .class 文件格式的编译器。推荐的 解决方案是使用最新的编译器从源代码重新编译类 并且没有指定任何“-target”类型选项。的后果 忽略 此警告是此类上的反射操作将错误地 表明它不是一个内部类。 警告:忽略匿名内部类的 InnerClasses 属性 (com.fyber.ads.videos.f) 不附带 关联的 EnclosureMethod 属性。这个类可能是由一个 不针对现代 .class 文件格式的编译器。推荐的 解决方案是使用最新的编译器从源代码重新编译类 并且没有指定任何“-target”类型选项。的后果 忽略 此警告是此类上的反射操作将错误地 表明它不是一个内部类。 警告:忽略匿名内部类的 InnerClasses 属性 (com.fyber.ads.videos.g) 不附带 关联的 EnclosureMethod 属性。这个类可能是由一个 不针对现代 .class 文件格式的编译器。推荐的 解决方案是使用最新的编译器从源代码重新编译类 并且没有指定任何“-target”类型选项。的后果 忽略 此警告是此类上的反射操作将错误地 表明它不是一个内部类。 警告:忽略匿名内部类的 InnerClasses 属性 (com.fyber.ads.videos.h) 不附带 关联的 EnclosureMethod 属性。这个类可能是由一个 不针对现代 .class 文件格式的编译器。推荐的 解决方案是使用最新的编译器从源代码重新编译类 并且没有指定任何“-target”类型选项。的后果 忽略 此警告是此类上的反射操作将错误地 表明它不是一个内部类。 警告:忽略匿名内部类的 InnerClasses 属性 (com.fyber.ads.videos.i) 不附带 关联的 EnclosureMethod 属性。这个类可能是由一个 不针对现代 .class 文件格式的编译器。推荐的 解决方案是使用最新的编译器从源代码重新编译类 并且没有指定任何“-target”类型选项。的后果 忽略 此警告是此类上的反射操作将错误地 表明它不是一个内部类。 警告:忽略匿名内部类的 InnerClasses 属性 (com.fyber.ads.videos.k) 不附带 关联的 EnclosureMethod 属性。这个类可能是由一个 不针对现代 .class 文件格式的编译器。推荐的 解决方案是使用最新的编译器从源代码重新编译类 并且没有指定任何“-target”类型选项。的后果 忽略 此警告是此类上的反射操作将错误地 表明它不是一个内部类。 警告:忽略匿名内部类的 InnerClasses 属性 (com.fyber.ads.videos.l) 不附带 关联的 EnclosureMethod 属性。这个类可能是由一个 不针对现代 .class 文件格式的编译器。推荐的 解决方案是使用最新的编译器从源代码重新编译类 并且没有指定任何“-target”类型选项。的后果 忽略 此警告是此类上的反射操作将错误地 表明它不是一个内部类。 警告:忽略匿名内部类的 InnerClasses 属性 (com.fyber.ads.videos.b) 不附带 关联的 EnclosureMethod 属性。这个类可能是由一个 不针对现代 .class 文件格式的编译器。推荐的 解决方案是使用最新的编译器从源代码重新编译类 并且没有指定任何“-target”类型选项。的后果 忽略 此警告是此类上的反射操作将错误地 表明它不是一个内部类。 警告:忽略匿名内部类的 InnerClasses 属性 (com.fyber.ads.videos
【问题讨论】:
这个不是主流Command Invokation Failure,建议你彻底删除插件重新导入。 【参考方案1】:两周前我也遇到了同样的问题。当您在 assets 文件夹中导入了多个具有相同“.jar”文件的插件时,通常会出现此错误。
我建议您通过在搜索栏中输入“*.jar”来查找项目文件夹中重复的“.jar”。然后查找重复文件并删除其中一个。
就我而言,我导入了两个不同版本的 Google VR sdks。所以他们有相同的 .jar 文件.... 当我搜索它们时,我在搜索结果中找到了两次“example.jar”。并删除了其中一个。它解决了这个问题。
【讨论】:
是的,如果文件名称相似,这会有所帮助。【参考方案2】:如果有人遇到类似问题:在“C:\Users\USERNAME\AppData\Local\Unity\Editor”(在 Windows 上)中,您可以找到 Editor.log 文件。这一个包含完整的日志消息,包括导致冲突的类名。然后,您可以使用“Windows Grep”之类的工具在您的资产文件夹中搜索所有 *.jar 和 *.aar 文件以查找这些类名。 这使您可以找到文件,并且您可能能够删除这些文件。一定要做好备份。重复这些步骤,直到不再出现错误消息。 如果删除导致其他问题,您可以编辑它们(使用 7zip 或类似文件打开 .jar 文件)并删除特定类。
希望这对某人有所帮助!
【讨论】:
【参考方案3】:我可以通过删除以下文件来解决此问题,因为它们是唯一的 8.4.0 版本,而其他版本是 10.0.1。
资产/插件/Android/play.services-ads-8.4.0.aar
资产/插件/Android/play-services-gcm-8.4.0.aar
资产/插件/Android/support-v4-24.0.0.aar
资产/FacebookSDK/Plugins/Android/lib/support-v4-23.2.1.aar
注意: 我解决了 android 版本并将所有播放服务更新到最新版本。
资产 -> 播放器服务处理程序 -> 版本处理程序 -> 更新
【讨论】:
以上是关于“CommandInvokationFailure:无法将类转换为 dex 格式。”使用适用于 Android 的 Unity Upsight 插件构建的主要内容,如果未能解决你的问题,请参考以下文章
Unity Remote 5 与 Android 问题:CommandInvokationFailure: Unity Remote 要求检查失败
“CommandInvokationFailure:无法将类转换为 dex 格式。”使用适用于 Android 的 Unity Upsight 插件构建
CommandInvokationFailure:无法签署APK包
Unity在安卓Build时报错解决:CommandInvokationFailure和编译器 (1.8.0-adoptopenjdk) 中出现异常错误