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

如何在Android Studio中无需JNI绑定创建Native(C++)共享库

纯原生C++共享库构建方案

完全不需要换回ndk-build,Android Studio搭配CMake即可实现无JNI绑定的纯原生共享库构建,操作步骤如下:

  • 清理冗余代码:直接删除项目自动生成的JNI绑定相关C++文件(如默认的native-lib.cpp)以及Java侧的JNI调用代码,仅保留你自己的原生库源码即可,不存在必须保留JNI相关文件的强制限制。
  • 调整CMakeLists.txt配置:仅将需要编译进共享库的自有源码加入add_library配置,示例配置如下:
cmake_minimum_required(VERSION 3.22.1)
project("your_lib_project")

# 仅添加自有原生源码,不要引入JNI绑定相关的cpp文件
add_library(
        your_target_lib_name
        SHARED
        your_source_1.cpp
        your_source_2.cpp
        your_source_3.cpp
)

# 按需添加依赖系统库,比如需要log输出时添加如下配置
find_library(
        log-lib
        log
)
target_link_libraries(
        your_target_lib_name
        ${log-lib}
)
  • 调整Module级build.gradle配置:无需配置任何JNI绑定生成规则,按需设置编译参数即可,示例配置如下:
android {
    namespace "com.your.namespace"
    compileSdk 34

    defaultConfig {
        minSdk 24
        targetSdk 34

        ndk {
            // 按需设置需要编译的ABI架构
            abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86_64'
        }
        externalNativeBuild {
            cmake {
                cppFlags '-std=c++17'
            }
        }
    }

    externalNativeBuild {
        cmake {
            path file('src/main/cpp/CMakeLists.txt')
            version '3.22.1'
        }
    }
}
  • 产物获取:执行菜单栏Build -> Make Module '你的模块名'即可,生成的.so文件输出路径为build/intermediates/cmake/[构建变体]/obj/[对应ABI]/,配套你整理的对外头文件即可提供给其他项目链接使用。

若你更习惯ndk-build的配置方式,也可以直接在build.gradle的externalNativeBuild节点配置ndkBuild指向你的Android.mk文件,两种方案都支持纯原生库构建,不存在强制依赖JNI代码的限制。

内容的提问来源于stack exchange,提问作者Ofer Goren

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 22:54:01