Android为毛出现Treble架构

Android Treble架构解析 本文主要介绍Treble架构下的HAL&HIDL&Binder相关技术原理。Treble的详细资料文档,请参考Treble 官方文档。 1. Treble 简介 Android 8.0 版本的一项新元素是 Project Treble。这是 Android 操作系统框架在架构方面的一项重大改变,旨在让制造商以更低的成本更轻松、更快速地将设备更新到新版 Android 系统。Project 阅读详情

前言

Android 8.0 版本的一项新元素是 Project Treble。这是 Android 操作系统框架在架构方面的一项重大改变,旨在让制造商以更低的成本更轻松、更快速地将设备更新到新版 Android 系统。
有人告诉我android系统多出了Treble架构后,我查询到以上谷歌官方的宣言。Treble这个名词,让我开始以为是很新的东西。但是仔细研究后,发觉Treble还是建立在已有技术上的。当然,谷歌弄出Treble的真实原因到底是什么呢?先从Treble带来什么开始吧。

Treble带来了什么

1. 多了一层IPC(binder) 

以前版本的老版本中通过dllopen打开so库,或者干脆直接依赖编译连接so库,达到调用so库中的函数的方式,将被binder实现的IPC(   进程间通讯)的方式替换掉。
尽管,为了兼容老版硬件升级,任然保留了以前的老的调用方式,但是不可避免的,在今后的android系统升级中,新的硬件只要上了新版本的android系统,必然使用treble建议的IPC方式。

2. 性能必然有损失

很多开发者觉得,性能上没有影响,实际上是错误的,多一层IPC,必然带来额外的内存拷贝和CPU占用,当然这个是相对以前dllopen或者直接连接so库来说的。
为什么大部分的系统开发者感觉不出性能上的下降呢?想一想,Android1.X版本的时候,为什么没有上treble架构呢?没有binder吗?不是,最大的原因是现在的硬件性能相对以前有很大的提升,无论是SOC的多核,亦或IO的性能,覆盖住这多出的IPC资源占用是绰绰有余的。

3. HIDL接口定义语言

出现了HIDL,以及后面一整套相对应的代码生成工具,和必要的接口实现方法。勤劳的android工程师们又要开始学习了。其实,说到底还是binder,设计思想和实现方式变化不大。至于为什么用binder?这个涉及到binder的前世今生。我会有另外的文章去解释。

引入Treble的目的是什么

1. 将framework层与hal层之间的界线划分更清晰

1.1  法律上的考虑

依然在想办法隔离IP的传导, 无论是自上而下的,亦或是自下而上的,直接编译连接so库或dllopen,上层的framework层和so库跑在同一进程里,很容易引发IP(知识产权)纠纷。
谷歌的哲学:自己不作恶,但也不妨碍别人作恶。之前版本的dllopen的搞法,就有脱离对底层so库依赖的趋势,只不过IPC做的更彻底。当然,是否用IPC调用so库,就能防止IP的传导?我们不清楚,不过谷歌一直都擅长:引导法律关于软件IP的解释。

1.2 安全上的考虑

做出IPC层,并且还划分了不同的域,对进一步细分访问权限是很有好处的。

1.3 测试上的考虑

有了这个IPC层隔离,测试起来更方便,针对HAL层上的Treble层测试就好,以前想要测hal层,还是很麻烦的。主要还是缺乏统一的接口。以前的情况是:硬件稍微不一样,必然导致HAL层的测试用例需要修改重写。现在编写一次后,基本能cover住大部分的HAL层。

1.4 HAL层的由来

HAL的历史说来话长,它最早是出现在linux系统世界里的,比Android系统的出现要早很多。
但是从HAL出现以来,HAL层和framework层的界线确实很模糊。比如:直接依赖编译HAL的so库,或者dllopen打开的,甚至有socket通讯贯穿的,当然还有其他IPC方式从framework调用到HAL层的搞法。确实比较混乱。
谷歌确实是在想办法梳理framework和HAL之间的关系,Treble就是努力地尝试之一。只不过统一成binder的IPC调用,是否是最佳实现,现在还不好说。

2. 有什么感觉不好呢

2.1 防止碎片化

让制造商以更低的成本更轻松、更快速地将设备更新到新版 Android 系统。
真的更轻松吗?大家都知道,Android系统的真正优势在于开源,因为可以修改定制,所以会有千千万万的变化的版本出现。这个是特例独行的现代人喜欢的。即使外壳类似,但是里面的OS变化很大,带来各自众多的粉丝群体。
由于Treble的带入,将HAL以上这部分的开发固化下来了,不是不可以修改扩展,而是修改扩展的成本变高,变麻烦起来。对于追求变化的手机系统厂商,Treble是一个不小的麻烦。(注意,以后的新版本,binder方式的Treble才是大趋势。)
当然,从谷歌的角度看,防止碎片化,是一个必然的措施。

2.2 为可能的闭源准备

如果有一天,将Treble层的一些代码闭源怎么样?这个想法一冒出来的时候,我自己也吃一惊。当然,对于手机厂商的工程师来说,还是有其他办法解决的。但是细想下去, 觉得闭源后,自己改写的东西太多,成本比较高。

最后

没有看到太多的技术变化,Treble架构似乎是早有预谋的。Treble用到的不是什么新架构技术,它依然是谷歌为了解决一些现实问题,在架构设计上做出的改变。
凡做过设计的都有体会,所有的设计,其实最终都是一种妥协,它即有优点,也必然有缺点,是权衡利弊的结果而已。

遗留问题:

1. 为何是binder

2. HAL层的历史

 

Project Treble和HAL架构 HIDL(HAL Interface Definition Language): Treble 初期引入的专用接口语言,用于描述框架和 Vendor 之间的接口。有@1.0@1.1@1.2等版本,支持向后兼容AIDL(Android Interface Definition Language): 原本用于应用和框架之间的通信。从 Android 11 开始,被引入,旨在逐步取代 HIDL。它提供了更好的版本管理、更简单的编程模型,并统一了 Android 的 IPC 生态特性。 阅读详情

相关推荐

Android Treble与Mainline计划:推动Android生态系统的持续改进

Android操作系统作为目前全球最流行的移动操作系统之一,具有庞大而复杂的生态系统。它不仅驱动着数十亿台设备,还支持各种类型的应用程序开发和定制化需求。Android生态系统是由设备制造商、开发者社区和最终用户组成的多方参与体系。

虎哥LoveDroid 1237

Android Treble 简介

前言: With Android O, we’ve been working very closely with device makers and silicon manufacturers to take steps toward solving this problem, and we’re excited to give you a sneak peek at Project Treble, the biggest change to the low-level system architectu

南柯好萌的博客 1555

Android系统Treble架构详解:解耦厂商实现

在2017年之前,Android用户可能都有过这样的经历:谷歌发布了新版本Android(比如Android 8.0 Oreo),但自己的手机厂商(如三星、小米)却要等半年甚至更久才能推送更新。这种“更新慢”的背后,是传统Android架构的“紧耦合”问题——厂商的定制代码(如UI、硬件驱动)与谷歌的系统核心代码深度绑定,导致每次大版本升级都需要厂商重新适配,耗时耗力。Treble(意为“三倍的”,这里指“分层”)正是谷歌为解决这一问题推出的架构改进方案。它的核心目标是。

操作系统内核探秘的博客 1726

安卓设备架构检测神器:Treble Check让你的手机升级潜力一目了然

还在为安卓系统升级烦恼吗?想知道你的手机能否支持最新的GSI镜像?Treble Check这款开源检测工具,专为普通用户和技术爱好者设计,无需root权限就能快速获取设备架构信息,助你精准判断手机升级能力! ## 为什么你的安卓设备升级这么慢? Project Treble是谷歌在Android 8.0中引入的革命性架构改进,它彻底改变了系统更新的游戏规则。通过分离系统框架与硬件驱动,厂商能够

gitblog_01123的博客 876

Android-Treble-简要介绍

本文档简要介绍了Android O上的Android Treble计划,便于移动设备在Android系统上升级

保姆级教程:手把手教你从ENSEMBL官网下载GRCh38/GRCh37的GTF注释文件(附网址规律总结)

本文提供从ENSEMBL官网下载GRCh38/GRCh37的GTF注释文件的详细教程,包括路径解析、版本号确定和下载命令示例。特别解析了GRCh37的特殊存储结构,并分享批量下载、文件校验等高级技巧,帮助生物信息学研究者高效获取基因组注释文件。

weixin_29289821的博客 204

Treble Check:安卓架构革命性检测工具深度解析

在安卓生态系统中,Project Treble被誉为自Android诞生以来最重要的架构变革。Treble Check作为这一变革的"技术诊断师",为用户提供了前所未有的设备兼容性洞察能力。本文将从技术价值、实用指南、应用场景、特色亮点和未来展望五个维度,深度剖析这款创新工具。 ## 📋 文章导航 - 🎯 技术价值:架构分离的革命意义 - 🛠️ 实用指南:从安装到深度使用 - 🌟 应用场

gitblog_00600的博客 723

STM32串口调试踩坑记:HAL_UART_ErrorCallback里不先解锁,你的中断接收就废了

本文深入分析了STM32串口调试中HAL_UART_ErrorCallback的锁机制陷阱,指出在错误回调中不先解锁会导致中断接收失效的问题。通过解析HAL库源码,提出了正确的错误处理实现方法,并分享了预防措施与最佳实践,帮助开发者提升串口通信的可靠性。

weixin_33733810的博客 514

android treble项目&&HIDL学习总结

文章目录概念介绍产生背景---Treble项目独立升级framework需求HIDL定义---HAL 接口定义语言,目标framework和HAL解耦HIDL的两种模式---Passthrough直通 / Binderized绑定语法简介举例---hwc composer的HIDL设计分析1、composer hal服务启动rc启动脚本2、composer hal启动流程分析设计思路分析参考 概念介绍 产生背景—Treble项目独立升级framework需求 Android 8.0 重新设计了 Androi

runafterhit的博客 2898

使用mne包来对脑电数据进行预处理(一)

MNE(MNE-Python)是一个用于处理脑电(EEG)、磁图(MEG)和其他神经科学数据的Python库。它提供了丰富的功能,包括数据加载、预处理、分析和可视化,旨在帮助研究人员和神经科学家更轻松地进行脑电数据的处理和分析。在本文中,我们使用mne来对不同的格式的脑电数据集进行数据读取。

m0_71596228的博客 4305

Ardupilot姿态控制详解(完结篇)

本文主要是对过去写的一些APM中姿态控制流程及函数博文的汇总。 按照之前写的博文以及个人认为的学习顺序,给出APM姿态控制器的学习顺序如下: APM姿态旋转理论基础 Ardupilot姿态控制器 PID控制流程(整定后的P控制器) 详解APM的开方控制器sqrt_controller Ardupilot前馈及平滑函数input_euler_angle_roll_pitch_yaw解析 Ardupilot倾转分离函数thrust_heading_rotation_angles Ardupilot四元数姿态控制

moumde的博客 7024

如何快速检测安卓设备的Project Treble兼容性?这款免费工具让你一键了解!

想知道你的安卓手机是否支持Project Treble架构?是否能轻松升级系统?**Treble Check**这款开源兼容性检测工具,专为普通用户和安卓爱好者设计,无需专业知识就能快速获取设备关键信息,助你判断手机升级潜力! ## ???? 什么是Project Treble?为什么它如此重要? Project Treble是谷歌在Android O(8.0)中引入的重大架构改进,通过分离**系...

gitblog_00399的博客 1603

用AI助手Cursor轻松自动生成流程图

通过 Cursor + Mermaid,我们可以快速、准确地自动生成流程图,上面演示的例子部分流程图可能比较丑,我们可以通过流程图软件导入Mermaid代码,然后手动进行微调就可以了,如果你对美观要求不是特别多,可以直接用,这将极大地提升代码可视化和架构设计的效率。

呱牛 Just do IT 1940

终极指南:如何检测你的安卓设备是否支持Treble架构和系统更新

你是否曾经疑惑为什么有些安卓手机能快速获得系统更新,而另一些却要等上数月甚至数年?答案可能就隐藏在Treble架构中!🔥 作为一名安卓用户,了解你的设备是否支持Project Treble、A/B无缝系统更新和system-as-root功能,能够帮助你选择正确的GSI镜像并优化系统体验。 ## 🤔 什么是Project Treble? Project Treble是谷歌在Android

gitblog_01054的博客 577

建立时间与保持时间

建立时间与保持时间的计算 文章目录1、建立时间与保持时间概述及模型2、寄存器之间数据传输时建立时间与保持时间3、寄存器之间数据传输时建立时间余量与保持时间余量计算4、 FPGA允许的最大时钟频率或最小时钟周期5、计算FPGA时钟所允许的最大频率或最小时钟周期6、违反建立和保持时间会发生什么? 1、建立时间与保持时间概述及模型 建立时间(Tsu): 在时钟采样之前,输入必须稳定一段时间,该时间量称为建立时间。 理想最优建立时间: 保持时间(Th): 在时钟沿之后输入到触发器稳定所需的最短时间。 理想最优

Crazzy_M的博客 3万+

21、博弈中的对抗搜索算法解析

本文深入解析了博弈中的对抗搜索算法,涵盖极小极大算法、阿尔法-贝塔剪枝、移动排序与换位表等核心技术。文章分析了算法的数学基础与实现机制,探讨了其在国际象棋、围棋等复杂游戏中的应用,并扩展至多人游戏中的联盟与合作行为。通过对比不同类型策略的优劣,展示了对抗搜索在实际博弈系统中的演进方向与优化路径,为人工智能决策提供了理论支持与实践指导。

rust6ferris的博客 129

安卓设备升级潜力检测:Treble Check全面解析

还在为手机系统更新缓慢而烦恼吗?想知道你的安卓设备是否具备快速升级的硬件基础?Treble Check这款专业检测工具,只需一键点击,就能为你的设备进行全面"技术体检",揭示隐藏的升级能力。 ## 🔍 为什么你的手机更新总是慢人一步? 很多安卓用户都面临同一个困境:系统更新推送缓慢,有些设备甚至永远停留在旧版本。这背后隐藏的关键因素就是**Project Treble架构**的支持情况。Tr

gitblog_00417的博客 1285

本地搭建 GitLab 14.1.0版本CI/CD

GitLab 镜像版本 gitlab/gitlab-ce:14.1.0-ce.0 GitLab Runner 镜像版本 gitlab/gitlab-runner:v14.1.0 搭建此套环境是在一台32G的windows电脑上安装的。 使用dokcer安装。 此外还涉及的软件Docker Desktop,WSL 安装GitLab 首先启动 dockcer,打开WSL 打开后 首先定义GitLab的持久化目录 export GITLAB_HOME=/srv/gitlab 然后运行安装GitLab的命令

知无涯 4491

Android O 前期预研之一:Android Treble 计划

Android O 前期预研之前一直传言android O的推出会包含有两部分的主要功能: 谷歌打算彻底解决Android版本碎片化的问题,会在Android O上推出一个新的框架设计来解决这个这个升级问题。 推出Android for Automotive ,正式进军汽车车载市场。 而这两部分对我们的工作影响会比较大,第一部分可能会导致我司现存的一堆现有的工作会在以后可能不存在了。因为整个系统升级

小码农的小梦想 1万+

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Android Binder【篇四:架构演进Treble化与HAL变革】

在Android 8.0 之前,Binder机制比较简单,只有一个驱动设备"/dev/binder",一个守护进程"/system/bin/servicemanager",一个binder库"/system/lib64/libbinder.so"。即前面几篇文章讲解的内容。 在Android 8.0开始,Android引入了Treble的机制,为了方便Android系统的快速移植、升级,提升系统稳定性,Binder驱动设备被拓展成了"/dev/binder","/dev/hwbinder","/dev/.

qq_27672101的博客 5395

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

安卓设备升级潜力检测工具:Treble Check全面解析

还在为手机系统升级速度慢而困扰吗?想了解你的安卓设备是否具备快速升级的能力?Treble Check这款专业检测工具,通过简单的一键操作,就能为你的设备进行深度"体检",揭示隐藏的系统升级潜力! ## 设备架构检测的重要性 许多安卓用户都面临系统更新推送缓慢的问题,有些设备甚至永远停留在旧版本。这背后的关键因素就是**Project Treble架构**的支持情况。Treble Check让普

gitblog_00690的博客 797

Treble Check:安卓设备兼容性检测神器

Treble Check是一款专为安卓用户设计的实用工具应用,能够快速检测设备是否支持Project Treble、A/B(无缝)系统更新以及system-as-root特性。该应用还能准确识别设备的CPU架构,为用户选择适合的GSI(通用系统镜像)提供重要参考。 ## 核心功能特性 Treble Check通过分析安卓系统的内置属性(如`ro.build.ab_update`)来判断设备功能

gitblog_01163的博客 1328

Project Treble终极指南:如何检测你的安卓设备升级潜力

想知道你的安卓手机是否具备快速升级到最新系统的能力吗?🤔 Project Treble作为安卓系统架构的重大革命,正在彻底改变设备更新的游戏规则!Treble Check这款开源应用就是你的终极检测工具,只需一键即可揭秘手机的升级潜力。 ## 什么是Project Treble?🤔 Project Treble是谷歌在Android 8.0 Oreo中引入的**模块化架构**,它将Andr

gitblog_00397的博客 1088

Treble架构(解决碎片化问题)

在安卓8.0之前,设备制造商若要更新到新版的成本和难度非常高,导致安卓新版发布后更新率非常低。安卓系统的代码分为两大类,一类是谷歌维护原生的代码称为Android OS代码。另一类是芯片厂商和手机厂商定制的代码,也就是的代码也称为。在安卓8之前,因为HAL是以.so库的形式存在,与framework位于同一进程,导致任何更新都需重新编译、打包HAL层。所以framework与HAL同生共死的状态(耦合在一起)。

qq_61923884的博客 1196
上一篇: Detailed Operations For Standalone On Linux BSP of I.MX Processors
下一篇: 如何测试验证linux下的CAN接口
RyanLeiWang
博客等级 码龄20年 184粉丝 40原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值