您当前所在位置:ag旗舰厅 > AG >

Android ndk学习必要性学习手段

想望frsco源码么,想望ReactNative源码么,想望framework源码么,想的话,就要学。自然不学也并没有关碍你坐开发,但是想要晋级成为高级开发,NDK必须要学习的。入门阶段 基本用不到ndk 也不选举直接学 晓畅下基础怎么调用jni啥的等有了肯定的基础 由向中高级太甚时候选举这个时候来学倘若连大头鬼Github都找不到,照样转走吧,编程不正当你。----------------------------原答案---------------------------谢邀。十足赞许 @hi大头鬼hi 的回答,这方面的思想在吾之前的回答android程序员有必要学习c++吗? - M.A.G.I 的回答 中就外达过:倘若只是做个清淡的Android码农,那Java够用;但倘若你的理想比这个还要大一点,C++是你进阶的必备技能。说的是C++,但放到NDK上也是相通。说点题外话,出于开发成本,周期的考虑以及迅速迭代的需求,这两岁暮端开发越来越清晰的开起向大前端演进,前端的各项技术开起赓续融相符。前两年通走的Hybird在工程实践中被表明有专门众的题目,所以各方都在追求新方案,直到今年展现了恐怖的React Native Android.RN基于Js超强的变通性和高代码复用,经由过程Java扩展App的终端能力,用NDK榨干体系的性能,吾认为在肯定水平上代外了终端开发异日的倾向。不晓畅行家是不是还记得耗子和玉伯关于团队的那场商议,在条件批准的情况下,全栈团队实在能挑高生产力。稀奇是对于终端开发,在大前端技术融相符的背景下,以后对于终端开发者的请求将会是肯定意义上的通才,门槛比现在只高不矮。对于开发者来说,吾们必要做的是拥抱转折,赓续主动拓展本身在技术上的深度和广度,而不是在这边挑问,徘徊答不该该往学,异国学习能力的终端开发者,之后的道路也会更艰难。倘若想晓畅什么是大前端开发者,能够往望一下大头鬼的Github.感觉题主的ndk指的不是实际的谁人ndk。NDK全称Native Development Kit,所以NDK本身主要是一套工具链。NDK内里包含了交叉编译、链接、调试等的工具,以及一些比较基本的函数库,如STL、标准C库等,一些图形的glue接口等,还有JNI的一些机制。感觉题主所称的NDK在实际的NDK之外,益似还包含JNI机制和C/C++编程说话。JNI是一栽让Java层代码和C/C++层代码能够相互调用的机制,也就是Java层代码能够调用C/C++,逆过来也能够。不光仅是Android开发能够用JNI这栽机制,清淡的PC机上的JAVA开发也能够用这栽机制。在Android app开发中操纵C/C++说话,如同其他朋侪所言,能带来的益处很众,如行使遗留的有关库,访问底层操作体系接口等等。C/C++是这栽开发中的中央。至于说到有异国必要,自然是详细望情况了。倘若Android的Java层开发的知识的积累还专门少,自然答该先积累这方面的东西。对于很众对性能请求比较庄严的行使周围,如其他朋侪挑到的音视频编解码,还有游玩的图形什么的操纵NDK写一些C/C++代码能够比较益。要望别人特出的操纵了JNI机制和C/C++的开源项现在,学一下肯定是很有协助的。学习手段嘛,主要是分成NDK工具、JNI和 C/C++编程说话3个片面来望。C/C++编程说话,自不消众说,和通例的 C/C++编程说话又异国什么稀奇的地方,主要的不同能够也就在可用的函数库等方面了。JNI的话,有一份叫 《The Java Native Interface Programmer's Guide and Specification》的文档专门益,比较明了的讲解了Java代码如何与C/C++代码相互访问的手段。至于NDK,能够参考NDK自带的文档,或者android aosp项现在中来晓畅如何编写Android.mk。 参考NDK自带的文档来晓畅如何编译,链接,调试,如何编写Application.mk,如何操纵STL等。还能够搜一下如何把NDK集成进本身操纵的IDE中,如Eclipse,Android Studio等等。NDK是一整套的工具链,Android的内核是Linux。NDK的开发说到底就是Linux C的开发,提出买一本Linux C说话开发的书,选举《Unix环境高级编程》。学习文件I/O, 套接字,内存管理,众线程,进程间通信,计时器……,自然了NDK也包含了OpenGL ES和Vulkan,学习计算机图形学也是必不能少的。还有OpenSL ES,音频知识也要学点吧。NDK末了还要和Java层进走互相调用,那么JNI(Java本地调用)也得学嗯,末了是对工具的操纵,学会操纵gcc编译源码,用makefile写源码构建脚本(Anndroid是Android.mk),不然你用cmake也走。会用gdb调试程序。自然谷歌在NDK中增补了clang编译器,总之,你有Linux下C说话开发的经验,那么学习NDK不是一件很难的事