Я пытаюсь вызвать функцию Kotlin из C ++ через JNI.
Функция Kotlin находится в классе, который является частью библиотеки Android Binding, подключенной к приложению Xamarin.
Код C ++ находится в собственной библиотеке того же приложения Xamarin.
Я вызываю FindClass () с этой строкой кода:
jclass classObj = m_env->FindClass("de/companyname/packagename/MyKotlinClass");
m_env является допустимым указателем на среду JNI (например, я могу успешно найти стандартные классы библиотеки Java).Вышеприведенная строка кода завершается с
java.lang.ClassNotFoundException: не найден класс "de / companyname / packagename / MyKotlinClass" по пути: DexPathList [[directory "."], NativeLibraryDirectories =[/ vendor / lib, / system / lib]]
В файле classes.dex apk со знаком я вижу MyKotlinClass с правильным путем.Но почему-то JNI не может его найти.
Это потому, что класс Kotlin является частью AAR, который включен в библиотеку привязок Android?Что я могу сделать, чтобы JNI нашел свой класс?