你有没有遇到过这个错误呢?
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是针对硬件厂家的开发规范。