2017-06-10 16 views
2

Unityゲームにカスタム位置決めデータを提供するAndroid Unityプラグイン(.aarファイル)を作成しました。私のユニティスクリプトでは、私は、いくつかの位置データを取得するためにUnity Error:クラスをdexフォーマットに変換できません

var x = customClass.CallStatic<float>("getHeadX");

を使用しています。このメソッドはフレームごとに呼び出され、更新されたデータ(ポーリングメソッド)を取得して非効率的になります。代わりに、私は、更新されたデータが準備が整ったら、私のJavaコード(プラグイン側)からUnityスクリプト内のC#メソッドを呼び出すことにしました。これを行うには、私のJavaプラグインでは、私は、

import com.unity3d.player.UnityPlayer; 
... 
UnityPlayer.UnitySendMessage("Manager", // gameObject name 
          "PluginCallback", // this is a callback in C# 
          "Hello from android plugin"); // msg which is not needed actually 

を書いたしかし、コンパイラは、パッケージがcom.unity3d.player.UnityPlayerが存在しないことを訴えました。だから、私はアンドロイドのプラグインのプロジェクトの「LIBS」フォルダに

C:\Program Files (x86)\Unity\Editor\Data\PlaybackEngines\AndroidPlayer\Variations\mono\Release\Classes \classes.jar

からclasses.jarファイルをコピーしました。私はそれを正常に構築し、生成された.aarファイル(mylibrary-release.aar)をUnityプロジェクトのAssets \ Plugins \ Androidフォルダにコピーしました。

私は(「内部」ビルドシステムを使用して)ユニティプロジェクトをビルドするとき、それは私に、このエラーを与える:

IOException: Failed to Move File/Directory from 'Temp/StagingArea\android-libraries\mylibrary-release\classes.jar' to 'Temp/StagingArea\android-libraries\mylibrary-release\libs\classes.jar'. UnityEditor.Android.PostProcessor.Tasks.ProcessAAR.Execute ...

classes.jar依存関係が作られた(classes.jarと名前が競合しているため、このエラーが発生しました私のプラグインからの単一性によって)。だから私は unity_classes.jar に依存名を変更し、これは問題を解決しますが、私のユニティ・アプリケーションを構築する際に、今、私は新しいエラーを取得しています:

CommandInvokationFailure: Unable to convert classes into dex format. C:/Program Files/Java/jdk1.8.0_102\bin\java.exe -Xmx2048M Dcom.android.sdkmanager.toolsdir="C:/Users/kamran.shamloo/AppData/Local/Android/Sdk\tools" -Dfile.encoding=UTF8 -jar "C:\Program Files (x86)\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; ...

答えて

関連する問題