Java和C/C++混编技术是一种常用的开发技术,目的是使用C/C++弥补Java在高性能计算方面的不足。如Android的Native开发,我们经常是使用Native代码来处理一些复杂的计算,比如图象处理。实现Java/Kotlin和C/C++通讯的接口叫Jni,下面我们来看一下Jni接口的基本用法。
1. Java/Kotlin调用C/C++方法
首先在Java/Kotlin中声明一个Native的空方法
package com.test.native;
public class Main {
//Java: 使用native关键字声明
public native String getString(int index);
//Kotlin: 使用external关键字声明
public external fun getString(index: Int): String
}
然后,在使用这个方法之前,如果你的C/C++库是动态的so库,那么必须提前在静态代码块中加载Native库,例如:
//Java: 在类的静态代码块中加载
static {
System.loadlibrary("native-lib");
}
//Kotlin: 在伴生对象的初始化代码块中加载
companion object {
init {
System.loadlibrary("native-lib")
}
}
参数名表示库的名称,这个"native-lib"完整的库文件名称是“libnative-lib.so”(为啥叫这个?这是Android Studio自动生成的,大家都懒得改名),libxxx.so中间这个xxx就是动态库的名称,这是C/C++通用的命名方式。
注意,一般情况下我