Android VNDK限制下的解决方案

本文探讨了在Android系统中遇到的VNDK(Vendor NDK)限制问题,即框架进程无法加载vendor分区下的库。VNDK是谷歌为硬件厂商设定的开发规范,以保持系统对底层的统一。解决方案包括通过供应商进程暴露资源或拷贝库到system分区。作者分享了实际遇到的问题及解决方法,验证了芯片厂家已提供预设的系统拷贝库。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

你有没有遇到过这个错误呢?

F linker: CANNOT LINK EXECUTABLE "/system/bin/xxx": library "libxxx.so" not found

首先在android生态里,一般的应用开发者,不会遇到这个问题。
系统开发者也只有在某些情况下会遇到这个问题。什么情况呢?

我们先来了解下什么是vndk以及其规则。

VNDK就是vendor NDK

SDK(software development kit),NDK(native development kit)都不陌生吧,尤其是android应用开发者来说,就是某某开发包包含了api及其规范等等使得你开发的apk可以在android上运行。
那么怎么理解,vendor native development kit呢,这要从android整个软硬件框架及其生态说起,开发者常说的android其实指的是AOSP,而一个完整的android生态,至少包含四个个部分,一个是android,一个是硬件厂家芯片,屏幕,整机等等,一个是应用开发者,一个是消费者(是硬件消费者同时也是软件,内容消费者)。
可以看到android在产品架构上起了一个承上启下的作用,将硬件厂家和开发者连接在一起。
这里有一个看似矛盾的地方,android是谷歌开源的,而谷歌是一个商业公司不是慈善机构。谷歌开源的目的是推广它的广告系统从中得利,但是太开放版本混乱体验不一致反过来会损害它的利益。所以需要在开放的同时进行控制。
如果SDK,NDK是应用开发者的开发规范,那VNDK是针对硬件厂家的开发规范。

谷歌是这样介绍VNDK的

在理想的 Android 8.0 及更高版本环境中,框架进程不加载供应商共享库,所有供应商进程仅加载供应商共享库(和一部分框架共享库),而框架进程与供应商进程之间的通信由 HIDL 和硬件 binder 控制。
主要意思是,系统分区和vendor分区隔离,尤其系统分区内的框架进程不要链接加载vendor下的so库,规则不允许这

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值