此贴记录一下自己Android Studio3.2 进行jni开发的基础配置以及入门教程
1.下载NDK
2.配置
(1)打开gradle.properties,添加:android.useDeprecatedNdk=true
(2)打开local.properties,添加:ndk.dir=D:\Android\SDK\ndk-bundle
(3)app里面的build.grald文件夹中添加
android {compileSdkVersion 28defaultConfig {applicationId "com.example.administrator.testjni"minSdkVersion 15targetSdkVersion 28versionCode 1versionName "1.0"testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"ndk {moduleName "JNISample"//moduleName 表示编译出的so文件的名字}}buildTypes {release {minifyEnabled falseproguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'}}}
3.新建java访问c层的接口类,并写一个native方法
public class JniUtils {//创建一个Jni的工具类,并定义接口函数,函数关键字用native(static用不用均可)//getJniString()方法即要与C层的交互的函数public static native String getJniString();static {//名字注意,需要跟你的build.gradle ndk节点下面的名字一样System.loadLibrary("JNISample");}
}
4.生成头文件
首先要安装JDK并配置环境变量,才可执行下图步骤
输入命令 javah com.example.administrator.testjni.JniUtils
5.创建jni开发的文件夹
点击main文件夹,New → Folder → JNI Folder,生成成功后main目录下会出现一个jni的文件夹
找到刚才生成到头文件,复制到jni文件夹下
头文件有了,现在在jni目录下创建一个C++文件用于开发使用,命名与头文件相同
编写C++文件中定义函数的代码
com_example_administrator_testjni_JniUtils.cpp文件
//
// Created by Administrator on 2019/4/2.
//#include "com_example_administrator_testjni_JniUtils.h"JNIEXPORT jstring JNICALL Java_com_example_administrator_testjni_JniUtils_getJniString
(JNIEnv *env,jclass jobj) {
//new 一个字符串,返回Hello World
return env -> NewStringUTF("Hello World");
}
6.调用函数,运行项目
生成so文件
1.配置ndk-bundle系统变量path,值为D:\Android\SDK\ndk-bundle
2.在jni目录下新建Android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)LOCAL_MODULE := JNISample
LOCAL_LDFLAGS := -Wl,--build-id
LOCAL_SRC_FILES := \C:\Users\Administrator\Desktop\code\TestJNI\app\src\main\jni\com_example_administrator_testjni_JniUtils.cpp \LOCAL_C_INCLUDES += C:\Users\Administrator\Desktop\code\TestJNI\app\src\debug\jni
LOCAL_C_INCLUDES += C:\Users\Administrator\Desktop\code\TestJNI\app\src\main\jniinclude $(BUILD_SHARED_LIBRARY)
3.在jni目录下新建Application.mk文件
APP_MODULES := JNISample
APP_ABI := all
4.编译生成so
在jni目录下执行命令 ndk-build
部分详情可参考一下博客
Android Studio jni开发入门
AndroidStudio JNI详细教程