一、配置相关信息
1、配置gradle.properties文件
//在文件中添加
android.useDeprecatedNdk=true
2、配置项目当中的build.gradle
(1)、在defaultConfig 中添加
ndk{
abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64'
}
(2)、在android 中添加
externalNativeBuild {
ndkBuild {
path "src/main/jni/Android.mk"
}
}
3、 创建Android.mk文件
//在srcmainjni 这个路径要和上面配置ndkBuild 中的path想同
//创建Android.mk文件 添加信息 可以查看Android.mk语法查看每句话是什么意思
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
#LOCAL_ARM_MODE := $(_ARM_MODE)
LOCAL_MODULE:= jniSmaple //这个是so库名字
LOCAL_CFLAGS :=
LOCAL_SRC_FILES:= com_demo_jnitest_JniC.c
LOCAL_LDLIBS += -llog
#include $(BUILD_STATIC_LIBRARY)
include $(BUILD_SHARED_LIBRARY)
4、创建Java类
//在java目录下创建一个新类
package com.demo.jnitest;
public class JniC {
static {
System.loadLibrary("jniSmaple");//加载so库 名字需要和android.mk文件中的 LOCAL_MODULE相同
}
//声明native方法
public static native String getString();
public static native void jni_test();
}
5、生成h文件
(1)、可以手动创建,需要了解 在jni目录下方创建.c文件
#include <jni.h>
#include <android/log.h>
int loglevel =ANDROID_LOG_DEBUG;
JNIEXPORT jstring JNICALL
Java_com_demo_jnitest_JniC_getString(JNIEnv *env, jclass jclass1){
return (*env) -> NewStringUTF(env,"Hello jni");
}
JNIEXPORT void JNICALL
Java_com_demo_jnitest_JniC_jni_1test(JNIEnv *env, jclass jclass1){
__android_log_print(loglevel,"native_jni","test");
}
(2)、命令行生成代码
命令行cd到当前工程目录下java文件夹
输入命令 javah -jni 包名.类名
按照上面的类 就是 javah -jni com.demo.jnitest.JniC
输入之后会生成一个.h文件 把里面的方法复制出来 然后创建.c文件 复制到.c当中