Android NDK学习系列(持续更新)

NDK学习系列--第一篇

简介

这是作者本人学习ndk开发的一个文章系列,因为本人Android开发出身,最近需要提升音视频开发能力,而音视频必须使用到ndk,所以记录一下学习的要点,在简书上分享给一起学习的朋友们。希望能对大家有所帮助。本人水平有限,如果有错误的地方,还请大家海涵,帮我指点一二。



NDK介绍

(英语:native development kit,简称NDK)是一种基于原生程序接口的软件开发工具。通过此工具开发的程序直接以本地语言运行,而非虚拟机。因此只有java等基于虚拟机运行的语言的程序才会有原生开发工具包。[维基百科]

NDK是一系列工具的集合

NDK提供了一系列的工具,帮助开发者快速开发C(或C++)的动态库,并能自动将so和java应用一起打包成apk。这些工具对开发者的帮助是巨大的.

NDK集成了交叉编译器,并提供了相应的mk文件隔离CPU、平台、ABI等差异,开发人员只需要简单修改mk文件(指出“哪些文件需要编译”、“编译特性要求”等),就可以创建出so。

NDK可以自动地将so和Java应用一起打包,极大地减轻了开发人员的打包工作。


为什么要NDK开发

NDK开发具有以下优点:

1. 项目需要调用底层的一些C/C++的一些东西(java无法直接访问到操作系统底层(如系统硬件等)),或者已经在C/C++环境下实现了功能代码(大部分现存的开源库都是用C/C++代码编写的。),直接使用即可。NDK开发常用于驱动开发、无线热点共享、数学运算、实时渲染的游戏、音视频处理、文件压缩、人脸识别、图片处理等。

2. 为了效率更加高效些。将要求高性能的应用逻辑使用C/C++开发,从而提高应用程序的执行效率。但是C/C++代码虽然是高效的,在java与C/C++相互调用时却增大了开销;

3. 基于安全性的考虑。防止代码被反编译,为了安全起见,使用C/C++语言来编写重要的部分以增大系统的安全性,最后生成so库(用过第三方库的应该都不陌生)便于给人提供方便。(任何有效的代码混淆对于会smail语法反编译你apk是分分钟的事,即使你加壳也不能幸免高手的攻击)

4. 便于移植。用C/C++写得库可以方便在其他的嵌入式平台上再次使用。





开发HelloWorld

开发环境:Android Studio4.0  gradle版本5.4.1

第一步:new project,选择下图中native c++,点击Next

第二步:点击finish即可创建项目,创建后的项目等编译成功即可运行。运行后可以看到Hello World!。恭喜你,迈出了ndk的第一步,只要坚持下去,升职加薪,迎娶白富美就在明天。


第一篇结语

俗话说万事开头难,但是ndk的第一个项目跑起来还是很简单的呀,既然不难那就继续坚持学习吧!下一篇开始分析Android ndk项目的结构。敬请期待!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • es6 1、yarn nodemon test_node.js执行并自动监视变更。 2、Es5只有全局和函数作用域...
    Da_xiong阅读 30评论 0 0
  • AI守望者为您推送今日科技资讯简报: 1.2.3万亿美元,拜登公布大基建计划:对标罗斯福新政,特斯拉股票大涨[ht...
    烛之文阅读 1,558评论 0 0
  • 1、方法的重载是java多态的体现2、类中调用本类构造方法用this(表示当前对象)3、封装:把信息隐蔽。通过成员...
    冷瞳_1997阅读 1,702评论 0 0
  • 摘要:在最近的这些年间,随着素质教育理念以及中小学段课程改革的进一步加深,研学旅游慢慢地走入了大众视野,成了一种受...
    落雨浅待明阅读 10,175评论 0 2
  • 今天感恩节哎,感谢一直在我身边的亲朋好友。感恩相遇!感恩不离不弃。 中午开了第一次的党会,身份的转变要...
    余生动听阅读 13,597评论 0 11

友情链接更多精彩内容