NDK 编译的三种方式
阅读本文大概需要 3.65 分钟。
第一种方式:通过 Android Studio 默认的方式
1. 创建带有 native 方法的类,build 项目
环境: Android Studio 3.0 Canary 1 , 下载并配置 NDK 。
2. 生成与类名相关的 .h 文件
进入 app -> build -> intermediates -> classes -> debug 目录下执行:javah com.haohao.hellojni.MyJNI(先配置好 JDK 的环境变量),生成 com_haohao_hellojni_MyJNI.h 文件
3. 创建 C++ 文件
在 main 文件夹下,新建 jni 目录,剪切 .h 文件到 jni 目录下,创建 hello.cpp 文件
hello.cpp
4. 配置 build.gradle 文件
修改 app / build.gradle 文件, muduleName 为引入的 .so name , 直接运行项目,安装 apk ,运行就 OK 了。
生成的 .so 文件位置
PS: 未指定 CPU 框架时,AS 会生成支持所有 CPU 框架的 .so 文件。
第二种方式:通过 ndk-build
1. 创建 Android.mk 和 Application.mk 文件
新建一个项目,在 app 目录下(任目录下都可以)新建 jni 文件,添加 Android.mk 和 Application.mk 文件,以及 com_haohao_hellojni_MyJNI.h 文件(运用上一小节的方法生成)。
Android.mk
Application.mk
在 jni 目录下(配置好NDK环境变量)直接执行 ndk-build , 生成 .so 文件。
2. 配置项目工程
在 main 目录下新建 jniLibs 目录,并拷贝 armeabi arm64-v8a armeabi-v7a 文件夹,运行 proj 。
第三种方式:通过 CMake 工具
从 Android Studio 2.2 开始,就默认使用 CMake 工具构建 NDK 项目,请确保你的 AS 版本大于 2.2 。
1. 通过 IDE 自动构建
创建项目时,勾选 Include C++ support 。
选择默认的 Toolchain Default 。
AS 自动生成 CMakeLists.txt 文件(CMake 构建脚本)。
CMakeLists.txt
再配置 app/build.gradle ,针对特殊平台 abiFilters 。配置完成之后,同步,运行。
2. 手动构建
新建一个工程,创建 native 类,快捷键 Alt + Enter ,自动创建 jni 目录和相应的 .cpp 文件。
native-lib.cpp
在工程根目录下创建 CMakeLists.txt 文件。
选择 app modulde ,右击选择 Link C++ Project with Gradle。
选择脚本文件的路径。
app/build.gradle 会自动同步。同步完成后,运行项目。
-- END --
温馨提示:迷茫的时候,选择最难走的那条路!
Copyright © 2017 haohao
本文由“135编辑器”提供技术支持
▼
扫码关注公众号:AndroidGeeks
AndroidGeeks