
本系列文章为NDK学习日志,将会从零开始学习NDK 相关的知识。
一、前言
首先我们要学习NDK,就要先知道什么是NDK?作为 Android 开发者,肯定对 SDK 不陌生(对Java代码的封装)将一些可以复用的Java代码封装成一个库。那么NDK 其实也是一样的,只是封装的代码不同,NDK 封装的代码是C / C++。我们都知道 Android 的底层都是 C / C++ 来编写的,因此NDK 的翻译也就是 Native Development Kit,是 Android的一个工具开发包。
二、作用
那学NDK有什么作用呢?如果对于一些比较耗时的程序我们通过Java来写不太理想,这个时候就可以通过我们的 NDK 来实现了。可以通过快速开发C、 C++的动态库,并自动将so和应用一起打包成 APK。同时NDK也具有安全性高的特点,如果我们将通过NDK 开发之后打包成so库,这个时候别人想要反编译你的apk还需反编译so库。同时由于NDK 是通过C / C++ 实现的,和Android底层一致,因此运行效率也比 Java 高,因此NDK具有以下特点:
- 运行效率高
- 代码安全性高
- 功能拓展性好
- 易于代码复用和移植
三、学习路线
对于NDK的学习也要循序渐进,以下是NDK 的学习路线:
- 第一阶段:C语言的学习,C++语言的学习,JNI的学习。
- 第二阶段:CMake的学习,Linux基本操作,Linux Shell脚本编程。
- 第三阶段:各种实战(身份证识别,MMKV组件,QQ变声 等)。
- 第四阶段:FFmpeg视频播放器项目,RTMP直播流。
- 第五阶段:OpenCV人脸定位,OpenGL视频处理,OpenGL视觉效果。
四、环境搭建
这里选择 Clion 作为开发工具,有几种配置方式,我选择了 MinGW,由于 Clion 也是 Intel 全家桶,因此下载时最好也是搭个梯子。
4.1 Clion下载
下载地址:Clion 下载地址,点此处下载
下载完成后打开安装:


安装完成后打开软件后会提示 Toolchains are not configured Configure,因此需要安装MinGW或Cygwin或Visual Studio等编译器,在此推荐安装 MinGW

4.2 MinGW安装
下载地址:MinGW 下载地址,点此处下载 !!!!不要点击绿色的按钮,一直向下滑动,找到压缩包,点击下载既可



4.3 配置Clion
打开Clion,点击configure,或者选择File-Settings-Build-Toolchains




在Environment中输入之前MinGW解压文件的路径,之后下面的会自动输入,若不能自动输入,也可以手动输入:

最后点击OK 即可。
到这里就可以开始我们的C / C++ 学习之旅了。
4.4 新建Project



4.5 中文乱码问题:
有时在输出时会出现中文乱码的问题,我们可以点开setting-File Encodings,将这几个选项都置为UTF-8:

点击输出窗口底部的UTF-8位置,会弹出输出窗口当前的内容编码并且选中GBK编码

点击GBK之后,会跳出一个是否转换编码对话框,点击Convert转换按钮

以下是几个搭建的文章,写得挺详细的,可以参考一下:
到这里,整个环境已经完成,接下来开始学习代码吧。
网友评论