Android Kotlin jni 示例

来源:互联网 发布:女生去夜店 知乎 编辑:程序博客网 时间:2024/05/29 00:30

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 jintJNICALLJava_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后续的正式版本很快就会修复这个模板问题。

原创粉丝点击