AndroidStudio新版本弃用ndk了,那我们就使用Cmake来玩JNI吧!
准备工作
1. 新建Android工程,创建
JniUtils.java
package com.example.hellojni; public class JniUtils { static { //名字注意,需要跟你的build.gradle ndk节点下面的名字一样 System.loadLibrary("NameProvider"); } native static String getName(); }
2.切换到Terminal工作区,输入native源码路径 javah com.example.hellojni.JniUtils ,然后回车这时创建出新的.h文件“com_example_hellojni_JniUtils.h”。
3.新建jni文件夹,移动 com_example_hellojni_JniUtils.h 文件到 jni文件夹。新建 getName.cpp 实现getName方法。
//注意这里要修改对应的h文件名 #include "com_example_hellojni_JniUtils.h" JNIEXPORT jstring JNICALL Java_com_example_hellojni_JniUtils_getName (JNIEnv * env, jobject obj){ //如果是用C语言格式就用这种方式 // return (*env)->NewStringUTF(env,"Kiss dream"); //如果是用C语言格式就用这种方式 return env->NewStringUTF((char *)"Kiss dream"); }
4.新建 CMakeLists.txt,注意路径位置!!!
5.修改build.gradle,在 defaultConfig 节点下加入
// 使用Cmake工具 externalNativeBuild { cmake { cppFlags "" //生成多个版本的so文件 abiFilters 'arm64-v8a','armeabi-v7a','x86','x86_64' } }
在 android 节点下加入
// 配置CMakeLists.txt路径 externalNativeBuild { cmake { path "CMakeLists.txt" // 设置所要编写的c源码位置,以及编译后so文件的名字 } }
最后编译运行
以上为Android JNI 初识,后期多多运用!!!谢谢!