欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

AndroidStudio现有项目添加NDK支持(ndk-build编译)

程序员文章站 2024-01-12 20:39:58
...

此篇主要以案例讲解在现有项目添加NDK支持,并且使用ndk-build编译库文件;

1. 从IDE左侧打开Project窗口,从下拉框选择Project视图

AndroidStudio现有项目添加NDK支持(ndk-build编译)

2. 导航到app目录下的src的main目录下,右键->New Directory新建一个目录jni;

AndroidStudio现有项目添加NDK支持(ndk-build编译)


3. 在main的java目录下添加native函数;

添加 com.niubashaoye.demo.ndkdemo.JNITools.java

public class JNITools {
    static{
        System.loadLibrary("NDKLib");
    }
    public native int addNum(int num1,int num2);
}

 

4. 添加javah自动生成头文件配置,然后使用javah生成头文件到jni目录中;

 

5. 项目添加NDK路径:File->Project Structrue ->SDK Location ->设置NDK路径;

6. 在jni目录下新建一个C/C++ Source文件NDKLib.cpp;

7. 在jni目录下新建Android.mk文件,配置ndk的库文件编译环境;

详情参考:Android.mk用法详解

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE    := NDKLib
LOCAL_SRC_FILES := NDKLib.cpp
LOCAL_LDLIBS := -lm -llog
include $(BUILD_SHARED_LIBRARY)

8. 添加C/C++引用到Gradle配置中

切换到Anroid视图下,项目名右键 ->Link C++ Project with Gradle ->选择ndk-build,然后选择Android.mk的路径

AndroidStudio现有项目添加NDK支持(ndk-build编译)AndroidStudio现有项目添加NDK支持(ndk-build编译)

9. 在jni目录NDKLib.cpp的实现头文件的函数,引用头文件并实现方法;
    如果此处C/C++文件不能自动补全,请参考:AndroidStudio NDK开发C/C++文件自动补全设置

#include <jni.h>
#include "com_niubashaoye_demo_ndkdemo_JNITools.h"

JNIEXPORT jint JNICALL Java_com_niubashaoye_demo_ndkdemo_JNITools_addNum
  (JNIEnv *env, jobject obj, jint num1, jint num2){
   return num1+num2;
  }

 

10. 调用JNI函数

 int num = new JNITools().addNum(34,68);
 Toast.makeText(getApplicationContext(), "34+68="+num, Toast.LENGTH_SHORT).show();

注:记得加载库文件;
AndroidStudio现有项目添加NDK支持(CMake编译)

代码下载:https://download.csdn.net/download/niuba123456/10542053

 

AndroidStudio现有项目添加NDK支持(CMake编译)