【发布时间】:2019-06-30 10:17:08
【问题描述】:
我正在尝试通过 JNI 从 C++ 调用 Kotlin 函数。
Kotlin 函数位于作为 Android 绑定库一部分的类中,附加到 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]]
在签名 apk 的 classes.dex 文件中,我可以看到 MyKotlinClass 的路径正确。但不知何故,JNI 找不到它。
这是因为 Kotlin 类是包含在 Android 绑定库中的 AAR 的一部分吗? 我该怎么做才能让 JNI 找到我的班级?
【问题讨论】:
标签: android xamarin.android java-native-interface