Android NDK 开发入门

Android NDK 开发入门
wshunliAndroid NDK 是一套允许您使用原生代码语言(例如 C 和 C++)实现部分应用的工具集。在开发某些类型应用时,这有助于您重复使用以这些语言编写的代码库。
那我们为什么要使用 NDK 呢?
- 代码的保护。由于 apk 的 Java 层代码很容易被反编译,而 C/C++ 库反汇难度较大。
- 可以方便地使用现存的开源库。大部分现存的开源库都是 用C/C++ 代码编写的。
- 提高程序的执行效率。将要求高性能的应用逻辑使用 C 开发,从而提高应用程序的执行效率。
- 便于移植。用 C/C++ 写得库可以方便在其他的嵌入式平台上再次使用。
上述文字致谢 Devin Zhang 提供理论支持
本文默认已配置好 Android 开发环境,
关于 Android 开发环境配置可参考:http://www.wshunli.com/posts/f6977dbb.html
NDK 环境配置
1、首先应该下载 NDK
官方指定的下载地址:https://developer.android.google.cn/ndk/downloads/index.html
可能因为网络原因打不开,而且我们也不要那么新的。
本文以 Android NDK r10e 版本为例:
下载地址:https://dl.google.com/android/repository/android-ndk-r10e-windows-x86_64.zip
下载好之后,解压即可,我们解压到:D:\Android\android-ndk-r10e
2、和配置 Android 环境类似,配置 NDK 环境
新建变量:ANDROID_NDK
D:\Android\android-ndk-r10e |
在 Path 中添加
%ANDROID_NDK% |
3、验证 NDK 环境
在 命令控制符 中输入 ndk-build -version 存在输出即可。
第一个 Android NDK 项目
在 Android Studio 中新建 Android NDK 项目特别简单,
只需在新建项目时,勾选 include C++ support 即可:
点击运行即可看到效果:
向现有项目添加 C/C++ 代码
如果您希望向现有项目添加原生代码,请执行以下步骤:
1、创建新的原生源文件并将其添加到您的 Android Studio 项目中。
如果您已经拥有原生代码或想要导入预构建的原生库,则可以跳过此步骤。
2、创建 CMake 构建脚本,将您的原生源代码构建到库中。如果导入和关联预构建库或平台库,您也需要此构建脚本。
如果您的现有原生库已经拥有 CMakeLists.txt 构建脚本或者使用 ndk-build 并包含 Android.mk 构建脚本,则可以跳过此步骤。
3、提供一个指向您的 CMake 或 ndk-build 脚本文件的路径,将 Gradle 关联到您的原生库。Gradle 使用构建脚本将源代码导入您的 Android Studio 项目并将原生库(SO 文件)打包到 APK 中。
创建新的原生源文件
1、选择 Project 视图,在 main 目录下,新建 cpp 文件夹;
2、在 cpp 文件夹下新建 C/C++ Source File ,本文以 native-lib 为例。
创建CMake构建脚本
CMake 构建脚本是一个纯文本文件,您必须将其命名为 CMakeLists.txt。
在 Android 视图下,在 app 模块下右键,新建 File,文件名为 CMakeLists.txt。
文件内容如下:
# For more information about using CMake with Android Studio, read the |
将Gradle关联到您的原生库
在 Android 视图下,右键点击您想要关联到原生库的模块(例如 app 模块),并从菜单中选择 Link C++ Project with Gradle。
或者手动配置:
android { |
可选配置,可以包裹一些特定的示例代码:
android { |
最后运行即可,效果是一样的。
添加 native 方法流程
在 MainActivity 中添加 native 方法:
public native void printLog(); |
在 native-lib.cpp 中添加头文件及宏定义
实现 native 方法,我们这里打印个日志:
extern "C" |
这个方法可以自动生成,在 native 方法下 Alt + Enter 即可。
本文源码:https://github.com/wshunli/android-ndk-demo
参考资料
1、Android NDK | Android Developers
https://developer.android.com/ndk/index.html
2、Android-NDK入门-慕课网
https://www.imooc.com/learn/411
3、Android-NDK进阶-慕课网
https://www.imooc.com/learn/918
4、Android NDK开发(一) 入门 - 简书
https://www.jianshu.com/p/0261e6cceb3e
5、向您的项目添加 C 和 C++ 代码 | Android Studio
https://developer.android.com/studio/projects/add-native-code.html?hl=zh-cn














