You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用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支持

  1. 在Module级的build.gradle文件中,添加NDK相关配置:
android {
    // 其他配置...
    ndkVersion "25.2.9519653" // 替换为你安装的NDK版本号
    externalNativeBuild {
        cmake {
            path "src/main/cpp/CMakeLists.txt"
            version "3.22.1" // 替换为你安装的CMake版本号
        }
    }
}
  1. 在src/main目录下创建cpp文件夹,放入你的C++源文件(如test.cpp)。
  2. 在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 00:01:05