美文网首页
NDK开发学习(一) —创建一个支持c/c++的项目

NDK开发学习(一) —创建一个支持c/c++的项目

作者: 好大的太阳哦 | 来源:发表于2019-10-14 17:30 被阅读0次

一、什么是NDK

原生开发套件 (NDK) 是一套工具,使您能够在 Android 应用中使用 C 和 C++ 代码,并提供众多平台库,您可使用这些平台库管理原生 Activity 和访问物理设备组件,例如传感器和轻触输入。

  • 进一步提升设备性能,以降低延迟,或运行计算密集型应用,如游戏或物理模拟。
  • 重复使用您自己或其他开发者的 C 或 C++ 库

Android NDK 是一组能将 C 或 C++(“原生代码”)嵌入到 Android 应用中的工具

二、创建一个新的c++项目

  1. 在Android studio 主界面依次选择 Tools > Android > SDK Manager 选择sdkTools 。检查LLDB 、CMake 和 NDK 是否安装,勾选并 apply;
    • CMake:一款外部编译工具,可与 Gradle 搭配使用来编译原生库。如果您只计划使用 ndk-build,则不需要此组件。
    • LLDB:Android Studio 用于调试原生代码的调试程序。
1
  1. 创建新项目 File >New>New Project选择Native c++ 项目 系统就自动帮我们创建好了一个能进行ndk开发的项目。


    2
  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文件,然后编译源码生成可执行程序或共享库。
3

二、编写自己的c/c++代码

  1. 在cpp 文件夹下添加.cpp文件; 右击cpp文件夹 new>c/c++ Source File 输入名字 first-native-lib 点击ok,将会在 cpp文件夹下生成一个first-native-lib.cpp文件。

  2. 打开CMakeLists.tx文件,并在 add_library 中添加 first-native-lib.cpp。


    4
  3. 在java静态代码块中使用System.loadLibrary(String libName) 方法加载库文件。

static {
       System.loadLibrary("native-lib");
   }
  1. 创建native方法。在java代码中使用 native 关键字声明 native 方法
public native String firstNativeDemo();

此时fistNativeDemo方法名应该是报红的,因为我们还没有用c去实现它。把光标移到该方法中,按 alt+Enter 键唤出提示面板 选择 Create JNI function for firstNativeDemo ,系统会自动在first-native-lib.cpp文件中生成 c 方法。

5
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

相关文章

网友评论

      本文标题:NDK开发学习(一) —创建一个支持c/c++的项目

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