Android NDK开发篇(二):NDK相关介绍

  学习Android开发的时候,总是听到有人提起NDK,究竟NDK是什么东西?

  在网上查了一下,有相关的说明:

  NDK全称:Native Development Kit。
    1、NDK是一系列工具的集合。
      * NDK提供了一系列的工具,帮助开发者快速开发C(或C++)的动态库,并能自动将so和java应用一起打包成apk。这些工具对开发者的帮助是巨大的。
      * NDK集成了交叉编译器,并提供了相应的mk文件隔离平台、CPU、API等差异,开发人员只需要简单修改mk文件(指出“哪些文件需要编译”、“编译特性要求”等),就可以创建出so。
      * NDK可以自动地将so和Java应用一起打包,极大地减轻了开发人员的打包工作。

    2、NDK提供了一份稳定、功能有限的API头文件声明。
      Google明确声明该API是稳定的,在后续所有版本中都稳定支持当前发布的API。从该版本的NDK中看出,这些API支持的功能非常有限,包含有:C标准库(libc)、标准数学库(libm)、压缩库(libz)、Log库(liblog)。

  也就是说,Android是支持用C、C++开发的。但不是说有了NDK之后,我们开发Android应用就可以完全抛弃Java,毕竟Android的SDK都是基于Java的。不过从NDK r5版本开始,Android完全支持C/C++开发应用。对于纯C/C++是否适合开发Android,这个还有待考证


  使用NDK的作用:
    1、支持Android应用Java+C开发
    2、提高代码的执行效率,Java编译出来的字节码在JVM上执行是边解析边编译的,效率会比C编译出来的机器码慢很多。C的执行效率会比Java高10~100倍
    3、屏蔽程序的逻辑实现。因为Java编译出来的字节码是可以反编译,而且现在Java的反编译工具特别强大,几乎可以看到100%的源码。而C编译出来的机器码只能反汇编,汇编代码超级难看懂,这个大家都知道的,从而保护了程序的逻辑实现,在很多商业项目都会用到

  NDK的缺点:
    1、NDK是本地实现的,对平台有一定要求
    2、NDK不像SDK有各种方便的UI、服务相关的类库,像消息事件的传递和监听

  Shamoo查过相关的资料,发现NDK不仅仅支持C/C++开发,还可以内联汇编(更加依赖平台),也就是说Android应用的开发支持Java + C/C++ + 汇编开发...很爽有木有!另外NDK除了JNI的接口外,还支持ASNI C和GNU C以及原生线程、OpenGL ES...学习Linux C开发的或者OpenGL ES开发的就爽了。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Android NDK开发是指利用NDK(Native Development Kit)将C/C++开发的代码编译成so,然后通过JNI(Java Native Interface)让Java程序调用。在Android开发中,默认使用的是Android SDK进行Java语言的开发,而对于一些需要使用C/C++的高性能计算、底层操作或跨平台需求的场景,可以使用NDK进行开发。 在Android Studio中进行NDK开发相对于Eclipse来说更加方便,特别是在Android Studio 3.0及以上版本中,配置更加简化,并引入了CMake等工具,使得开发更加便捷。首先要进行NDK开发,需要配置环境,包括导入NDK、LLDB和CMake等工具。可以通过打开Android Studio的SDK Manager,选择SDK Tools,在其中选中相应的工具进行导入。 在项目的build.gradle文件中,可以配置一些NDK相关的参数,例如编译版本、ABI过滤器等。其中,可以通过externalNativeBuild配置CMake的相关设置,包括CMakeLists.txt文件的路径和版本号。此外,在sourceSets.main中还可以设置jniLibs.srcDirs,指定so的位置。 在进行NDK开发时,可以在jni文件夹中编写C/C++代码,并通过JNI调用相关的函数。通过JNI接口,可以实现Java与C/C++之间的相互调用,从而实现跨语言的开发。 综上所述,Android NDK开发是指利用NDK将C/C++开发的代码编译成so,并通过JNI实现与Java的相互调用。在Android Studio中进行NDK开发相对方便,可以通过配置环境和相应的参数来进行开发。<span class="em">1</span><span class="em">2</span><span class="em">3</span>

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值