| <html devsite><head> |
| <title>Treble</title> |
| <meta name="project_path" value="/_project.yaml"/> |
| <meta name="book_path" value="/_book.yaml"/> |
| </head> |
| <body> |
| <!-- |
| Copyright 2017 The Android Open Source Project |
| |
| Licensed under the Apache License, Version 2.0 (the "License"); |
| you may not use this file except in compliance with the License. |
| You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
| --> |
| |
| <p>Android 8.0 版本的一项新元素是 Project Treble。这是 Android 操作系统框架在架构方面的一项重大改变,旨在让制造商以更低的成本更轻松、更快速地将设备更新到新版 Android 系统。Project Treble 适用于搭载 Android 8.0 及后续版本的所有新设备(这种新的架构已经在 Pixel 手机的开发者预览版中投入使用)。</p> |
| |
| <h2 id="about-treble">关于 Android 更新</h2> |
| <p>利用新的供应商接口,Project Treble 将供应商实现(由芯片制造商编写的设备专属底层软件)与 Android 操作系统框架分离开来。</p> |
| |
| <p>Android 7.x 及更早版本中没有正式的供应商接口,因此设备制造商必须更新大量 Android 代码才能将设备更新到新版 Android 系统:</p> |
| |
| <img src="images/treble_blog_before.png"/> |
| |
| <p class="img-caption"><strong>图 1.</strong> Treble 推出前的 Android 更新环境</p> |
| |
| <p>Treble 提供了一个稳定的新供应商接口,供设备制造商访问 Android 代码中特定于硬件的部分,这样一来,设备制造商只需更新 Android 操作系统框架,即可跳过芯片制造商直接提供新的 Android 版本:</p> |
| |
| <img src="images/treble_blog_after.png"/> |
| |
| <p class="img-caption"><strong>图 2.</strong> Treble 推出后的 Android 更新环境</p> |
| |
| <h2 id="testing-treble">对 Treble 进行测试</h2> |
| <p>为了确保供应商实现的前向兼容性,新的供应商接口会由<a href="/devices/tech/vts/index.html">供应商测试套件 (VTS)</a> 进行验证,该套件类似于<a href="/compatibility/cts/">兼容性测试套件 (CTS)</a>。您可以使用 VTS 在推出 Treble 前的环境和 Treble 环境中自动执行 HAL 和操作系统内核测试。</p> |
| |
| <h2 id="treble-resources">Treble 资源</h2> |
| <p>要详细了解新的 Treble 架构,请参阅以下部分:</p> |
| <ul> |
| <li><a href="/devices/architecture/hal-types.html">HAL 类型</a>:提供了关于绑定式 HAL、直通 HAL、Same-Process (SP) HAL 和旧版 HAL 的说明。</li> |
| <li><a href="/devices/architecture/hidl/index.html">HIDL(一般信息)</a>:包含关于 HAL 接口定义语言(简称 HIDL,发音为“hide-l”)的一般信息;HIDL 是用于指定 HAL 和其用户之间接口的接口描述语言 (IDL)。</li> |
| <li><a href="/devices/architecture/hidl-cpp/index.html">HIDL (C++)</a>:包含关于为 HIDL 接口创建 C++ 实现的详情。</li> |
| <li><a href="/devices/architecture/hidl-java/index.html">HIDL (Java)</a>:包含关于 HIDL 接口的 Java 前端的详情。</li> |
| <li><a href="/devices/architecture/configstore/index.html">ConfigStore HAL</a>:提供了关于 ConfigStore HAL 的说明;该 HAL 提供了一组 API,可供访问用于配置 Android 框架的只读配置项。</li> |
| <li><a href="/devices/architecture/dto/index.html">设备树叠加层</a>:提供了关于在 Android 中使用设备树叠加层 (DTO) 的详情。</li> |
| <li><a href="/devices/architecture/vndk/index.html">供应商原生开发套件 (VNDK)</a>:提供了关于 VNDK(专门用来让供应商实现其 HAL 的一组库)的说明。</li> |
| <li><a href="/devices/architecture/vintf/index.html">供应商接口对象 (VINTF)</a>:VINTF 对象整合了关于设备的相关信息,并让这类信息可通过可查询 API 提供。</li> |
| <li><a href="/security/selinux/images/SELinux_Treble.pdf">SELinux for Android 8.0</a>:提供了关于 SELinux 变更和自定义的详情。</li> |
| </ul> |
| |
| </body></html> |