【发布时间】:2015-05-10 13:40:22
【问题描述】:
我正在尝试嵌入 unity android 插件并遇到问题
这是代码:
public class Veedi : MonoBehaviour {
private static AndroidJavaObject VeediObject= null;
private static AndroidJavaObject activityContext = null;
public int DeveloperID;
public int gameID;
void Start() {
print("**********START__________");
if(VeediObject == null) {
print("**********VeediObject________");
using(AndroidJavaClass activityClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer"))
{
print("**********AndroidJavaClass_________");
activityContext = activityClass.GetStatic<AndroidJavaObject>("currentActivity");
}
print("*******Before Init________");
using(AndroidJavaClass pluginClass = new AndroidJavaClass("com.play.im.MainActivity")) {
if(pluginClass != null) {
activityContext.Call("runOnUiThread", new AndroidJavaRunnable(() =>
{
print("0");
int attach = AndroidJNI.AttachCurrentThread();
print("1");
VeediObject = pluginClass.CallStatic<AndroidJavaObject>("instance");
print("2");
VeediObject.Call("setContext", activityContext);
print("3");
VeediObject.Call("initVeedi",gameID,DeveloperID);
print("**********after Init__________");
}));
}
}
}
}
当代码到达该行时:
VeediObject = pluginClass.CallStatic("instance");
它突然出现:
JNI 错误(应用程序错误):访问过时的全局引用
有人建议使用:
AndroidJNI.NewGlobalRef
有人可以帮助解决这个问题吗?有人建议它是因为 JNI 对 java 对象的引用发生了变化
【问题讨论】:
标签: android unity3d java-native-interface