美文网首页
Android 项目引入NDK

Android 项目引入NDK

作者: 奇梦人 | 来源:发表于2019-08-19 00:41 被阅读0次

    环境
    电脑:Mac
    开发工具:Android 3.1.4

    1. 切换 project 视图
    2. app 目录下的 src 的 main 目录下,右键-> New Directory 新建一个目录 jni
    3. 在 java 目录下创建一个类在添加 native 函数;
    public class JNITools {
        static {
            System.loadLibrary("native-lib");
        }
        public static native int addNum(int num1, int num2);
    }
    
    4. 配置 javah 自动生成头文件
    5. 项目添加 NDK 路径:File->Project Structrue ->SDK Location ->设置NDK路径
    6. 在 jni 目录下新建一个 C/C++ Source 文件 NDKLib.cpp
    7. 在项目的 Module 的根目录创建一个 CMakeLists.txt 文件并添加
    cmake_minimum_required(VERSION 3.10.2)
    
    add_library(native-lib SHARED src/main/jni/NDKLib.cpp )
    
    8.把 CMake 配置到 gradle 中

    第一种方式:右键 CMakeLists.txt

    image.png

    第二种:直接复制到对应 module 中

        externalNativeBuild {
            cmake {
                path 'CMakeLists.txt'
            }
        }
    
    9.在 jni 目录中的 NDKLib.cpp实现头文件的函数(引用头文件并实现函数)

    其实就是把 java 类生成的 .h 文件里的函数拷贝过来,稍微改一下参数

    #include <jni.h>
    #include "com_ws_luban_JNITools.h"
    JNIEXPORT jint JNICALL Java_com_ws_luban_JNITools_addNum(JNIEnv *, jobject jobject1, jint num1, jint num2){
        return num1 +num2;
    }
    
    10. 加载库文件和调用native函数
    public class JNITools {
    
        static {
            System.loadLibrary("native-lib");
        }
    
        public static native int addNum(int num1, int num2);
    }
    
    // Activity 中调用
    int num = JNITools.addNum(12,1);
    Toast.makeText(getApplicationContext(),""+num,Toast.LENGTH_SHORT).show();
    

    相关文章

      网友评论

          本文标题:Android 项目引入NDK

          本文链接:https://www.haomeiwen.com/subject/fdkjsctx.html