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链接: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源码剖析,这些书之类。

搞NDK开发的更多相关文章

  1. android ndk开发(二)实现一个官方demo

    实现了一个官方的demo:bitmap-plasma(水波纹) 源代码就在samples文件夹下,可以自己去找. 界面: 建立项目的步骤和配置环境不明白的可以去看:http://www.cnblogs ...

  2. Android NDK开发(五)--C代码回调Java代码【转】

    转载请注明出处:http://blog.csdn.net/allen315410/article/details/41862479 在上篇博客里了解了Java层是怎样传递数据到C层代码,并且熟悉了大部 ...

  3. NDK开发之访问域

    Java有两类域,实例域和静态域.类的每个实例都有自己的实例域副本,而一个类的所有实例共享一个静态域(Java SE基础). JNI提供了相应的函数来访问这两类域,总体步骤是这样的: 1.通过对象引用 ...

  4. android studio下的NDK开发详解(一)

    源地址:http://www.voidcn.com/blog/chengkaizone/article/p-5761016.html 好记性不如烂笔头,开始坚持写博客,学一点记一点,只为了生活更好. ...

  5. 简单的调用OpenCV库的Android NDK开发 工具Android Studio

    前言 本博客写于2017/08/11, 博主非专业搞安卓开发, 只是工作的需要倒腾了下Android NDK相关的开发, 博文中有什么不正确.不严格的地方欢迎指正哈    本文后续也许还会有删改, 就 ...

  6. JNI/NDK开发

    公司的新需求终于解决完了,离测试和发布还有段时间,第一次体验了下没需求没bug的感觉,真是舒爽~然后翻了翻有什么可以学的.无意翻到了Android后期发展的五大趋势.一.性能优化.二.高级UI.三.J ...

  7. NDK开发_笔记0

    自谷歌搜索退出中国以来,谷歌对全球第二大市场中国的态度一直保持冷淡.可是北京时间12月8日,谷歌2016开发者大会在北京召开,同时专门针对中国的谷歌开发者网站已经上线:https://develope ...

  8. Android SDK NDK开发总结

    描述:http://talent.baidu.com/external/baidu/index.html#/jobDetail/2/1237247043 android studio实现Jni(C/C ...

  9. Android NDK开发Hello Word!

    在之前的博客中已经为大家介绍了,如何在win环境下配置DNK程序,本篇我将带大家实现一个简单的Hello jni程序,让大家真正感受一下NDK开发的魅力.这里我们选择使用C+JAVA开发Android ...

随机推荐

  1. setValueForKeysWithDictionary的底层实现

    setValueForKeysWithDictionary这个方法会遍历字典, 然后调用setValue:forKeyPath: 根据字符串,进行属性匹配: (1)根据key,到当前模型当中,去找有没 ...

  2. sql使用cte表达式进行递归查询

    --递归获取所有子节点 with temp as ( select * from MK_Base_Department where F_DepartmentId='5f258320-c1b7-42a4 ...

  3. Anaconda3使用

    1.使用conda安装各种包到指定路径下的环境, conda install --prefix=/home/xxx/PycharmProjects/project_01/env numpy 2.安装指 ...

  4. 借助meta影藏顶部菜单

    1===>报错 Cannot find module 'webpack/lib/Chunk' 删除node_modules 然后重新下载 4==> 现在已进入页面,底部就有四个菜单,在点击 ...

  5. Html学习之七(CSS选择器的使用--基础选择器优先级问题)

    二.基础选择器的综合使用 优先级顺序:id选择器>class选择器>元素选择器.也就是说,如果这三种选择器同时为某一个元素设定样式,那么冲突的部分按优先级的顺序依次决定. <!DOC ...

  6. 201871010135 张玉晶《面向对象程序设计(java)》第七周学习总结

    201871010135  张玉晶<面向对象程序设计(java)>第七周学习总结 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ ...

  7. lua 9 parttern 字符极其简要的介绍

    摘自:https://www.lua.org/pil/20.2.html 所有的字符和含义包括: . all characters %a letters %c control characters % ...

  8. CF757F Team Rocket Rises Again

    题意 建出最短路图(DAG)之后就跟这题一样了. code: #include<bits/stdc++.h> using namespace std; #define int long l ...

  9. Git仓库占用空间太大的解决方法

    git gc --aggressive对本地git库进行更彻底清理和优化,这个指令花费的时间也会更长. 胡云飞系统部署搭建整体把控:git gc --auto这是一个设置的指令,并不会进行gc操作.如 ...

  10. IronPython

    当时做FitnesseTest的时候,写了很多和硬件交互的代码,但是后来发现每次都通过启动进程的方式运行python脚本,很费时间. 既然要运行python脚本,在.net平台下可以用IronPyth ...