如何使用Android NDK编译生成arm64-v8a架构的.so文件?
用Android Studio通过NDK编译C++生成.so文件的具体步骤
1. 安装NDK与CMake组件
打开Android Studio,依次进入File -> Settings(Mac用户为Android Studio -> Settings),找到Appearance & Behavior -> System Settings -> Android SDK,切换到SDK Tools标签页,勾选NDK (Side by side)和CMake,点击Apply完成安装。
2. 新建支持NDK的项目(或给现有项目添加NDK支持)
方式一:新建Native C++项目
- 启动Android Studio,选择
New Project,选中Native C++模板,点击Next。 - 填写应用名称、包名等信息,选择开发语言(Java/Kotlin),点击
Next。 - 在
Customize C++ Support页面,选择对应版本的CMake,指定C标准(如C17),点击Finish。项目创建后自动生成cpp目录,包含示例C++文件native-lib.cpp和构建脚本CMakeLists.txt。
方式二:给现有项目添加NDK支持
- 在Module级的
build.gradle文件中,添加NDK相关配置:
android { // 其他配置... ndkVersion "25.2.9519653" // 替换为你安装的NDK版本号 externalNativeBuild { cmake { path "src/main/cpp/CMakeLists.txt" version "3.22.1" // 替换为你安装的CMake版本号 } } }
- 在
src/main目录下创建cpp文件夹,放入你的C++源文件(如test.cpp)。 - 在
cpp目录下创建CMakeLists.txt构建脚本,示例内容:
cmake_minimum_required(VERSION 3.22.1) project("myndklib") # 生成共享库(.so文件),指定要编译的C++源文件 add_library( myndklib # 库名称,最终生成的.so会以libmyndklib.so命名 SHARED test.cpp) # 你的C++源文件名 # 可选:链接Android日志库,用于C++代码中输出日志 find_library( log-lib log) target_link_libraries( myndklib ${log-lib})
3. 编译生成.so文件
- 点击Android Studio右上角的
Sync Project with Gradle Files按钮,同步配置。 - 执行
Build -> Make Project(或点击工具栏的Make按钮)完成编译。 - 编译完成后,.so文件位于
app/build/intermediates/cmake/debug/obj/目录下,不同CPU架构(如armeabi-v7a、arm64-v8a)对应不同的子文件夹。
4. 可选:指定生成的CPU架构
如果需要减少包体积,可在Module级build.gradle的defaultConfig块中添加配置,只生成指定架构的.so文件:
android { defaultConfig { // 其他配置... externalNativeBuild { cmake { abiFilters 'armeabi-v7a', 'arm64-v8a' // 按需指定架构 } } } }
同步配置后重新编译,即可得到指定架构的.so文件。
内容的提问来源于stack exchange,提问作者Charles Fake
相关产品推荐
相关产品推荐

