ndk极简开发交互demo

以cmake的形式开发:

1、配置ndk路径;

2、配置builde.gradle

ndk极简开发交互demo_第1张图片

3、建立native调用文件

public class NativeCall {
    static {
        System.loadLibrary("JNIHello");
    }
    public static native String hello();
}

Java调用代码示例:

textView.setText(NativeCall.hello());

4、进入相应的目录,生成头文件(terminal命令控制台中):

E:\flutterdemo\Jnidemo>cd app/src/main/java   

E:\flutterdemo\Jnidemo\app\src\main\java>javah -d ../jni com.mysterycode.jnidemo.NativeCall(此处改为对应的包命+文件名)

5、新建对应的cpp文件,写对应的cpp文件(可以在Native调用文件方法上Alter+Enter):

#include 
#include "com_mysterycode_jnidemo_NativeCall.h"

extern "C"
JNIEXPORT jstring JNICALL
Java_com_mysterycode_jnidemo_NativeCall_hello(JNIEnv *env, jclass type) {
    return env->NewStringUTF("Hello from native.");
}

6、写对应的CMakeLists.txt

cmake_minimum_required(VERSION 3.6)
#jni中引入其他c/c++库(支持c++11)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fexceptions -Wno-unused -Wno-gnu-alignof-expression -Wno-missing-field-initializers -std=c++11 -fvisibility=hidden -fexceptions -Wextra -Wno-unused-parameter -Wno-format-security -Wno-unused-local-typedef")

add_library( # Sets the name of the library.
        JNIHello
        SHARED #共享此库
        com_mysterycode_jnidemo_NativeCall.cpp)

7、直接运行

目录参考:

ndk极简开发交互demo_第2张图片

参考:https://github.com/AndroidAdvanceWithGeektime/Chapter03

你可能感兴趣的:(Android)