ndk android.mk gcc,NDK-介绍

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开发原生应用的流程一般如下:

设计应用,确定要在Java中的实现部分,以及要以原生代码形式实现的部分.

像创建任何其他Android项目一样创建一个Android应用项目.

如果要编写纯原生应用,请在AndroidMainifest.xml中声明NativeActivity类.

在“JNI”目录中创建一个描述原生库的Android.mk文件,包括名称、标志、链接库和要编译的源文件.

也可以创建一个配置目标ABI、工具链、发行/调试模式和STL的Application.mk文件.

ABI:armeabi

工具链:GCC4.8

模式:发行

STL:系统

将原生源代码置于项目的jni目录下.

使用ndk-build编译原生(.so、.a).

构建Java组件,生成可执行.dex文件.

将所有内容封装到一个APK文件中,包含.so、.dex以及应用运行所需的其他文件.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值