您的位置:首页 > 移动开发 > Unity3D

Unity打包APK错误:CommandInvokationFailure: Unable to convert classes into dex format.

2018-03-10 22:17 676 查看

Unity打包APK错误:CommandInvokationFailure: Unable to convert classes into dex format.

背景描述

使用unity5.4.3+vuforia-unity-6-2-10 做一个简单的AR识别图demo。

错误描述

在打包到Android平台导出apk时出现了如下图的错误:



接着根据错误弹窗的提示查看Console面板,错误提示如下:



具体他错误提示为:

CommandInvokationFailure: Unable to convert classes into dex format.

C:/Program Files (x86)/Java/jdk1.7.0_55\bin\java.exe -Xmx1024M -Dcom.android.sdkmanager.toolsdir=”D:/2DGamesetup/Android_SDK\tools” -Dfile.encoding=UTF8 -jar “D:\unity\Editor\Data\PlaybackEngines\AndroidPlayer/Tools\sdktools.jar” -

stderr[

Exception in thread “main” java.lang.UnsupportedClassVersionError: com/android/dx/command/Main : Unsupported major.minor version 52.0

at java.lang.ClassLoader.defineClass1(Native Method)

at java.lang.ClassLoader.defineClass(ClassLoader.java:800)

at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)

at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)

at java.net.URLClassLoader.access100(URLClassLoader.java:71)atjava.net.URLClassLoader100(URLClassLoader.java:71)atjava.net.URLClassLoader1.run(URLClassLoader.java:361)

at java.net.URLClassLoader$1.run(URLClassLoader.java:355)

at java.security.AccessController.doPrivileged(Native Method)

at java.net.URLClassLoader.findClass(URLClassLoader.java:354)

at java.lang.ClassLoader.loadClass(ClassLoader.java:425)

at java.lang.ClassLoader.loadClass(ClassLoader.java:358)

at java.lang.Class.forName0(Native Method)

at java.lang.Class.forName(Class.java:270)

at SDKMain.main(SDKMain.java:127)

]

stdout[

]

UnityEditor.Android.Command.Run (System.Diagnostics.ProcessStartInfo psi, UnityEditor.Android.WaitingForProcessToExit waitingForProcessToExit, System.String errorMsg)

UnityEditor.Android.AndroidSDKTools.RunCommandInternal (System.String javaExe, System.String sdkToolsDir, System.String[] sdkToolCommand, Int32 memoryMB, System.String workingdir, UnityEditor.Android.WaitingForProcessToExit waitingForProcessToExit, System.String errorMsg)

UnityEditor.Android.AndroidSDKTools.RunCommandSafe (System.String javaExe, System.String sdkToolsDir, System.String[] sdkToolCommand, Int32 memoryMB, System.String workingdir, UnityEditor.Android.WaitingForProcessToExit waitingForProcessToExit, System.String errorMsg)

UnityEditor.HostView:OnGUI()

解决方法

通过上面加粗的文字:

UnsupportedClassVersionError: com/android/dx/command/Main : Unsupported major.minor version 52.0

可以发现这应该是jdk版本问题。通过网上查找version 52.0所对应的是jdk1.8。所以这个问题的原因就是用了低版本的jdk运行了高版本的jdk编译的文件。通过更换JDK就可以解决了。

具体步骤是:首先安装JDK1.8的安装包,然后配置环境变量,接着点击Unity菜单栏的Edit->Preferences->External Tools更换JDK。

更换前:



更换后:



接着再进行打包APK,成功打包。

注意:之前打包时也遇到过Unable to convert classes into dex format. 错误,一般是jar文件重复编译,通过这次打包错误:学到了应该仔细查看并分析错误提示,做到具体问题具体分析。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐