欢迎来到【冰糖溯源码燕窝什么品牌好】【加速平台源码】【帝国后台源码】android 源码 vendor-皮皮网网站!!!

皮皮网

【冰糖溯源码燕窝什么品牌好】【加速平台源码】【帝国后台源码】android 源码 vendor-皮皮网 扫描左侧二维码访问本站手机端

【冰糖溯源码燕窝什么品牌好】【加速平台源码】【帝国后台源码】android 源码 vendor

2024-11-26 10:46:37 来源:{typename type="name"/} 分类:{typename type="name"/}

1.在谷歌云上高速编译安卓AOSP ROM、驱动、内核并完成刷机
2.Android VNDK/VSDK Snapshot编译框架

android 源码 vendor

在谷歌云上高速编译安卓AOSP ROM、驱动、内核并完成刷机

       感谢肉丝大佬文章 anquanke.com/post/id/... 乌师傅 谷歌云和驱动的建议 众多翻阅过的博客文章

       选择服务器时,可能遇到配额不够的冰糖溯源码燕窝什么品牌好问题。点击申请配额,然后提交申请,等待配置完成。

       同步源码时,可以选清华或谷歌源。若操作于谷歌云,则使用谷歌同步源码。指定版本同步时,加速平台源码注意输入y并选择正确的版本。Pixel对应Android 的tag是android-.0.0_r2,build id为QP1A..。确保版本无误,避免后续刷机失败。

       htop显示多个cpu运转,cpu使用率为0表示同步完成。

       下载驱动,忽略此步骤若无需刷机。Pixel机型对应QP1A..的驱动下载并解压,生成vendor文件夹,内容需复制至AOSP源代码目录。

       编译AOSP源码需安装OpenJDK 8,帝国后台源码避免使用非SUN JDK1.8导致的编译错误。遇到问题时,执行特定命令初始化编译环境。等待编译,个cpu的谷歌云环境下,编译时间只需几分钟。

       编译完成后,系统镜像位于当前目录的out/target/product/sailfish/下。

       编译内核,当前版本为3.,分支为gdce。选择内核版本,切到对应分支,联盟的源码开始编译。编译完成后,文件位于指定位置。

       刷机编译过程需耐心,重要的是编译速度。谷歌云提供+的cpu,加快编译。源码编译问题多由环境依赖引起,耐心解决。

       总结,刷机编译耗时两天,遇到诸多坑点。关键在于编译速度。啥是源码谷歌云的高cpu配置有助于加速编译过程。环境依赖问题需细心排查,耐心解决。

Android VNDK/VSDK Snapshot编译框架

       为了解决Android版本碎片化问题,引入了Treble架构。此架构提供了稳定的新SoC供应商接口,并引入了HAL接口定义语言(HIDL/Stable AIDL),用于指定vendor HAL 和system框架的接口,实现了system框架与Vendor HAL的解耦,使Vendor Freeze成为可能。然而,经过调查发现,AOSP源码的vendor组件有%~%的仓库与system组件耦合,这对架构的灵活性和稳定性产生了影响。Google进一步对Treble架构进行演进,引入了VNDK和VSDK的snapshot方案,旨在增强system/vendor组件之间的interface化能力。system组件通过预编译形成vendor Snapshot,可以提供给不同Android版本的vendor组件使用,这也是Treble方案落地的一个重要环节和基础支撑。

       VNDK提供了对Native库进行划分的概念,以达到管控system/vendor组件之间模块耦合度的目的。主要包括core library、vendor-only(proprietary) library、vendor_available library、vndk library和vndk-sp library。这些类别的划分定义了不同类型的相互耦合程度和使用约束,使得system和vendor组件的功能更加独立。

       VSDK则是在VNDK的基础上进一步扩展,包含了Vendor Snapshot。Vendor Snapshot包括系统源码维护的用于Vendor编译或集成的Native模块集合。这些模块主要由系统库、vendor可用库和vndk模块构成,其中vndk模块的使能与vendor模块的直接使用密切相关。

       Snapshot设计旨在解决system和vendor不同时间、不同版本编译搭配的问题。通过预构建系统侧的库,用于vendor侧的编译,减少对system侧源码的依赖。这可以通过两种方法实现:一种是将system仓库直接包含在vendor的manifest文件中,使用旧版本的代码;另一种是使用Google的Snapshot设计,由system侧预构建生成vendor所需的内容,用于vendor侧编译。两种方法各有优缺点,前者简单直接,但可能导致vendor代码量增加和编译时间延长;后者代码量更精简,编译时间短,但需要额外的预构建系统支持。

       Snapshot生成流程可以分为三个阶段:Generate Phrase、Install Phrase和Use Phrase。Generate Phrase阶段通过一定的规则从系统侧源代码中产生出vendor image编译依赖的预置编译模块产物。Install Phrase阶段通过py脚本将生成的prebuilt模块安装到指定源码目录,并生成对应Android.bp文件。Use Phrase阶段通过设置BOARD_VNDK_VERSION变量为具体版本号,触发编译系统使用预先生成的Snapshot参与编译。

       VNDK Snapshot生成流程中,生成逻辑在soong/cc/vndk.go中通过定义VndkSnapshotSingleton实现,最终生成的bp文件包含了vndk_prebuilt_shared模块的配置信息,用于vendor侧的编译。VSDK Snapshot的生成逻辑与VNDK类似,主要通过vendor_snapshot.go的GenerateBuildActions方法实现,同样通过设置BOARD_VNDK_VERSION变量进行编译。

       总的来说,VNDK/VSDK Snapshot的引入和设计旨在减少system和vendor组件之间的源码依赖,减少编译依赖,更容易形成Treble基线。这为构建更稳定、更高效的Android生态系统提供了有力支持。