簡體   English   中英

為Unity 3D 5.3構建Android庫時出錯 - Android Studio

[英]Error building Android Library for Unity 3D 5.3 - Android Studio

我正在使用Android Studio嘗試為Unity3d 5.3構建Android庫。 為此,我創建了一個Android庫模塊,我添加了classes.jar文件以與UnityPlayer一起使用,如下圖所示:

在此輸入圖像描述

然后,我生成了模塊,我得到了'wrapper-debug.aar'文件,我把它放在'\\ Assets \\ Plugins \\ Android'中。 最后,當我構建時,我遇到以下錯誤:

Error building Player: CommandInvokationFailure: Unable to convert classes   into dex format. See the Console for details.
C:/Program Files/Java/jdk1.8.0_45\bin\java.exe -Xmx2048M -Dcom.android.sdkmanager.toolsdir="C:/Users/.../AppData/Local/Android\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: Lbitter/jnibridge/JNIBridge;
Uncaught translation error: java.lang.IllegalArgumentException: already added: Lbitter/jnibridge/JNIBridge$a;
Uncaught translation error: java.lang.IllegalArgumentException: already added: Lcom/unity3d/player/NativeLoader;
Uncaught translation error: java.lang.IllegalArgumentException: already added: Lcom/unity3d/player/ReflectionHelper;
Uncaught translation error: java.lang.IllegalArgumentException: already added: Lcom/unity3d/player/ReflectionHelper$1;
Uncaught translation error: java.lang.IllegalArgumentException: already added: Lcom/unity3d/player/ReflectionHelper$a;
Uncaught translation error: java.lang.IllegalArgumentException: already added: Lcom/unity3d/player/UnityPlayer;
Uncaught translation error: java.lang.IllegalArgumentException: already added: Lcom/unity3d/player/UnityPlayer$1;
Uncaught translation error: java.lang.IllegalArgumentException: already added: Lcom/unity3d/player/UnityPlayer$10;

UNEXPECTED TOP-LEVEL EXCEPTION:
java.lang.RuntimeException: Translation has been interrupted
at com.android.dx.command.dexer.Main.processAllFiles(Main.java:608)
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:497)
at SDKMain.main(SDKMain.java:129)
Caused by: java.lang.InterruptedException: Too many errors
at com.android.dx.command.dexer.Main.processAllFiles(Main.java:600)
... 9 more
]
stdout[
processing archive G:\...\Unity5\Projects\AndroidPlugin\AndroidPlugin\Temp\StagingArea\android-libraries\wrapper-debug\bin\classes.jar...
processing unitywrapper/wrapper/BuildConfig.class...
processing unitywrapper/wrapper/Wrapper.class...
processing archive G:\...\Unity5\Projects\AndroidPlugin\AndroidPlugin\Temp\StagingArea\android-libraries\wrapper-debug\libs\.\classes.jar...
processing bitter/jnibridge/JNIBridge.class...
processing bitter/jnibridge/JNIBridge$a.class...
processing com/unity3d/player/NativeLoader.class...
processing com/unity3d/player/ReflectionHelper.class...
processing com/unity3d/player/ReflectionHelper$1.class...
processing com/unity3d/player/ReflectionHelper$a.class...
processing com/unity3d/player/UnityPlayer.class...
processing com/unity3d/player/UnityPlayer$1.class...
processing com/unity3d/player/UnityPlayer$10.class...
processing com/unity3d/player/UnityPlayer$11.class...
processing com/unity3d/player/UnityPlayer$12.class...
processing com/unity3d/player/UnityPlayer$13.class...
processing com/unity3d/player/UnityPlayer$14.class...
processing com/unity3d/player/UnityPlayer$15.class...
processing com/unity3d/player/UnityPlayer$15$1.class...
processing com/unity3d/player/UnityPlayer$16.class...
processing com/unity3d/player/UnityPlayer$17.class...
processing com/unity3d/player/UnityPlayer$18.class...
processing com/unity3d/player/UnityPlayer$19.class...
processing com/unity3d/player/UnityPlayer$2.class...
processing com/unity3d/player/UnityPlayer$20.class...
processing com/unity3d/player/UnityPlayer$3.class...
processing com/unity3d/player/UnityPlayer$4.class...
processing com/unity3d/player/UnityPlayer$5.class...
processing com/unity3d/player/UnityPlayer$6.class...
processing com/unity3d/player/UnityPlayer$7.class...
processing com/unity3d/player/UnityPlayer$8.class...
processing com/unity3d/player/UnityPlayer$9.class...
processing com/unity3d/player/UnityPlayer$a.class...
processing com/unity3d/player/UnityPlayer$b.class...
processing com/unity3d/player/UnityPlayer$c.class...
processing com/unity3d/player/UnityPlayerActivity.class...
processing com/unity3d/player/UnityPlayerNativeActivity.class...
processing com/unity3d/player/UnityPlayerProxyActivity.class...
processing com/unity3d/player/UnityWebRequest.class...
processing com/unity3d/player/WWW.class...
processing com/unity3d/player/a.class...
processing com/unity3d/player/a$1.class...
processing com/unity3d/player/a$2.class...
processing com/unity3d/player/a$a.class...
processing com/unity3d/player/b.class...
processing com/unity3d/player/b$1.class...
processing com/unity3d/player/b$2.class...
processing com/unity3d/player/c.class...
processing com/unity3d/player/d.class...
processing com/unity3d/player/d$1.class...
processing com/unity3d/player/d$2.class...
processing com/unity3d/player/e.class...
processing com/unity3d/player/f.class...
processing com/unity3d/player/g.class...
processing com/unity3d/player/h.class...
processing com/unity3d/player/i.class...
processing com/unity3d/player/j.class...
processing com/unity3d/player/k.class...
processing com/unity3d/player/k$1.class...
processing com/unity3d/player/k$2.class...
processing com/unity3d/player/k$2$1.class...
processing com/unity3d/player/k$2$1$1.class...
processing com/unity3d/player/l.class...
processing com/unity3d/player/l$1.class...
processing com/unity3d/player/m.class...
processing com/unity3d/player/n.class...
processing com/unity3d/player/n$1.class...
processing com/unity3d/player/o.class...
processing com/unity3d/player/p.class...
processing com/unity3d/player/p$1.class...
processing com/unity3d/player/q.class...
processing com/unity3d/player/r.class...
processing com/unity3d/player/s.class...
processing com/unity3d/player/s$1.class...
processing com/unity3d/player/s$2.class...
processing com/unity3d/player/s$3.class...
processing com/unity3d/player/t.class...
processing com/unity3d/player/u.class...
processing com/unity3d/player/v.class...
processing com/unity3d/player/w.class...
processing com/unity3d/player/w$1.class...
processing org/fmod/FMODAudioDevice.class...
processing org/fmod/a.class...
processing bin\classes\.\com\androidplugin\android\R.class...
processing bin\classes\.\com\androidplugin\android\R$attr.class...
processing bin\classes\.\com\androidplugin\android\R$drawable.class...
processing bin\classes\.\com\androidplugin\android\R$string.class...
processing bin\classes\.\unitywrapper\wrapper\R.class...
processing bin\classes\.\unitywrapper\wrapper\R$attr.class...
processing bin\classes\.\unitywrapper\wrapper\R$drawable.class...
processing bin\classes\.\unitywrapper\wrapper\R$string.class...
processing archive bin\classes.jar...
processing bitter/jnibridge/JNIBridge.class...
processing bitter/jnibridge/JNIBridge$a.class...
processing com/unity3d/player/NativeLoader.class...
processing com/unity3d/player/ReflectionHelper.class...
processing com/unity3d/player/ReflectionHelper$1.class...
processing com/unity3d/player/ReflectionHelper$a.class...
processing com/unity3d/player/UnityPlayer.class...
processing com/unity3d/player/UnityPlayer$1.class...
processing com/unity3d/player/UnityPlayer$10.class...
processing com/unity3d/player/UnityPlayer$11.class...
processing com/unity3d/player/UnityPlayer$12.class...
processing com/unity3d/player/UnityPlayer$13.class...
processing com/unity3d/player/UnityPlayer$14.class...
processing com/unity3d/player/UnityPlayer$15.class...
processing com/unity3d/player/UnityPlayer$15$1.class...
processing com/unity3d/player/UnityPlayer$16.class...
processing com/unity3d/player/UnityPlayer$17.class...
processing com/unity3d/player/UnityPlayer$18.class...
processing com/unity3d/player/UnityPlayer$19.class...
processing com/unity3d/player/UnityPlayer$2.class...
processing com/unity3d/player/UnityPlayer$20.class...
processing com/unity3d/player/UnityPlayer$3.class...
processing com/unity3d/player/UnityPlayer$4.class...
processing com/unity3d/player/UnityPlayer$5.class...
processing com/unity3d/player/UnityPlayer$6.class...
processing com/unity3d/player/UnityPlayer$7.class...
processing com/unity3d/player/UnityPlayer$8.class...
processing com/unity3d/player/UnityPlayer$9.class...
processing com/unity3d/player/UnityPlayer$a.class...
processing com/unity3d/player/UnityPlayer$b.class...
processing com/unity3d/player/UnityPlayer$c.class...
processing com/unity3d/player/UnityPlayerActivity.class...
processing com/unity3d/player/UnityPlayerNativeActivity.class...
processing com/unity3d/player/UnityPlayerProxyActivity.class...
processing com/unity3d/player/UnityWebRequest.class...
processing com/unity3d/player/WWW.class...
processing com/unity3d/player/a.class...
processing com/unity3d/player/a$1.class...
processing com/unity3d/player/a$2.class...
processing com/unity3d/player/a$a.class...
processing com/unity3d/player/b.class...
processing com/unity3d/player/b$1.class...
processing com/unity3d/player/b$2.class...
processing com/unity3d/player/c.class...
processing com/unity3d/player/d.class...
processing com/unity3d/player/d$1.class...
processing com/unity3d/player/d$2.class...
processing com/unity3d/player/e.class...
processing com/unity3d/player/f.class...
processing com/unity3d/player/g.class...
processing com/unity3d/player/h.class...
processing com/unity3d/player/i.class...
processing com/unity3d/player/j.class...
processing com/unity3d/player/k.class...
processing com/unity3d/player/k$1.class...
processing com/unity3d/player/k$2.class...
processing com/unity3d/player/k$2$1.class...
processing com/unity3d/player/k$2$1$1.class...
processing com/unity3d/player/l.class...
processing com/unity3d/player/l$1.class...
processing com/unity3d/player/m.class...
processing com/unity3d/player/n.class...
processing com/unity3d/player/n$1.class...
processing com/unity3d/player/o.class...
processing com/unity3d/player/p.class...
processing com/unity3d/player/p$1.class...
processing com/unity3d/player/q.class...
processing com/unity3d/player/r.class...
processing com/unity3d/player/s.class...
processing com/unity3d/player/s$1.class...
processing com/unity3d/player/s$2.class...
processing com/unity3d/player/s$3.class...
processing com/unity3d/player/t.class...
processing com/unity3d/player/u.class...
processing com/unity3d/player/v.class...
processing com/unity3d/player/w.class...
processing com/unity3d/player/w$1.class...
processing org/fmod/FMODAudioDevice.class...
processing org/fmod/a.class...
]

我能理解的是,我正在添加已經添加的類。 問題在於文件classes.jar。 如果我把它取下來,插件工作正常但沒有它,我不能在我的庫中使用unityPlayer,這是我真正需要的東西。

另一種方法是做一個.jar庫,但在這種情況下,我必須將res文件夾放在Unity的android插件文件夾中,但這是不贊成的。

還有另一種方法可以使用Android 5.x的android庫嗎?

非常感謝你如果您需要更多信息,請告訴我。

Unity在構建應用程序時會自動將其自己的類添加到項目中。 如果將它們與庫捆綁在一起,它們將被添加兩次。

除了您當前使用的compile配置之外,Android的Gradle插件還定義了一個名為provided的配置。 它在某種意義上是不同的,它假設依賴項將在運行時出現在應用程序的類路徑上,並且不包括構建庫中的類。

要將provided配置與該特定JAR一起使用,請替換這兩行

compile fileTree(include: ['*.jar'], dir: 'libs')

compile files('libs/classes.jar')

用這些

compile fileTree(dir: 'libs', include: ['*.jar'], exclude: ['classes.jar'])

provided files('libs/classes.jar')

這將使Gradle將libs/放置的每個JAR文件視為與庫捆綁在一起的依賴項,但classes.jar除外,它只用於編譯庫。

請注意,如果您使用的是Android Gradle插件3.0.0或更高版本 ,則應使用implementation而不是compilecompileOnly而不是provided 這些配置已重命名: https//developer.android.com/studio/build/gradle-plugin-3-0-0-migration#new_configurations

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM