查看原文
其他

NDK 编译的三种方式

By 字节流动 2022-05-24



阅读本文大概需要 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 



您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存