1.环境变量配置
在用户变量中添加NDK_HOME的变量名,值为ndk的目录,在系统变量的path中添加%NDK_HOME%
cmd中ndk-build出现如下说明成功
Android NDK: Could not find application project directory !
Android NDK: Please define the NDK_PROJECT_PATH variable to point to it.
D:\as_tool\ndk\android-ndk-r16-beta1\build\\..\build\core\build-local.mk:151: *** Android NDK: Aborting . Stop.
2.创建项目编写jni代码
(我的Android studio 升级3.0后用以前的ndk-build 报错了、as支持cmake编译,但是用ndk-build方式咋用)在as的Terminal下切换到项目的java目录下用javah先创建jni文件夹生成.h文件
E:\androidstudio\jniDemo\app\src\main\java>javah -d ../jni com.zxy.jnidemo.MainActivity
执行完后直接在main下创建jni目录,jni里生成.h文件,改名为demo.h
根据.h文件编写c文件
#include "demo.h"
JNIEXPORT jstring JNICALL Java_com_zxy_jni1_MainActivity_getStr (JNIEnv *env, jobject obj){
return (*env)->NewStringUTF(env,"************ Hello World ************");
}
编写Android.mk文件和Application.mk文件
Android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := demo
LOCAL_SRC_FILES := demo.c
include $(BUILD_SHARED_LIBRARY)
Application.mk
APP_MODULES := demo
APP_ABI := all
3.配置gradle
项目切换成Android点击app点击File-Lick C++ Project With Gradle,下拉选择ndk-build方式,选择Android.mk路径,
app的gradle下生成
externalNativeBuild {
ndkBuild {
path 'src/main/jni/Android.mk'
}
}
4.ndk-build在main下生成.so文件
在MainActivity里调用
static {
System.loadLibrary("demo");
}
public native String getStr();