一、什么是NDK
原生开发套件 (NDK) 是一套工具,使您能够在 Android 应用中使用 C 和 C++ 代码,并提供众多平台库,您可使用这些平台库管理原生 Activity 和访问物理设备组件,例如传感器和轻触输入。
- 进一步提升设备性能,以降低延迟,或运行计算密集型应用,如游戏或物理模拟。
- 重复使用您自己或其他开发者的 C 或 C++ 库
Android NDK 是一组能将 C 或 C++(“原生代码”)嵌入到 Android 应用中的工具
二、创建一个新的c++项目
- 在Android studio 主界面依次选择 Tools > Android > SDK Manager 选择sdkTools 。检查LLDB 、CMake 和 NDK 是否安装,勾选并 apply;
- CMake:一款外部编译工具,可与 Gradle 搭配使用来编译原生库。如果您只计划使用 ndk-build,则不需要此组件。
- LLDB:Android Studio 用于调试原生代码的调试程序。
-
创建新项目 File >New>New Project选择Native c++ 项目 系统就自动帮我们创建好了一个能进行ndk开发的项目。
2 -
生成的项目与普通安卓项目比较
- 在main文件夹下多出了cpp文件夹,cpp文件夹下有 CMakeLists.txt 和 native-lib.cpp文件;这个文件夹主要是用来存放用户编写的c/c++相关代码;
- 在bulid.gradle 中新增了 externalNativeBuild 和 externalNativeBuild 相关代码。添加cmake 工具到Gradle并设置了CMakeLists.txt文件文件路径。CMakeLists.txt文件需要把编写的的c文件add_library,gradle会自动将CMakeLists.txt文件转化为make所需要的makefile文件,然后编译源码生成可执行程序或共享库。
二、编写自己的c/c++代码
-
在cpp 文件夹下添加.cpp文件; 右击cpp文件夹 new>c/c++ Source File 输入名字 first-native-lib 点击ok,将会在 cpp文件夹下生成一个first-native-lib.cpp文件。
-
打开CMakeLists.tx文件,并在 add_library 中添加 first-native-lib.cpp。
4 -
在java静态代码块中使用
System.loadLibrary(String libName)
方法加载库文件。
static {
System.loadLibrary("native-lib");
}
- 创建native方法。在java代码中使用 native 关键字声明 native 方法
public native String firstNativeDemo();
此时fistNativeDemo方法名应该是报红的,因为我们还没有用c去实现它。把光标移到该方法中,按 alt+Enter
键唤出提示面板 选择 Create JNI function for firstNativeDemo
,系统会自动在first-native-lib.cpp文件中生成 c 方法。
6
如果没有自动生成,可以手动在first-native-lib.cpp 编写出这个方法。方法名为 Java_
+ 方法在Java中的调用路径(用 _
线连接路径)+ _
+方法名
5.编写实现自己的 native方法
extern "C"
JNIEXPORT jstring JNICALL
Java_com_boby_firstndkproject_MainActivity_firstNativeDemo(JNIEnv *env, jobject thiz) {
jstring jst = env->NewStringUTF("hello word !");
return jst;
}
在Activity 中调用,运行
7 8
网友评论