anroid ndk文档翻译1

anroid ndk文档翻译之一:android ndk一览


原译者email: acleverdetective@163.com

Android NDK 一览

介绍:

Android NDK 是一套工具,允许程序 开发人员把C和C++编译 出来的机器代码 嵌入到他们的应用 程序包。

重要信息:


Android NDK
只能够用在Android 1.5 或以后的平台上。

1.0 and 1.1 系统 不被支持,原因在于1.5的发行版在ABI和工具链上已经发生了一些细小的变化。


I.
Android NDK 目标 :

--------------------------

Android VM 允许你的应用程序 通过JNI调用在本地代码中实现的方法,简而言之,这意味着:



-
你的程序代码将使用native关键字来声明方法,以指明他们是在本地代码中实现的。例如:


native byte[]
loadFile(String
filePath);


- 你必须提供一个本地共享库,来实现这些方法,这个共享库将被打包进你程序中的.apk文件 ,这个库必须使用标准的unix命名约定,象lib<something>.so这样,并且应该包含一个标准的jni入口(以后会有多个),例如:


libFileLoader.so

- 你的程序必须显式地加载库,例如,要在启动时加载它,简单地添加下列代码:


static {


System.loadLibrary("FileLoader");


}

注意,你不应该使用 ’lib’ 前缀,和 ’.so’ 后缀。

Android NDK 是Android SDK的补充,可以帮助你:



-
生成与JNI兼容的共享库,能够运行 在Android 1.5 及以后使用ARM CPU的平台上。



-
复制共享库文件到你的应用程序项目 的适当路径当中,这样他们就能被自动添加到你最终的.apks包中。


-
NDK 的以后修订版中,我们打算提供帮助你通过 gdb 连接来调试原生代码的工具,并且提供尽可能多的符号信息。


此外, Android NDK 还提供:


-
一套交叉工具链(编译器,链接器,等等),能够在linux,OS X,和windows等系统下,生成原生ARM的机器代码。


-
一套Android平台提供的稳定的原生API 的系统头文件,这些头文件定义 保证在以后的发行版本中获得支持。

重要信息:

记住:Android系统的多数原生系统库都不是静止不变的,在以后平台的发行版或升级版中,可能会发生剧烈的变化,甚至会被删除,

- 一套编译系统,允许开发人员写很短的生成文件描述需要编译的源代码 ,编译系统处理所有的关于toolchain/platform/CPU/ABI等麻烦的细节问题。此外,NDK的以后升级版中,可能会添加许多关于

工具链,平台和系统接口的支持,这些支持并不需要开发人员改变生成文件(或以后生成的其他什么文件)


II. Android NDK
不能达成的目标:

--------------------------

NDK 并不是写在Android设备中运行的原生代码的一个好的方式,特别强调,你的应用程序仍然应该使用java语言写,适时地处理Android系统事件,避免出现程序没响应对话框,或者处理Android程序的生命周期。

注意,无论如何,用原生代码写一个复杂的程序,用一个小的 程序包装器 来恰当地启动/终止它,这是可能办到的。

因为许多环境 中的操作要求有开发人员具体的指令,在写原生代码时,并不能做到通用,所以我们强烈推荐 一种JNI的好的运用方式,这包括:

- 不能直接访问通过直接的原生指针去访问VM对象中的内容,例如,你不能安全地获取 一个指向字符串对象的16位字符数组的指针,然后在循环中迭代。

- 在想要在原生代码当中保留VM对象的句柄时,要求显式的引用管理,


NDK 只提供很有限的被 Android 平台支持的头文件和库,但是 Android 系统包含很多原生共享库,这些不被支持的库,应该被认为是可能在以后平台的发行版和升级版中,在实现细节上会发生激烈变化的部分。

如果一个Android系统裤没有被NDK头文件显式地支持,那么程序就不应当依赖它,否则就会有在以后升级版中受破坏的风险。已经选择的系统库将会被逐渐加入到稳定的NDK API中。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值