如题,现在就是要使用比较流行的cmake方式来完成so库开发,之前使用的是Andorid.mk和Application.mk的方式来生成so库的。方式比较老套,之前使用Andorid.mk和Application.mk的方式习惯了,现在将cmake的方式进行了部分修正,方便习惯自己的老思路。
1、在app/src/main/目录下,新建一个jni文件夹。里面存放一个JNI.cpp和一个CMakeLists.txt文件。如下截图:
分享我的源码,简单的很,就是抛砖引玉的作用,仅供参考:
CMakeLists.txt源码如下:
cmake_minimum_required(VERSION 3.4.1)
set(LOCAL_MODULE DemoTest) # Specify the name of so that you will generate.
add_library(${LOCAL_MODULE}
SHARED
# Following , the same as LOCAL_SRC_FILES in Android.mk
JNI.cpp )
target_link_libraries(${LOCAL_MODULE}
# Link the other so(dll).
log )
JNI.cpp源码:
#include <string>
using namespace std;
#include <jni.h>
extern "C"
JNIEXPORT jstring JNICALL
Java_com_terawins_www_demo001_1cmake_Java_1Interface_GetHell(JNIEnv *env, jobject instance) {
// TODO
string str = "Good afternoon, teacher.";
return env->NewStringUTF(str.data());
}
2、配置一下app目录下的build.gradle文件:
externalNativeBuild {
cmake {
path 'src/main/jni/CMakeLists.txt'
}
}
添加位置:如下截图所示,
3、给出我的Java层JNI接口类声明方式,仅供参考:
package com.terawins.www.demo001_cmake;
public class Java_Interface {
static {
System.loadLibrary("DemoTest");
}
public native String GetHell();
}
---- The End.