【发布时间】:2017-06-11 12:38:25
【问题描述】:
我正在尝试使用 Unity 5.6 和 Google Cardboard 构建我的 VR 项目。我收到以下错误
CommandInvokationFailure: Unable to convert classes into dex format.
/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/bin/java -Xmx2048M -Dcom.android.sdkmanager.toolsdir="/Users/mymac/Library/Android/sdk/tools" -Dfile.encoding=UTF8 -jar "/Applications/Unity/PlaybackEngines/AndroidPlayer/Tools/sdktools.jar" -
stderr[
Uncaught translation error: java.lang.IllegalArgumentException: already added: Lcom/google/vr/cardboard/DisplaySynchronizer;
Uncaught translation error: java.lang.IllegalArgumentException: already added: Lcom/google/vr/cardboard/FrameMonitor;
Uncaught translation error: java.lang.IllegalArgumentException: already added: Lcom/google/vr/cardboard/NFCUtils;
Uncaught translation error: java.lang.IllegalArgumentException: already added: Lcom/google/vr/cardboard/NFCUtils$1;
Uncaught translation error: java.lang.IllegalArgumentException: already added: Lcom/google/vr/cardboard/TransitionView;
Uncaught translation error: java.lang.IllegalArgumentException: already added: Lcom/google/vr/cardboard/TransitionView$1;
Uncaught translation error: java.lang.IllegalArgumentException: already added: Lcom/google/vr/cardboard/TransitionView$2;
Uncaught translation error: java.lang.IllegalArgumentException: already added: Lcom/google/vr/cardboard/TransitionView$3;
Uncaught translation error: java.lang.IllegalArgumentException: already added: Lcom/google/vr/cardboard/TransitionView$TransitionListener;
UNEXPECTED TOP-LEVEL EXCEPTION:
java.lang.RuntimeException: Translation has been interrupted
at com.android.dx.command.dexer.Main.processAllFiles(Main.java:613)
at com.android.dx.command.dexer.Main.runMonoDex(Main.java:311)
at com.android.dx.command.dexer.Main.run(Main.java:277)
at com.android.dx.command.dexer.Main.main(Main.java:245)
at com.android.dx.command.Main.main(Main.java:106)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at SDKMain.main(SDKMain.java:129)
Caused by: java.lang.InterruptedException: Too many errors
at com.android.dx.command.dexer.Main.processAllFiles(Main.java:605)
... 9 more
]
stdout[
processing archive /Users/mymac/Desktop/project/Temp/StagingArea/android-libraries/gvr-permissionsupport-release/libs/./classes.jar...
processing com/google/gvr/permissionsupport/BuildConfig.class...
processing com/google/gvr/permissionsupport/PermissionsFragment.class...
processing com/google/gvr/permissionsupport/PermissionsFragment$1.class...
processing com/google/gvr/permissionsupport/PermissionsFragment$PermissionsCallback.class...
processing com/google/gvr/permissionsupport/TransitionVRActivity.class...
processing com/google/gvr/permissionsupport/TransitionVRActivity$1.class...
ignored resource mymac/Temp/StagingArea/android-libraries/gvr/libs/./armeabi-v7a/libgvr.so
processing archive
环顾四周,发现可能是.jar/.aar文件重复错误,所以我在我的项目中寻找:
mymac$ find . | grep .aar
./Assets/Plugins/Android/gvr-permissionsupport-release.aar
./Assets/Plugins/Android/gvr-permissionsupport-release.aar.meta
./Temp/StagingArea/aar
./Temp/StagingArea/aar/gvr-permissionsupport-release.aar
./Temp/StagingArea/aar/gvr.aar
./Temp/StagingArea/aar/unitygvr.aar
mymac$ find . | grep .jar
./Assets/Plugins/Android/unityvractivity.jar
./Assets/Plugins/Android/unityvractivity.jar.meta
./Temp/StagingArea/android-libraries/gvr/libs/classes.jar
./Temp/StagingArea/android-libraries/gvr-permissionsupport-release/libs/classes.jar
./Temp/StagingArea/android-libraries/unitygvr/libs/classes.jar
./Temp/StagingArea/bin/classes.jar
./Temp/StagingArea/plugins/libprotobuf-java-nano.jar
./Temp/StagingArea/plugins/unityvractivity.jar
您可以看到没有重复,因为所有其他文件都是在构建时在 /Temp 中创建的副本。不知道如何继续。
【问题讨论】:
-
你能在Android上构建空项目吗?测试并告诉我们结果。
-
是的,如果我删除 VR 支持(取消选中“支持虚拟现实”标志),项目构建没有问题
-
有趣。试试this
-
我已经试过了。它不起作用。看来问题出在 class.jar
-
你用的是什么插件?你能列出他们的版本吗?
标签: unity3d jar apk google-cardboard