最近很多人说,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

如果要学,怎么学?

  • Google官方NDK链接:https://developer.android.com/ndk/index.html

  • 老外有一本:Android NDK Beginner's Guide

  • 网上的blog最后看系统的,要么就不看,不然东写一篇,西写一篇,没有系统的线路,对初学者帮助意义不大。

  • JNI Specification.chm 这个手册,很方便查询

  • The Java™ Native Interface Programmer’s Guide and Specification

把JNI熟悉之后,然后写一些小案例,达到熟悉程度,可以在看一些与C/C++进阶的书,如,Effective c++,深入理解c++对象内存模型,STL源码剖析,这些书之类。

程序多动手实践,才是最正确的。看会,不代表会。先就说这么多,有问题,欢迎探讨。

第一时间获得不止个人原创 android/音视频技术干货,问题深度总结,FrameWork源码解析,插件化研究,FFmpeg研究,直播技术,最新开源项目推荐,还有更多职场思考,欢迎关注我的微信公众号,扫一扫下方二维码或者长按识别二维码

你是否真的适合搞NDK开发?相关推荐

  1. 你真的适合做前端开发吗?

    朋友,你真的适合做前端开发吗?换句话说,在开发这一领域里你适合前端开发吗? 互联网的岗位很多,光是一个前端,就包含:web前端,安卓,ios. 而web前端需要掌握哪些东西呢?随着时间的流逝,互联网越 ...

  2. 你真的适合学习JAVA开发吗?

    JAVA为什么有前途? 过去的十多年,JAVA基本每年都是全世界使用人数第一的语言.全世界数百万的IT企业构建了庞大的JAVA生态圈,大量的软件基于JAVA开发. JAVA也被誉为"计算机界 ...

  3. Starling2.0真的适合手游开发吗

    Starling2.0更新了Release版本,这几天看了一下源码,里面确实是实实在在地重整了显示,一些像滤镜,遮罩等等的常用功能也加入了,并且比起Starling1.7来说更加方便快捷,性能更好更易 ...

  4. 安卓eclipse 的ndk开发

    谷歌改良了ndk的开发流程,对于Windows环境下NDK的开发,如果使用的NDK是r7之前的版本,必须要安装Cygwin才能使用NDK.而在NDKr7开始,Google的Windows版的NDK提供 ...

  5. Android NDK 开发环境搭建(二)----来源http://www.cnblogs.com/zdz8207/archive/2012/11/27/android-ndk-install.htm

    随笔- 116  文章- 0  评论- 106  android 最新 NDK r8 在window下开发环境搭建 安装配置与使用 详细图文讲解,完整实际配置过程记录(原创) android 最新 N ...

  6. Android NDK开发之旅(2):一篇文章搞定Android Studio中使用CMake进行NDK/JNI开发

    Android NDK开发之旅(2):一篇文章搞定android Studio中使用CMake进行NDK/JNI开发 (码字不易,转载请声明出处:http://blog.csdn.NET/andrex ...

  7. java获取当月有几天_你真的能在JAVA开发这条路上面一直坚持下去吗?

    JAVA为什么有前途? 过去的十多年,JAVA基本每年都是全世界使用人数第一的语言.全世界数百万的IT企业构建了庞大的JAVA生态圈,大量的软件基于JAVA开发. JAVA也被誉为"计算机界 ...

  8. android studio下的NDK开发详解

    点击右边,选择你解压的NDK,点击应用.这一步将工具包关联到android  studio. 在 local.properties 文件中设置ndk的路径: 就是你解压的NDK工具集的路径  我的是  ...

  9. 第一次当项目经理压力大_你真的适合做项目经理吗?

    背景 有人说,每个人从出生都带着一种特殊的天赋,这需要慢慢寻找. 小编也在寻找,寻找着一个答案,一个关于自己是否真的适合做项目经理的答案?为什么大侠这么苦恼呢? 原来大侠成为项目经理后,每天都是水深火 ...

  10. 女生是否适合学软件开发?

    相信很多人都会有这样的疑问?女生是否适合学习软件开发呢?我们对软件开发的认知,计算机好像都是男生才会喜欢,比如,男生爱好打游戏,男生喜欢去捣鼓计算机,是不是更适合学习计算机呢?其实不然,我们都知道物以 ...

最新文章

  1. 面向对象中类和类的关系
  2. 软件工程 工具之二—— PowerDesigner v12(四)
  3. 优胜劣汰有利于整个团购行业服务的提升
  4. CSS基础(part17)--vertical-align垂直对齐
  5. python爬虫笔记(三):提取(二)
  6. ADB命令中循环执行某个命令
  7. 【资源共享】Rockchip I2C 开发指南 V1.0
  8. linux异常 - 弹出界面 eth0:设备eth0似乎不存在
  9. php怎样rc4加密,php 实现RC4加密解密
  10. 最大公约数之辗转相除法
  11. top 100 liked Q (26-)
  12. mongodb driver c#语法
  13. oracle linux 下载地址
  14. 算法精解:C语言描述(递归)
  15. c语言编程实现合取析取,C++实现离散数学求主合取范式和主析取范式
  16. 干货 | 扫了那么多二维码,15款工具打造你的专属二维码
  17. mac小白怎么下载网页视频?
  18. python 分析泰坦尼克号生还率_泰坦尼克号上谁的生存几率更大?Kaggle 金牌得主 Python 数据挖掘框架发现真相...
  19. one choise or a complain
  20. 完美解决win10打不开设置,右键个性化显示设置等就出现,该文件没有与之关联的程序来执行该操作。

热门文章

  1. 2019年最流行的50款开源软件
  2. 随手记_英语_学术写作_研究概述/范围/方法/结果/结论介绍句型
  3. eclipse 中的注释 快捷键
  4. 从信号转换角度研究血压(波形)预测的相关论文
  5. 江湖传闻怪谈——让酒
  6. FIND、FINDINDEX、INDEXOF、LASTINDEX、INCLUDES 数组五种查询条件方法介绍
  7. PIE SDK组件式开发综合运用示例
  8. Highcharts柱形范围图使用示例
  9. 软件工程-东北师大站-第六次作业PSP
  10. img加载在IE11,chrome,FF下的不同