美文网首页
Android NDK开发

Android NDK开发

作者: 冷野明 | 来源:发表于2022-12-10 16:39 被阅读0次

1.什么是NDK?

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

2.为什么使用NDK?

1.当我们需要完成以下一个或多个事项,那么 NDK 就能派上用场:
2.提高应用的执行效率。将要求高性能的应用逻辑使用C开发,从而提高应用程序的执行效率。
3.代码的保护。由于apk的java层代码很容易被反编译,而C/C++库反汇难度较大。
4.可以方便地使用现存的开源库。大部分现存的开源库都是用C/C++代码编写的。
5.便于移植。用C/C++写得库可以方便在其他的嵌入式平台上再次使用。

3.NDK项目创建

使用Android Sudio创建DNK项目的方式有两种:一种是直接创建C++ project;另一种是在Java 项目中手动配置,虽然更麻烦些,但是更灵活值得学习。

现在官方推荐使用CMake工具来开发jni,cmake方式开发jni项目相对更简单易上手。可以将NDK类别为SDK,将Cmake类别为build,将它看作一个编译类工具。


截屏2022-12-10 16.59.41.png
截屏2022-12-10 17.15.01.png

1.native方法命名

extern "C" JNIEXPORT jstring JNICALL
Java_com_demo_myapplication_MainActivity_stringFromJNI(
        JNIEnv* env,
        jobject /* this */) {
    std::string hello = "Hello from C++";
    return env->NewStringUTF(hello.c_str());
}

函数命名规则: Java_类全路径_方法名,涉及的参数的含义如下:

JNIEnv*是定义任意native函数的第一个参数,表示指向JNI环境的指针,可以通过它来访问JNI提供的接口方法。
jobject表示Java对象中的this,如果是静态方法则表示jclass。
JNIEXPORT和JNICALL: 它们是JNI中所定义的宏,可以在jni.h这个头文件中查找到。

下面,我们整理下Java和JNI的类型对照表,如下所示。


截屏2022-12-10 17.23.57.png

相关文章

网友评论

      本文标题:Android NDK开发

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