跨平台的库,如FFmpeg, skip,weex, 加固,防逆向 签名校验 图片压缩 音视频解码 OpenGL ES 高级特效 热修复 andfix 人脸识别 face++ 加密算法 微信apk中的so文件
手机淘宝apk中so文件html
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平台。linux
若是你的业务和NDK开发应用场景不是颇有关联,能够不用搞,也是合理的。毕竟Java及Android中还有不少你不会玩的。如插件化(纯Java能够搞),如性能优化,如高级自定义控件,如源码学习等等。光这些够折腾很久了。把这些玩会了,你也是专家了。android
固然,你若是业务有关联。如Camera美颜,滤镜,音视频等,若是要进阶,NDK不用多说,确定要会玩的。NDK本质上玩的是c/c++,因此就须要好好学习c/c++,如虚函数,虚析构,虚基类,智能指针,宏函数,宏定义,结构体,共用体,运算符重载,指针,这些基本的c++相关。面向对象在任何语言中都受用。c++
1.Google官方NDK连接:https://developer.android.com/ndk/index.html
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源码剖析,这些书之类。算法