添加ndk支持

gradle.properties(project properties)

1
2
3
4
5
org.gradle.daemon=true
org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
org.gradle.parallel=true
org.gradle.configureondemand=true
android.useDeprecatedNdk=true

在需要ndk的模块新建JNI Folder

当前模块下生成了/src/main/jni

这个文件夹下放置CMakeLists.txt,和c文件

创建CMakeLists.txt

stringutils cmake生成so包命名相关
反编译apk,可以发现so包名称为libstringutils.so

SHARED之后

打包进入so包的文件目录,可以多个

cmake_minimum_required(VERSION 3.4.1)默认版本

1
2
3
4
5
6
7
cmake_minimum_required(VERSION 3.4.1)

add_library(stringutils SHARED
stringutils.c)

# Include libraries needed for stringutils lib
target_link_libraries(stringutils log android)

##在java文件中创建native方法


1
2
3
4
5
6
7
public class StringUtils {

public static native String makeSkey(String[] array, Context context);
static {
System.loadLibrary("stringutils");
}
}

创建c文件

在java报红的方法名处查看智能提示,生成c文件

1
2
3
4
5
6
7
8
9
10
11
#include <jni.h>

JNIEXPORT jstring JNICALL
Java_com_mzeht_wp_skbyjni_StringUtils_makeSkey(JNIEnv *env, jclass type, jobjectArray array,
jobject context) {

// TODO


return (*env)->NewStringUTF(env, "hehe");
}

返回一个“hehe”,运行android项目即可