Will Project Treble for Oreo make it easier to develop and flash custom ROMs?


Question

I'm trying to understand how Treble will affect custom ROM development.



I imagine by separating out the parts of the operating system it would make it easier for manufacturers to issue updates fixing any root pathways.


Answer

From XDA-Developers:




The reason why unofficial Android Oreo ports are slowly being worked on rather than just something developers can compile, boot up, and run is simple. In order to bring up a new Android version on an existing device, the kernel and the device tree need to be heavily reworked in order to make an existing Android phone work with a newer Android release. That’s because the current vendor implementation, including all proprietary binary blobs, is made to work with a single Android version, and thus need to be reworked and ported to the new Android version for the device to work properly.



Almost all components inside the phone use an independent, proprietary blob, and requires to be patched and worked on independently so that the newer software can use it, also making sure the other ones don’t break in the process. This is truly a time-consuming task, and the main reason why most stable custom ROMs (like LineageOS weeklies or other, officially supported ROMs) don’t appear until 2-3 months after the final Android release drops to AOSP. All this effort also means that the resulting ROM will only work on one device or, in the best case, a handful of identically or similarly specification devices.



This seems to be changing with Project Treble, according to Ron Amadeo of ArsTechnica and independently corroborated by custom ROM developer SultanXDA.



Malchev says that Treble standardizes Android hardware support to such a degree that generic Android builds compiled from AOSP can boot and run on every Treble device. In fact, these “raw AOSP” builds are what will be used for some of the CTS testing Google requires all Android OEMs to pass in order to license the Google apps—it’s not just that things should work, they are required to work.
To drive this point home, it means that because of the way the lower layer of Android was modularized, all Treble devices in the market will be able to boot a generic stock, AOSP Android build. This takes away most of the hassle of porting custom ROMs to an older device since a single, generic Android build can run on many devices. This moves Android devices way closer to something like a personal computer, where you can boot up the latest, cutting edge Windows 10 build or any Linux distribution on a 10-12-year-old computer.



You won’t be able to boot up flawlessly-working generic Android 9.0 builds on your Treble device just yet, though – device trees and kernels will still require being worked on. It’s still a great start: thanks to the modularized HALs, the workload for bringing up the next Android version should be greatly reduced, and we could see stable 9.0 builds in a matter of days/weeks instead of months. We should have in mind that Project Treble, while it’s now rolling out, is still a work in progress as it’s still receiving changes in AOSP, and the vendor layer could eventually be standardized to the point installing a new Android version will be the same as installing Windows on a computer.



This is a huge technical advancement, and it has the potential to significantly improve AOSP-based custom ROM development on our forums. But then, this only applies to devices with Project Treble, and currently the only Treble phones available out there are the Google Pixel, Google Pixel XL, Sony Xperia XZ1, and XZ1 Compact.



Topics


2D Engines   3D Engines   9-Patch   Action Bars   Activities   ADB   Advertisements   Analytics   Animations   ANR   AOP   API   APK   APT   Architecture   Audio   Autocomplete   Background Processing   Backward Compatibility   Badges   Bar Codes   Benchmarking   Bitmaps   Bluetooth   Blur Effects   Bread Crumbs   BRMS   Browser Extensions   Build Systems   Bundles   Buttons   Caching   Camera   Canvas   Cards   Carousels   Changelog   Checkboxes   Cloud Storages   Color Analysis   Color Pickers   Colors   Comet/Push   Compass Sensors   Conferences   Content Providers   Continuous Integration   Crash Reports   Credit Cards   Credits   CSV   Curl/Flip   Data Binding   Data Generators   Data Structures   Database   Database Browsers   Date &   Debugging   Decompilers   Deep Links   Dependency Injections   Design   Design Patterns   Dex   Dialogs   Distributed Computing   Distribution Platforms   Download Managers   Drawables   Emoji   Emulators   EPUB   Equalizers &   Event Buses   Exception Handling   Face Recognition   Feedback &   File System   File/Directory   Fingerprint   Floating Action   Fonts   Forms   Fragments   FRP   FSM   Functional Programming   Gamepads   Games   Geocaching   Gestures   GIF   Glow Pad   Gradle Plugins   Graphics   Grid Views   Highlighting   HTML   HTTP Mocking   Icons   IDE   IDE Plugins   Image Croppers   Image Loaders   Image Pickers   Image Processing   Image Views   Instrumentation   Intents   Job Schedulers   JSON   Keyboard   Kotlin   Layouts   Library Demos   List View   List Views   Localization   Location   Lock Patterns   Logcat   Logging   Mails   Maps   Markdown   Mathematics   Maven Plugins   MBaaS   Media   Menus   Messaging   MIME   Mobile Web   Native Image   Navigation   NDK   Networking   NFC   NoSQL   Number Pickers   OAuth   Object Mocking   OCR Engines   OpenGL   ORM   Other Pickers   Parallax List   Parcelables   Particle Systems   Password Inputs   PDF   Permissions   Physics Engines   Platforms   Plugin Frameworks   Preferences   Progress Indicators   ProGuard   Properties   Protocol Buffer   Pull To   Purchases   Push/Pull   QR Codes   Quick Return   Radio Buttons   Range Bars   Ratings   Recycler Views   Resources   REST   Ripple Effects   RSS   Screenshots   Scripting   Scroll Views   SDK   Search Inputs   Security   Sensors   Services   Showcase Views   Signatures   Sliding Panels   Snackbars   SOAP   Social Networks   Spannable   Spinners   Splash Screens   SSH   Static Analysis   Status Bars   Styling   SVG   System   Tags   Task Managers   TDD &   Template Engines   Testing   Testing Tools   Text Formatting   Text Views   Text Watchers   Text-to   Toasts   Toolkits For   Tools   Tooltips   Trainings   TV   Twitter   Updaters   USB   User Stories   Utils   Validation   Video   View Adapters   View Pagers   Views   Watch Face   Wearable Data   Wearables   Weather   Web Tools   Web Views   WebRTC   WebSockets   Wheel Widgets   Wi-Fi   Widgets   Windows   Wizards   XML   XMPP   YAML   ZIP Codes