Android 编译错误:module xxx1 missing dependencies:xxx

本文讲述了在Android开发中遇到的编译错误,重点在于解决缺少依赖库(如libnetd_client)、sdk_version设置不当以及确认lib下so库在不同架构下的存在。作者提供了分析方向和解决方案,涉及如何处理跨分区依赖和正确配置SDK版本。
摘要由CSDN通过智能技术生成

1. 编译错误log

echo "module netd_client_example missing dependencies: libnetd_client{os:android
,image:vendor.34,arch:arm64_armv8-a-branchprot_kryo300,sdk:,link:shared}" && false

2. 分析方向

2.1 缺少依赖库

添加依赖库

    shared_libs: [
        "liblog",
        "libbinder",
        "libutils",
        "libcutils",
        "libcurl",
        "libbase",
        "libnetd_client"
    ],

2.2 缺少sdk_version:

cc_binary {
    name: "netd_client_example",
    srcs: ["main.cpp"],
    defaults: ["hidl_defaults"],
    vendor: true,
    sdk_version: "current",

原因:

  1. 最近在调查时发现,如果vendor分区的库或bin依赖了system分区的库时,会有此报错,原因是构建系统不允许在供应商模块和框架模块之间建立依赖关系,并且构建系统会在以下情况下发出错误:

    • 未设置 vendor:true 的模块依赖于设置了 vendor:true 的模块,或
    • 设置了 vendor:true 的模块依赖于既未设置 vendor:true 也未设置 vendor_available:true 的非 llndk_library 模块。

    因此我们可以检查是否有跨分区的依赖,检查是否可以通过添加vendor:true在不影响功能的情况解决跨分区依赖问题

  2. Android 11 取消了 product 分区捆绑,使其独立于 system 和 vendor 分区。构建时,Make 和 Soong 将通过检查 platform_apis 和 sdk_version 字段来验证 product 分区中的 Java 模块是否不使用隐藏 API。product 分区中应用的 sdk_version 必须填写 current、system_current 或 API 的数字版本,platform_apis 字段必须为为空。

2.3 缺少响应的 lib下so库

根据第一步中添加依赖库查找out目录下 out/xxx/lib 已经out/xx/lib64 是否存在响应的so库

cc_binary {
    name: "rtkethernet_client",
    defaults: ["hidl_defaults"],
    srcs: ["Test.cpp"],
 
    shared_libs: [
        "liblog",
        "libhardware",
        "libhidlbase",
        "libhidltransport",
        "libutils",
		"libui",
    ], 
}

比如上面编译错误,查看后发现 只有out/xxx/vendor/lib/android.hidl.base@1.0.so 而lib64下没有。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ʚ兔子的先森ɞ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值