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

Android S编译自定义动态库提示jni_headers依赖缺失问题求助

问题根因

Android 12(S)起新增了分区头文件依赖限制规则,原生jni_headers头库默认仅对system、vendor分区的模块开放,product分区的模块默认无权限直接依赖该头库,因此触发缺失依赖的编译报错。

修复方案

根据你的动态库使用的API类型选择对应方案即可:

  • 若你的动态库仅使用NDK公开API,无平台私有接口依赖
    在模块Android.bp中添加sdk_version配置,指定你适配的最低NDK版本,保留原有的header_libs: ["jni_headers"]即可。配置后编译系统会自动从NDK工具链中调用对应版本的jni.h头文件,无需依赖平台内置的jni_headers库。
    配置示例:
    cc_library_shared {
        name: "mylib",
        // 原有配置保持不变
        header_libs: ["jni_headers"],
        sdk_version: "30",
        product_specific: true, // 原有product分区声明保留
        // 其余配置不变
    }
    
  • 若你的动态库需要依赖平台内部接口,无法用NDK公开SDK编译
    在模块Android.bp中添加platform_include: true配置,声明允许模块访问平台内部头文件,保留header_libs: ["jni_headers"]即可。
    配置示例:
    cc_library_shared {
        name: "mylib",
        // 原有配置保持不变
        header_libs: ["jni_headers"],
        platform_include: true,
        product_specific: true, // 原有product分区声明保留
        // 其余配置不变
    }
    
注意

不要直接将jni.h复制到源码目录使用,不同Android版本的jni.h存在版本差异,该方式会引入后续版本升级的兼容风险。

内容的提问来源于stack exchange,提问作者Bajrang Hudda

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 09:18:03