Adroid studio3.2 JNI教程

此贴记录一下自己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 28
    defaultConfig {
        applicationId "com.example.administrator.testjni"
        minSdkVersion 15
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

        ndk {
            moduleName "JNISample"//moduleName 表示编译出的so文件的名字
        }


    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles 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并配置环境变量,才可执行下图步骤
Adroid studio3.2 JNI教程_第1张图片
输入命令 javah com.example.administrator.testjni.JniUtils

Adroid studio3.2 JNI教程_第2张图片

5.创建jni开发的文件夹

点击main文件夹,New → Folder → JNI Folder,生成成功后main目录下会出现一个jni的文件夹
找到刚才生成到头文件,复制到jni文件夹下
头文件有了,现在在jni目录下创建一个C++文件用于开发使用,命名与头文件相同
编写C++文件中定义函数的代码
Adroid studio3.2 JNI教程_第3张图片
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.调用函数,运行项目
Adroid studio3.2 JNI教程_第4张图片

生成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\jni

include $(BUILD_SHARED_LIBRARY)

3.在jni目录下新建Application.mk文件

APP_MODULES := JNISample
APP_ABI := all

4.编译生成so
在jni目录下执行命令 ndk-build
Adroid studio3.2 JNI教程_第5张图片
部分详情可参考一下博客
Android Studio jni开发入门
AndroidStudio JNI详细教程

你可能感兴趣的:(JNI)