Android Kotlin jni 示例

本文介绍了如何在Android Kotlin项目中使用JNI。通过新建工程并启用C++支持,遇到的JNI模板问题及解决办法,展示了Kotlin中JNI函数的定义和调用,包括一个额外的函数示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值