| <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>The Android 8.0 release includes Project Treble, a major re-architect |
| of the Android OS framework designed to make it easier, faster, and less costly |
| for manufacturers to update devices to a new version of Android. Treble is for |
| all new devices launching with Android 8.0 and beyond (the new architecture is |
| already running on the Developer Preview for Pixel phones).</p> |
| |
| <h2 id=about-treble>About Android updates</h2> |
| <p>Project Treble separates the vendor implementation (device-specific, |
| lower-level software written by silicon manufacturers) from the Android OS |
| framework via a new vendor interface.</p> |
| |
| <p>In Android 7.x and earlier, no formal vendor interface exists so device |
| makers must update large portions of the Android code to move a device to a |
| newer version of Android:</p> |
| |
| <img src="images/treble_blog_before.png"> |
| |
| <p class="img-caption"><strong>Figure 1.</strong> Pre-Treble Android update |
| environment</p> |
| |
| <p>With Treble, a new stable vendor interface provides access to the |
| hardware-specific parts of Android, enabling device makers to deliver new |
| Android releases simply by updating the Android OS framework—without any |
| additional work required from the silicon manufacturers:</p> |
| |
| <img src="images/treble_blog_after.png"> |
| |
| <p class="img-caption"><strong>Figure 2.</strong> Treble Android update |
| environment</p> |
| |
| <h2 id=testing-treble>Testing Treble</h2> |
| <p>To ensure forward compatibility of vendor implementations, the new vendor |
| interface is validated by the <a href="/devices/tech/vts/index.html">Vendor Test |
| Suite (VTS)</a>, which is analogous to the |
| <a href="/compatibility/cts/">Compatibility Test Suite (CTS)</a>. You can use |
| VTS to automate HAL and OS kernel testing in both pre-Treble and Treble |
| environments.</p> |
| |
| <h2 id=treble-resources>Treble resources</h2> |
| <p>For details on the new Treble architecture, see the following sections:</p> |
| <ul> |
| <li><a href="/devices/architecture/hal-types.html">HAL Types</a>. Describes |
| binderized, passthrough, Same-Process (SP), and legacy HALs.</li> |
| <li><a href="/devices/architecture/hidl/index.html">HIDL (General)</a>. |
| Contains general information about the HAL interface definition language (HIDL, |
| pronounced "hide-l"), which is an interface description language (IDL) to |
| specify the interface between a HAL and its users.</li> |
| <li><a href="/devices/architecture/hidl-cpp/index.html">HIDL (C++)</a>. Contains |
| details for creating C++ implementations of HIDL interfaces.</li> |
| <li><a href="/devices/architecture/hidl-java/index.html">HIDL (Java)</a>. |
| Contains details about the Java frontend for HIDL interfaces.</li> |
| <li><a href="/devices/architecture/configstore/index.html">ConfigStore HAL</a>. |
| Describes the ConfigStore HAL, which provides a set of APIs for accessing |
| read-only configuration items used to configure the Android framework.</li> |
| <li><a href="/devices/architecture/dto/index.html">Device Tree Overlays</a>. |
| Provides details on using device tree overlays (DTOs) in Android.</li> |
| <li><a href="/devices/architecture/vndk/index.html">Vendor Native Development |
| Kit (VNDK)</a>. Describes the VNDK, which is a set of libraries exclusively for |
| vendors to implement their HALs.</li> |
| <li><a href="/devices/architecture/vintf/index.html">Vendor Interface Object |
| (VINTF)</a>. VINTF objects aggregate relevant information about a device and |
| make that information available through a queryable API.</li> |
| <li><a href="/security/selinux/images/SELinux_Treble.pdf">SELinux for Android |
| 8.0</a>. Details SELinux changes and customizations.</li> |
| </ul> |
| |
| </body> |
| </html> |