Создать статическую библиотеку iOS из проекта robovm (BAD_ACCESS в JNI)

У меня есть большой объем кода Java (только функции вычисления, без пользовательского интерфейса), который я хочу использовать в качестве статической библиотеки в iOS. Мой подход заключался в использованииrobovm и следуйте неофициальному способу создания статической библиотеки, описанной в двух статьях на форуме robovm:1 Базовый способ а также2 Уточненная версия

Попытка выполнить шаги точно так, как описано, я, к сожалению, застрял после создания общей библиотеки со сценарием, связывания библиотеки (.a) в Xcode и успешного построения проекта.

Во время выполнения я вижу, что мой код моста C ++ вызывается, но JNI перезванивает в библиотеку с ошибкой BAD_ACCESS. Например, следующая строка вылетает:

jclass myJavaClass = jniEnv->FindClass("com/test/robovm/bridge/MyJavaRoboCode");

в этом методе:

void callSomethingInJava(const char* arg) {
    // To call into java from your native app, use JNI
    Env* rvmEnv = rvmGetEnv();
    JNIEnv* jniEnv = &(rvmEnv->jni);
    jclass myJavaClass = jniEnv->FindClass("com/test/robovm/bridge/MyJavaRoboCode");
    jmethodID myJavaMethod = jniEnv->GetStaticMethodID(myJavaClass, "callJava", "(Ljava/lang/String;)V");
    jstring argAsJavaString = jniEnv->NewStringUTF(arg);
    jniEnv->CallStaticVoidMethod(myJavaClass, myJavaMethod, argAsJavaString);

}

То же самое верно, если я пытаюсь использовать методы rvmXX напрямую вместо JNI и пытаюсь получить доступ к чему-то в моих классах "Java". Похоже, что rvmEnv не полностью инициализирован. (Я дважды проверил наличие ошибок в имени пакета или опечатках).

Было бы замечательно, если бы кто-то уже преуспел в создании общей статической библиотеки из проекта robovm и мог бы поделиться здесь опытом или указать мне верное направление для решения проблемы.

Ответы на вопрос(1)

Ваш ответ на вопрос