Я пытаюсь взаимодействовать с нативными методами Android из C # в Unity с помощью AndroidJNI, однако я могу разрешать только классы, а не методы.
Я также использовал «более простые варианты», то есть интерфейс AndroidJavaClass, ноошибка говорит о том, что он пытается разрешить методы из java.lang.Object, поэтому я перешел на использование AndroidJNI, но застрял при разрешении методов.
У меня есть следующий метод Java
public static String getParamsString2() {
return "asd";
}
и следующий код c #, пытающийся разрешить идентификатор метода
AndroidJNI.GetStaticMethodID(activityClass, "getParamsString2", "()Ljava/lang/String;");
Я подтвердил от декомпилятора, что подпись верна, однако я получаю следующую ошибку
java.lang.NoSuchMethodError: no static method "Lfi/matalamaki/plugin/UnityPlayerActivity;.getParamsString2()Ljava/lang/String;
Когда я декомпилирую класс, на самом деле есть класс, который содержит метод
public static getParamsString2() { //()Ljava/lang/String;
L1 {
ldc "asd" (java.lang.String)
areturn
}
}
Класс также правильный, fi/matalamaki/plugin/UnityPlayerActivity
при использовании интерфейса AndroidJavaClass с кодом
string referrer3 = new AndroidJavaClass("fi.matalamaki.plugin.UnityPlayerActivity").CallStatic<string>("getParamsString2", new object[0]);
Я получаю следующую ошибку AndroidJavaException: java.lang.NoSuchMethodError: no static method with name='getParamsString2' signature='()Ljava/lang/String;' in class Ljava.lang.Object;
java.lang.NoSuchMethodError: no static method with name='getParamsString2' signature='()Ljava/lang/String;' in class Ljava.lang.Object;
, которая, кажется, указывает на то, что он пытается разрешить метод из java.lang.Object вместо моего собственного класса ..
Я пробовал разные комбинации параметров и типов возвращаемых данных, но не повезло ..
Я также проверил встроенный APK dex, декомпилировав его ..