Android Kotlin jni 示例
本文的目的是简要介绍在Kotlin中使用jni
首先新建一个Android工程,勾选 include C++ support,然后一路点击Next,直至Finish
打开MainActivity.kt, 我们发现在Android Studio 3.0 Preview下,编译报错,其实是Preview版本的jni模板不对,函数定义和静态代码块还是Java的版本。Kotlin对应的静态代码块关键字是init。
public native String stringFromJNI();
static {
System.loadLibrary("native-lib");
}
修改后编译通过:
init {
System.loadLibrary("native-lib")
}
external fun stringFromJNI(): String
demo额外定义了一个initFromJNI函数:
external fun intFromJNI(): Int
对应c++函数:
extern "C"
JNIEXPORT jint
JNICALL
Java_com_zzk_androidkotlindemo_MainActivity_intFromJNI(
JNIEnv *env,
jobject) {
__android_log_write(ANDROID_LOG_DEBUG, TAG,
"Java_com_zzk_androidKotlindemo_MainActivity_intFromJNI");
return 1 << 8;
}
在TextView中显示两个函数的调用结果:
val tv = findViewById(R.id.sample_text) as TextView
tv.text = stringFromJNI() + "\nintFromJNI->${intFromJNI()}"
编译运行:
demo很简单,Android Studio后续的正式版本很快就会修复这个模板问题。
本文介绍了如何在Android Kotlin项目中使用JNI。通过新建工程并启用C++支持,遇到的JNI模板问题及解决办法,展示了Kotlin中JNI函数的定义和调用,包括一个额外的函数示例。
624

被折叠的 条评论
为什么被折叠?



