1配置NDK路径
2 build.gradle(module):放在defaultConfig里面
ndk{
moduleName “JNI_ANDROID” //so库名字
abiFilters “armeabi”, “armeabi-v7a”, “x86”
ldLibs “log”, “z”, “m”//log支持
}
sourceSets.main {
jni.srcDirs = []
jniLibs.srcDir ‘src/main/libs’
}
3 gradle.properties:
android.useDeprecatedNdk=true
4 写本地方法 加载so库JNI_ANDROID
5 在jni目录下创建Android.mk 文件
LOCAL_PATH :=
(callmy−dir)include
(CLEAR_VARS)
LOCAL_MODULE := JNI_ANDROID
LOCAL_SRC_FILES := helloc.c
LOCAL_LDLIBS := -llog 在c中打印log
include $(BUILD_SHARED_LIBRARY)
在jni目录下创建Application.mk 文件
APP_MODULES := JNI_ANDROID
APP_ABI := armeabi armeabi-v7a x86
5 配置 NDK快捷命令javah -jni ndk-build ndk-build clean
根据本地方法自动生成.h文件
自动生成so库
clean后重新生成so
6 分别运行javah -jni ndk-build命令即可
7 C文件如下
#include <string.h>
#include <android/log.h>
#include <jni.h>
#include <stdio.h>
#define LOG_TAG "System.out"
#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG, LOG_TAG, __VA_ARGS__)
#define LOGI(...) __android_log_print(ANDROID_LOG_INFO, LOG_TAG, __VA_ARGS__)
JNIEXPORT jstring JNICALL Java_com_test_jni_myapplication_MainActivity_getPackname
(JNIEnv * env, jclass clazz){
char* cstr = "hello from cFF啊实打实的FF";
LOGD("测试打印LOG");
return (*env)->NewStringUTF(env, cstr);
};