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

Android项目如何通过JNI/NDK调用Maven库中预编译C++(.so)头文件?

Android NDK集成相关问题解答

一、应用层使用Maven引入的TESTLIBRARY的C++头文件方法

  • 先确认依赖已正确引入:检查应用模块的build.gradle(或kts)里是否有类似implementation 'com.example:testlibrary:x.y.z'的配置,确保同步成功。
  • 根据构建工具配置头文件路径:
    • 用CMake的话,在应用的CMakeLists.txt中,先通过find_package(TESTLIBRARY REQUIRED)定位到库,再用target_include_directories(你的应用native目标名 PRIVATE ${TESTLIBRARY_INCLUDE_DIRS})把库的头文件目录加入编译路径。
    • 用ndk-build的话,在Android.mk中添加LOCAL_C_INCLUDES += $(call import-path,testlibrary)/include,同时Application.mk要匹配库支持的ABI。
  • 之后在自己的native代码里直接include头文件即可,比如#include "testlibrary_core.h",然后调用头文件中声明的函数或类。

二、hello-libs示例中include文件夹的.h文件是否必填

是必填项。这些头文件是预编译.so库对外暴露的接口声明——你的native代码必须通过它们知晓库中函数、类的参数、返回值等定义,才能正确调用库的功能。如果没有这些头文件,编译器无法识别.so里的可用符号,编译时会报找不到类型或未定义引用的错误。

举个例子:如果.so库实现了calculate_sum(int a, int b)函数,头文件里会有这个函数的声明,你的代码include头文件后才能写calculate_sum(3,5),编译器才能生成正确的调用指令,链接阶段也能找到.so里的具体实现。

内容的提问来源于stack exchange,提问作者cyber wolf

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 02:37:25