美文网首页
NDK-介绍

NDK-介绍

作者: 哎呀啊噢 | 来源:发表于2019-02-05 14:46 被阅读2次

1、概念

NDK:(Native Development Kit),原生开发工具包是一组可以让您在Android应用中利用C和c++代码的工具,可用以从您自己的源代码构建,或者利用现有的预构建库.

public class MyActivity extends Activity {
  /**
  * Native method implemented in C/C++
  */
  public native void computeFoo();
}
使用场景:

NDK本身对许多类型的Android应用没什么价值,因为它不可避免的增加开发过程复杂性,所以通常不值得使用.如果需要执行以下操作,或许有用:

  • 从设备获取卓越性能以用于计算密集型应用,例如游戏或者物理模拟.
  • 重复使用您自己或者其他开发者的C或c++库.
  • 在平台之间移植应用.
主要组件
  • ndk-build:ndk-build 脚本用于在NDK中心启动构建脚本.这些脚本:
    自动探测您的开发系统和应用项目文件以确定要构建的内容.
    生成二进制文件
    将二进制文件复制到应用到项目路径

  • Java:Android构建过程从Java来源生成.dex文件,这些文件是Android OS在Dalvik虚拟机中运行的文件.即使您的应用根本未包含任何Java源代码,构建过程仍会生成原生组件在其中运行的.dex可执行文件.

开发Java组件时,使用native关键字指示以原生形式实现的方法.例如,以下函数声明向编译器告知实现在原生库中:

public native int add(int x,int y);
  • 原生共享库:NDK从原生源代码构建这些库或.so文件.

  • 原生静态库:NDK也可以构建静态库或.a文件,可以关联到其他库.

  • Java原生接口(JNI):JNI时Java和C++组件用以互相沟通的借口.

  • 应用二进制界面(ABI):ABI可以非常精确的定义应用的机器代码在运行时如何与系统交互.NDK根据这些定义构建.so文件.

  • 清单:如果编写没有Java组件的应用,必须在清单中声明NativeActivity类.
    下面俩个项目在使用ndk-build脚本构建时以及使用ndk-gdb脚本调试时才需要:

  • Android.mk:必须在jni文件夹内创建Android.mk配置文件.ndk-build脚本将查看此文件,其中定义了模块及其名称、要编译的源文件、版本标志以及要链接的库.

  • Application.mk此文件枚举并描述您的应用需要的模块.这些信息包括:
    用于针对特定平台进行编译的ABI.
    工具链.
    要包含的标准库(静态和动态STLprot或默认系统).

    流程

    Android开发原生应用的流程一般如下:

  1. 设计应用,确定要在Java中的实现部分,以及要以原生代码形式实现的部分.
  2. 像创建任何其他Android项目一样创建一个Android应用项目.
  3. 如果要编写纯原生应用,请在AndroidMainifest.xml中声明NativeActivity类.
  4. 在“JNI”目录中创建一个描述原生库的Android.mk文件,包括名称、标志、链接库和要编译的源文件.
  5. 也可以创建一个配置目标ABI、工具链、发行/调试模式和STL的Application.mk文件.
    ABI:armeabi
    工具链:GCC4.8
    模式:发行
    STL:系统
  6. 将原生来源置于项目的jni目录下.
  7. 使用ndk-build编译原生(.so、.a).
  8. 构建Java组件,生成可执行.dex文件.
  9. 将所有内容封装到一个APK文件中,包含.so、.dex以及应用运行所需的其他文件.

相关文章

  • NDK-介绍

    1、概念 NDK:(Native Development Kit),原生开发工具包是一组可以让您在Android应...

  • Hello NDK-初学

    一.NDK的安装 本文使用的是android studio 2.2.3安装NDK,自然所在环境是windows。打...

  • ndk-基础知识

    数组和指针,数组指针,指针数组 结构体 内存对齐 内存对齐 结构体大小 S5DUD10BN083MHEJEX7TP...

  • NDK at /User/**/Android/sdk/ndk-

    问题 Android Studio 升级到4.1后,编译项目总是失败,报错如下: 解决 NDK at ~/Libr...

  • ndk-基础知识-Linux内存布局原理

    内存单位 类型: 位(bit).是电子计算机中最小的数据单位。每一位的状态只能是0或1。 字节. 1 Byte =...

  • Ubuntu下使用Android Studio4.0与 ndk-

    现在Google提倡使用CMake/cpp方式进行ndk开发,在Android Studio进化到4.0版本时,使...

  • Runtime介绍---术语介绍

    1. 什么是Runtime Runtime又叫运行时,是一套C语言的API。 我们平时编写的OC代码,底层都是基于...

  • 介绍

    万物终有一天会消失殆尽,诸神出卖黎明,光明为黑暗所湮灭,日月皆痕,海潮鸣泣,幼雏嚎啕,生灵涂炭。 托里奥世纪第20...

  • 介绍😊

    大家好,我是beth,初入简书,不邀自来,还请各位见谅! 先说说我是怎么想着来的吧?这不是刚过了一个寒假嘛...

  • 介绍

    在这个世界上还有三个家族他们不受各个国家联合国管。但他们身上有着使命分别是帝国家族曲国家族圣国家族。他们隐藏在一个...

网友评论

      本文标题:NDK-介绍

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