最近很多人说,Android越来越不好找工作了,学习NDK开发会不会好点,今天就聊聊这个问题。是否应该选择学NDK?
1.哪些场景下要用到NDK开发?
跨平台的库,如FFmpeg, skip,weex,
加固,防逆向
签名校验
图片压缩
音视频解码
OpenGL ES 高级特效
热修复 andfix
人脸识别 face++
加密算法
微信apk中的so文件
手机淘宝apk中so文件
2.NDK开发,和JNI开发有什么区别?
JNI是JAVA NATIVE INTERFACE, JNI只是一个中间层。JNI中要用c/c++作具体实现。达到c/c++与Java通信的作用。不一定要编译成so文件,才叫JNI开发。也不是Android上才有,Java程序员一样可以做JNI,不会写Activity也可以。Java最简单Main函数,可以声明一个Native方法,在VS中,写一段c/c++代码,按照JNI规范。编译成dll文件,放到Java工程中,一样可以执行。而so是只是不同平台动态链接库的产物,因为Android是基于linux平台。
3.有没有必要搞NDK开发?
如果你的业务和NDK开发应用场景不是很有关联,可以不用搞,也是合理的。毕竟Java及Android中还有很多你不会玩的。如插件化(纯Java可以搞),如性能优化,如高级自定义控件,如源码学习等等。光这些够折腾好久了。把这些玩会了,你也是专家了。
当然,你如果业务有关联。如Camera美颜,滤镜,音视频等,如果要进阶,NDK不用多说,肯定要会玩的。NDK本质上玩的是c/c++,所以就需要好好学习c/c++,如虚函数,虚析构,虚基类,智能指针,宏函数,宏定义,结构体,共用体,运算符重载,指针,这些基本的c++相关。面向对象在任何语言中都受用。
4.如果要学,怎么学?
1.Google官方NDK
2.老外有一本:Android NDK Beginner’s Guide
3.网上的blog最后看系统的,要么就不看,不然东写一篇,西写一篇,没有系统的线路,对初学者帮助意义不大。
4.JNI Specification.chm 这个手册,很方便查询
5.The Java™ Native Interface Programmer’s Guide and Specification
把JNI熟悉之后,然后写一些小案例,达到熟悉程度,可以在看一些与C/C++进阶的书,如,Effective c++,深入理解c++对象内存模型,STL源码剖析,这些书之类。
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Android)
最后
文章所有资料全部已经打包整理好,另外小编手头上整理了大量Android架构师全套学习资料,Android核心高级技术PDF文档+全套高级学习资料+视频+2021 BAT 大厂面试真题解析
资料展示:
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
讲解视频、实战项目源码讲义》点击传送门即可获取!**