澳门太阳集团,太阳集团娱乐网址

    欢迎访问太阳集团娱乐网址~

  1. 加入收藏
  2. 设为主页
  3. 学校简介
太阳集团娱乐网址

太阳集团娱乐网址

  • 北大青鸟徐东校区
  • 北大青鸟光谷学院
  • 北大青鸟宏鹏IT学院
  • 荆州青鸟之家
  • 襄阳青鸟之家

15902769092

三分钟了解北大青鸟

×
  • 初中生学什么
  • 高中生学什么
  • 大学生学什么
  • 打工返乡人出路
  • 退伍军人出路
  • 女生学什么好
  • 男生学什么好

安卓教程:Android开发中浅谈NDK

责任编辑:027hpedu来源:太阳集团娱乐网址安卓技术教程发布时间:2014-04-28 15:16
导读:Android NDK是什么呢?在安卓开发中有什么作用?它是一个允许Android应用开发人员使用C或C++源文件编译并嵌入到本机源代码中的应用程序包的一组工具。今天,太阳集团娱乐网址专业老师就来谈谈Android NDK。

  Android NDK是一个允许Android应用开发人员使用C或C++源文件编译并嵌入到本机源代码中的应用程序包的一组工具。今天,北大青鸟鲁广校区专业老师就来谈谈Android NDK。

  重要说明:Android NDK只能用于android 1.5以上版本
 

  1.Android NDK的目的

  Android虚拟机允许你的应用程序源代码通过JNI调用在本地实现的源代码,简单的说,这就意味着:

  你的应用程序将声明一个或多个用’native’关键字的方法用来指明它们是通过本地代码实现的

  例如:native byte[] loadFile(String filePath)

  你必须提供包含实现这些方法的共享库(就是.so),将共享库打包到你的应用程序包apk中,这些库文件必须根据标准的Unix约定来命名为 lib.so,并且是需要包含一个标准的JNI的接口,例如:libFileLoader.so

  你的应用程序必须明确的装载这些库文件(.so文件),比如,在程序的开始装载它,只需要简单的添加几句源代码。

  java代码:

  static {

  System.loadLibrary(“FileLoader”);

  }

  注意:这里你不必再将前缀lib和后缀.so写入。

  Android NDK对于Android SDK只是个组件,它可以帮你:

  ①生成的JNI兼容的共享库可以在大于Android1.5平台的ARM CPU上运行。

  ②将生成的共享库拷贝到合适的程序工程路径的位置上,以保证它们自动的添加到你的apk包中(并且签名的)

  ③在以后的版本中,我们将提供来帮助你的源代码通过远程gdb连接和尽可能多的源代码的信息。

  而且,Android NDK还提供:

  ①一组交叉编译链(编译器、链接器等)来生成可以在Linux,OS X和Windows(用Cygwin)运行的二进制文件。

  ②一组与由Android平台提供的稳定的本地API列表的头文件。

  它们在docs/STABLE-APIS.html中有说明。

  重要提示:记住,在以后的更新和发布平台中,Android系统镜像中的大多数本地系统库并不是一成不变的,而是可以彻底改变,甚至删除的。

  一个编译系统(build system)可以允许开发者写一个非常短的编译文件(build files)去描述哪个源代码需要编译,并且怎样编译。编译系统可以解决所有的toolchain/platform/CPU/ABI细节的问题。并且,较晚的NDK版本中还添加了更多的可以不用改变开发者的编译文件的情况下的toolchains,platforms,系统接口。
 

  2.Android NDK的缺点

  NDK并不是一个可以编写通用的源代码并且可以在Android设备上运行的方法,你的应用程序还是需要使用JAVA程序,适当的处理系统事件来避免“应用程序没有反应”的对话框或者处理Android应用程序的生命周期。

  注意:可以适当的在源代码中写一个复杂的应用程序,用于启动/停止一个小型的“应用程序包”

  强烈建议很好地理解的 JNI,因为许多操作在这种环境要求的开发人员,都采取具体的行动,不一定在常典型的本机代码。这些措施包括:

  ①不能通过指针直接访问VM的对象。比如:你不能安的得到一个指向String对象的16位char数组的循环遍历

  ②需要显示引用管理本机代码时候要保持处理JNI调用之间的VM对象。

  NDK在Android平台提供了有限的本地API和库文件的支持的系统头文件,然而一个标准的Android系统镜像包括许多本地共享库,这些都应该被考虑在更新和发行版本的可以彻底改变的实现细节,如果Android系统库没有明确的被NDK明确的支持,然后应用程序不应该依赖于它提供的,或者打破了将来在各种设备上的无线系统更新,选定的系统库将逐渐被添加到稳定的NDK API中。
 

  3.NDK开发实践

  下面将给出一个怎样用Android NDK开发本地代码的粗略的概述

  (1) 把本地代码放在$PROJECT/jni/…下,比如将hello.c放到apps/hello/jni/目录下

  (2) 在你的NDK编译系统中在$PROJECT/jni/Android.mk来描述你的源代码

  (3) 可选:在$PROJECT/jni/Application.mk到你的编译系统中来详细描述你的项目,尽管你开始的话不一定需要它,但是它允许你使用更多的CPU或者覆盖编译器/链接器的标记

  (4) 从你的项目的目录开始通过运行”$NDK/ndk-build”来编译你的代码,或者从子目录开始

  (5) 后一步可以copy,万一成功,剥离共享库的应用层序需要你的应用程序的项目根目录。然后你通过通常的方法来生成终的apk。

  澳门太阳集团鲁广校区,专业老师会帮你找到适合自己学习的课程和就业方向,详细了解Android NDK,现在就与专业老师在线老师沟通或拨打电话:15902769092,或QQ咨询:15902769092.

本文标题:安卓教程:Android开发中浅谈NDK,责任编辑:027hpedu,于2014年04月28日15时16分发布于太阳集团娱乐网址。武汉太阳集团娱乐网址专注计算机电脑IT编程培训。学校专注java培训,ui设计培训,web前端培训,python培训,大数据培训等,北大青鸟学校累计为企业培养和输送IT专业人才85万。

专业老师指导

专业老师指导

赵老师

从事IT教育培训十年有余,致力于帮助广大学子找到适合自己的专业。

培训咨询客服

培训咨询客服

陈老师

IT培训专业客服,用自己的真诚解决了无数学子的困惑。

本文地址:
文章标题:

热门课程

More+
  • Python+大数据学习

    Python+大数据学习

  • Java_9天快速掌握Java基础

    Java_9天快速掌握Java基础

  • PHP+H5_做全栈工程师

    PHP+H5_做全栈工程师

  • Web前端工程师_百日0基础入门

    Web前端工程师_百日0基础入门

  • 网络工程师BNENIT6.0

    网络工程师BNENIT6.0

  • UI课程_给你+1机会

    UI课程_给你+1机会

  • 学动漫_变二次元大神!

    学动漫_变二次元大神!

  • 大数据_9天快速入门基础

    大数据_9天快速入门基础

  • 启蒙星3.0_给你不一样的”薪“开始

    启蒙星3.0_给你不一样的”薪“开始

  • 学数字艺术,用兴趣描绘“钱途”

    学数字艺术,用兴趣描绘“钱途”

点我咨询
×
在线咨询更多问题

如您有任何疑问
在线咨询随时为您解答或拨打咨询热线:15902769092

×
  • 姓 名*
  • 手 机*
  • QQ号/微信号
  • 所报学科 *
  • 其他备注
  • 温馨提示:请保持手机畅通,咨询老师将为您提供专属的一对一报名服务。