如題,現在就是要使用比較流行的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.