Ich habe nicht alle Details über Ihr Projekt, und die Fehler, die intern nicht reproduziert werden können, sind die schlimmsten. Trotzdem werde ich versuchen, ein paar Hinweise zu geben, was vor sich geht. Vielleicht können diese Hinweise etwas Licht und helfen Sie die Ursache des Fehlers herauszufinden:
CalledFromWrongThreadException
Auf Android kann ein Blick nur aus dem Thread zugegriffen werden, die es erstellt. Dies gilt auch für andere Umgebungen (WinForms, WPF, usw.). Diese Ausnahme bedeutet, dass etwas versucht, von einem falschen Thread auf ein Oberflächenelement (SurfaceView) zuzugreifen.
com.unity3d.player.UnityPlayer $ c.run
Der Stack-Trace stammt von einem benutzerdefinierten Unity Sanitär-Code. Während dies keinen Hinweis darauf gibt, woher dieser Aufruf stammt (in Ihrem C# -Code), könnte dies bedeuten, dass der Code aus C# stammt (mit AndroidJavaObject- oder AndroidJavaClass-Aufrufen). Der Scripting-Thread von Unity entspricht nicht dem Hauptthread von Android. Daher ist dies zusammen mit dem Ausnahmetyp, den Sie erhalten, sinnvoll.
Als Test habe ich diesen Code verwendet, um die gleiche Ausnahme zu simulieren:
using (var actClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer"))
{
var activity = actClass.GetStatic<AndroidJavaObject>("currentActivity");
// cause an exception to be thrown
activity.Call("setContentView", 15);
}
Daraus ergab sich die folgende Ausnahme, die dem sehr ähnlich ist, Sie bekommen (zumindest an seinem Wurzel).
E/ViewRootImpl(19244): com.test.crash.GameActivity : Only the original thread that created a view hierarchy can touch its views. E/ViewRootImpl(19244): java.lang.RuntimeException E/ViewRootImpl(19244): at android.view.ViewRootImpl.checkThread(ViewRootImpl.java:7105) E/ViewRootImpl(19244): at android.view.ViewRootImpl.invalidateChildInParent(ViewRootImpl.java:1139) E/ViewRootImpl(19244): at android.view.ViewGroup.invalidateChild(ViewGroup.java:5254) E/ViewRootImpl(19244): at android.view.View.invalidateInternal(View.java:13669) E/ViewRootImpl(19244): at android.view.View.invalidate(View.java:13633) E/ViewRootImpl(19244): at android.view.View.onFocusChanged(View.java:6204) E/ViewRootImpl(19244): at android.view.View.clearFocusInternal(View.java:6089) E/ViewRootImpl(19244): at android.view.View.unFocus(View.java:6122) E/ViewRootImpl(19244): at android.view.ViewGroup.unFocus(ViewGroup.java:997) E/ViewRootImpl(19244): at android.view.ViewGroup.removeAllViewsInLayout(ViewGroup.java:4946) E/ViewRootImpl(19244): at android.view.ViewGroup.removeAllViews(ViewGroup.java:4905) E/ViewRootImpl(19244): at com.android.internal.policy.PhoneWindow.setContentView(PhoneWindow.java:410) E/ViewRootImpl(19244): at android.app.Activity.setContentView(Activity.java:2423) E/ViewRootImpl(19244): at com.unity3d.player.UnityPlayer.nativeRender(Native Method) E/ViewRootImpl(19244): at com.unity3d.player.UnityPlayer.a(Unknown Source) E/ViewRootImpl(19244): at com.unity3d.player.UnityPlayer$c$1.handleMessage(Unknown Source) E/ViewRootImpl(19244): at android.os.Handler.dispatchMessage(Handler.java:98) E/ViewRootImpl(19244): at android.os.Looper.loop(Looper.java:173) E/ViewRootImpl(19244): at com.unity3d.player.UnityPlayer$c.run(Unknown Source)
Zusammenfassung
Wie ich schon erwähnt, das gibt Ihnen nur eine Richtung, wo sie suchen. Hoffentlich werden Sie in der Lage sein, potentielle Orte zu finden, die dafür verantwortlich sein könnten (wahrscheinlich Plugin-Code). Ich würde gerne weiter helfen (in den Kommentaren, oder fühlen Sie sich frei contact me).