Step1 创建NDK项目

注意勾选include C++ support

AS3.0上开发NDK演示DEMO步骤

然后都是默认选项

Step2 创建本地JNI测试类

/**
 * @auther:HWQ
 * @description:
 * @date:2018-09-25
 * @time:22:04
 */
//创建JNI类
public class JNITest {
    //加载类库名称    稍后生成的so文件与此处命名有关联
    static {
        System.loadLibrary("MyNDK");
    }

    //写一个测试JNI类的native方法    这里就写一个求和方法    最开始创建时报红是正常的
    public native int getSum(int a, int b);
}

AS3.0上开发NDK演示DEMO步骤

Step3 生成C++头文件

进入到JNITest类下,然后输入javah JNI类全路径生成C++的头文件。生成后需要稍等片刻才可以看见生成的头文件。

AS3.0上开发NDK演示DEMO步骤
AS3.0上开发NDK演示DEMO步骤

Step4 将生成的头文件复制到CPP文件夹下并改名。

AS3.0上开发NDK演示DEMO步骤

例如改名为JNITest.h

AS3.0上开发NDK演示DEMO步骤

然后创建cpp文件JNITest.cpp,并补全cpp文件中测试代码。然后删除最初生成的头文件com_ndk_archermind_myndk_JNITest.h。

AS3.0上开发NDK演示DEMO步骤

//导入jni.h头文件
#include <jni.h>
//导入JNI本地类生成的JNITest.h头文件   注意此处不能使用include <JNITest.h>   而要使用include "JNITest.h"这样引入   不然会报错
#include "JNITest.h"

JNIEXPORT jint JNICALL Java_com_ndk_archermind_myndk_JNITest_getSum
        (JNIEnv *, jobject, jint a, jint b) {
    return a + b;
};

然后同步代码,此时再看JNITest类native方法已经不再报红,变成灰色AS3.0上开发NDK演示DEMO步骤

Step5配置CMakeLists文件和Moudle下的build.gradle文件

CMakeLists文件修正如*******意在CMakeLists下备注要在备注的前面加#符号

加//会不识别备注而报错

AS3.0上开发NDK演示DEMO步骤

其中类库名称是来自于JNITest这个本地类中的加载库代码来的,两者需要保持一致,即与下图中的命名要一致

AS3.0上开发NDK演示DEMO步骤

Moudle下的build.gradle文件如下

AS3.0上开发NDK演示DEMO步骤

Step6 在MainActivity中添加测试JNITest类代码

AS3.0上开发NDK演示DEMO步骤

效果图如下

AS3.0上开发NDK演示DEMO步骤
AS3.0上开发NDK演示DEMO步骤

如果在安装时发生下图错误

AS3.0上开发NDK演示DEMO步骤

请直接在Moudle的build.gradle文件中ndk配置改为对应支持生成的类库类型即可

AS3.0上开发NDK演示DEMO步骤

相关文章: