1.和java的不同
- 本地方法声明不同
//java声明方式
public static native void testJNI();
//kotlin声明方式
external fun testJNI()
- 生成c头文件方式不同
JAVA
在AS中java声明的native方法会直接提示未声明头文件,直接Alt+Enter就能生成,也可以点击下方的Terminal通过命令
生成
//格式 javah -d 存放头文件的目录 完整包名和类名 一般到app/src/main路径下执行
//示例
javah -d cpp com.example.firstjni.NDKUtil
Kotlin
kotlin代码AS不会提醒创建头文件,而且一开始不会生出class文件,需要先执行编译再使用javah,生成的class文件路径为
//格式 javah -d 存放头文件的目录 -cp 加载类的目录 完整包名和类名
//示例
javah -d src/main/cpp -cp /app/build/tmp/kotlin-classes/debug/ com.example.firstjni.NDKUtil
这样就可以看到cpp目录下生成了头文件