AndroidStudio现有项目添加NDK支持(ndk-build编译)
此篇主要以案例讲解在现有项目添加NDK支持,并且使用ndk-build编译库文件;
1. 从IDE左侧打开Project窗口,从下拉框选择Project视图
2. 导航到app目录下的src的main目录下,右键->New Directory新建一个目录jni;
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的路径
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编译)