Итак, я создаю приложение для Android, которое использует Unity ... Я получаю некоторый пакет ресурсов от Unity, но я не знаю URL до запуска Unity.Таким образом, Unity необходимо вызвать функцию на стороне Native (Android), чтобы получить URL.
Я некоторое время терялся в том, как это сделать (документация Unity довольно ужасна, imho).Я решил использовать NDK, чтобы выручить меня.Без Unity все в моем библиотечном файле работает ... теперь проблема заключается в вызове этих функций C в Unity.
Вот моя библиотека:
#include <jni.h>
#include <string.h>
#include <android/log.h>
#define DEBUG_TAG "NDK_blahy"
extern "C" {
jstring Java_com_blah_blah_getURL(JNIEnv * env, jobject this);
void Java_com_blah_blah_setURL(JNIEnv * env, jobject this, jstring URL);
}
jstring url;
void Java_com_blah_blah_setURL(JNIEnv * env, jobject this, jstring URL)
{
url = URL;
jboolean isCopy;
const char * szLogThis = (*env)->GetStringUTFChars(env, URL, &isCopy);
__android_log_print(ANDROID_LOG_DEBUG, DEBUG_TAG, "NDK:LC: [%s]", szLogThis);
(*env)->ReleaseStringUTFChars(env, URL, szLogThis);
}
jstring Java_com_lyfelotto_blah_blah_getURL(JNIEnv * env, jobject this)
{
return url;
}
Мой код Unity загружает библиотеку простонормально (используя [DllImport ("libname")]
).
Теперь, если я загружу функцию "правильно", как это private static extern jstring Java_com_lyfelotto_blah_blah_getURL(JNIEnv * env, jobject this)
плохие вещи случаются
Я поступил неправильно?(Как я уже сказал, все, что мне нужно сделать, это получить строку).Есть идеи?