Unity のスクリプトにおいて System.Threading を使ってスレッドを作成した場合、そのスレッドから JNI (UnityEngine.AndroidJNI) を使用すると NoClassDefFoundError になることがあります。
この問題は標準 SDK (java, android) 以外のクラスへアクセスを行った場合に発生します。つまり com.unity3d.player や、独自に組み込まれた Java プラグインへのアクセスができないということです。
この問題が発生する原因については Android SDK のマニュアルにおいて簡潔に解説されています。解決方法も紹介されていますので、それを利用するのがよいでしょう。
最も手軽な解決方法は、必要な参照をあらかじめメインスレッドにおいて取得しておくことです。この方法を使ったサンプルを用意してみました。
0 コメント