Changelog 27 - Thriving Thirteen, Amazing Aperture, Careful Commonization
Written on December 31, 2022 by Nolen Johnson (npjohnson)
20 - wow. I remember when these releases were single digits…
Hey y’all! Welcome back!
As many of us start traveling again and the world returns to normal, of course, it’s time for us to break the status quo! You probably weren’t expecting to hear from us until… somewhere near April according to our historical releases? HA! Gotcha.
With all that said, we have been working extremely hard since Android 13’s release last October to port our features to this new version of Android. Thanks to our hard work adapting to Google’s largely UI-based changes in Android 12, and Android 13’s dead-simple device bring-up requirements, we were able to rebase our changes onto Android 13 much more efficiently. This led to a lot of time to spend on cool new features such as our awesome new camera app, Aperture, which was written in large part by developers SebaUbuntu, LuK1337, and luca020400.
Now, let’s remind everyone about versioning conventions - To match AOSP’s versioning conventions, and due to the fact it added no notable value to the end-user, we dropped our subversion from a branding perspective.
As Android has moved onto the quarterly maintenance release model, this release will be “LineageOS 20”, not 20.0 or 20.1 - though worry not - we are based on the latest and greatest Android 13 version, QPR1.
Additionally, to you developers out there - any repository that is not core-platform, or isn’t expected to change in quarterly maintenance releases will use branches without subversions - e.g.,
lineage-20 instead of
- Security patches from April 2022 to December 2022 have been merged to LineageOS 17.1 through 20.
ohmagoditfinallyhappened- LineageOS now has an awesome new camera app called Aperture! It is based on Google’s (mostly) awesome CameraX library and provides a much closer “to stock” camera app experience on many devices. Massive kudos to developers SebaUbuntu, LuK1337, and luca020400 who developed this initially, designer Vazguard, and to the entire team for working to integrate it into LineageOS and adapt it to our massive array of supported devices!
- WebView has been updated to Chromium 108.0.5359.79.
- We have introduced a completely redone volume panel in Android 13 and have further developed our side pop-out expanding panel.
- We now support GKI and Linux 5.10 builds with full out-of-tree module support to match new AOSP conventions.
- Our fork of the AOSP Gallery app has seen many fixes and improvements.
- Our Updater app has seen many bug fixes and improvements, as well as now has a fancy new Android TV layout!
- Our web browser, Jelly has seen several bug fixes and improvements!
- We have contributed even more changes and improvements back upstream to the FOSS Etar calendar app we integrated some time back!
- We have contributed even more changes and improvements back upstream to the Seedvault backup app.
- Our Recorder app has been adapted to account for Android’s built-in features, while still providing the features you expect from LineageOS.
- The app was rearchitected heavily.
- Material You support has been added.
- The high quality recorder (WAV format) now supports stereo and there has been several threading fixes.
- Android TV builds now ship with an ad-free Android TV launcher, unlike Google’s ad-enabled launcher - we also support Google TV-style builds and are evaluating moving to it on supported devices in the future.
- Multiple Google TV features, such as the much more appealing looking Two-Panel Settings application have been ported to LineageOS Android TV builds.
adb_rootservice is no longer tied to the build type property, which allows greater compatibility with many third-party root systems.
- Our merge scripts have been largely overhauled, greatly simplifying the Android Security Bulletin merge process, as well as making supporting devices like Pixel devices that have full source releases much more streamlined.
- LLVM has been fully embraced, with builds now defaulting to using LLVM bin-utils and optionally, the LLVM integrated assembler. For those of you with older kernels, worry not, you can always opt out.
- A global Quick Settings light mode has been developed so that this UI element matches the device’s theme.
- Our Setup Wizard has seen adaptation for Android 13, with new styling, and more seamless transitions/user experience.
Due to technical reasons, starting from LineageOS 19 we had to ditch Snap, our fork of Qualcomm’s camera app, and began providing Camera2 again, the default AOSP camera app.
This led to a poor camera experience out of the box, since Camera2 is too simple for the average user’s needs.
So, with this LineageOS version, we wanted to fix this, and luckily for us CameraX reached a usable state, being mature enough to power a full-fledged camera app, so we started working on it.
After two and a half months of development, it can completely replace Camera2 and thus became the default camera app starting from LineageOS 20.
Aperture implements several features that are missing from Camera2, for example:
- Auxiliary cameras support (device maintainers must enable it)
- Video frame rate controls
- Full control of EIS (electronic image stabilization) and OIS (optical image stabilization) settings
- A leveler to check the device orientation angle
As time goes you might see new features introduced as the app’s development is still ongoing!
Several of our developers have worked hard on SoC-specific common kernels to base on that can be merged on a somewhat regular basis to pull in the latest features/security patches to save maintainers additional effort.
Go check them out and consider basing your device kernels on them!
Supported SoCs right now are:
|SoC (system-on-chip)||Kernel Version||Android Version|
Additionally, many legacy devices require interpolating libraries that we colloquially refer to as “shims” - these have long been device and maintainer managed, but this cycle we have decided to commonize them to make the effort easier on everyone and not duplicate effort!
You can check it out here and contribute shims that you think other devices may need or add additional components to additional shims and compatibility layers provided via Gerrit!
Overall, we feel that the 20 branch has reached feature and stability parity with 19.1 and is ready for initial release.
LineageOS 18.1 builds were not deprecated this year, as Google’s somewhat harsh requirements of BPF support in all Android 12+ device kernels meant that a significant amount of our legacy devices on the build-roster would have died.
Instead of killing LineageOS 18.1, it is on a feature freeze, while still accepting device submissions, and building each device monthly, shortly after the Android Security Bulletin is merged for that month.
LineageOS 20 will launch building for a decent selection of devices, with additional devices to come as they are marked as both Charter compliant and ready for builds by their maintainer.
Upgrading to LineageOS 20
To upgrade, please follow the upgrade guide for your device found here.
If you’re coming from an unofficial build, you need to follow the good ole’ install guide for your device, just like anyone else looking to install LineageOS for the first time. These can be found here.
Please note that if you’re currently on an official build, you DO NOT need to wipe your device, unless your device’s wiki page specifically dictates otherwise, as is needed for some devices with massive changes, such as a repartition.
Importance of the Wiki
Though the LineageOS Wiki has existed since our inception, we’d like to take this time to remind users to follow instructions on their device’s respective Wiki Page as given the complexity introduced by AOSP changes like System-As-Root, A/B Partition Scheme, Dynamic Partitions, and most recently Virtual A/B found on the Pixel 5 and other devices launching with Android 11, the instructions many of you are used to following from memory are either no longer valid or are missing very critical steps. As of 16.0, maintainers have been expected to run through the full instructions and verify they work on their devices. The LineageOS Wiki was recently further extended, and maintainers were given significantly more options to customize their device’s specific installation, update, and upgrade instructions.
Developers, Developers, Developers
Or, in this case, maintainers, maintainers, maintainers. We want your device submissions!
If you’re a developer and would like to submit your device for officials, it’s easier than ever. Just follow the instructions here.
The above also applies to people looking to bring back devices that were at one point official but are no longer supported - seriously - even if it’s not yet completely compliant, submit it! Maybe we can help you complete it.
After you submit, within generally a few weeks, but in most cases a week, you’ll receive some feedback on your device submission; and if it’s up to par, you’ll be invited to our communications instances and your device will be forked to LineageOS’s official repositories.
Don’t have the knowledge to maintain a device, but want to contribute to the platform? We have lots of other things you can contribute to. For instance, our apps suite is always looking for new people to help improve them, or you can contribute to the wiki by adding more useful information & documentation. Gerrit is always open for submissions! Once you’ve contributed a few things, send an email to devrel(at)lineageos.org detailing them, and we’ll get you in the loop.
Also, if you sent a submission via Gmail over the last few months, due to infrastructural issues, some of them didn’t make it to us, so please resend them!
We’ve talked about these before, but these are important, so we will cover them again.
Though we’ve had buildable generic targets since 2019, to make LineageOS more accessible to developers, and really anyone interested in giving LineageOS a try, we’ve documented how to use them in conjunction with the Android Emulator/Android Studio!
Additionally, similar targets can now be used to build GSI in mobile, Android TV configurations, and Android Automotive (we’ll talk more about this later) making LineageOS more accessible than ever to devices using Google’s Project Treble. We won’t be providing official builds for these targets, due to the fact the user experience varies entirely based on how well the device manufacturer complied with Treble’s requirements, but feel free to go build them yourself and give it a shot!
Please note that Android 12 (and by-proxy Android 13) diverged GSI and Emulator targets. Emulator targets reside in
lineage_sdk_$arch, while GSI targets reside in
Bilingual? Trilingual? Anything-lingual?
If you think you can help translate LineageOS to a different language, jump over to our wiki and have a go! If your language is not supported natively in Android, reach out to us on Crowdin and we’ll take the necessary steps to include your language. For instance, LineageOS is the first Android custom distribution that has complete support for the Welsh (Cymraeg) language thanks to its community of translators.
Please, contribute to translations only if you are reasonably literate in the target language; poor translations waste both our time and yours.
Added 20 devices
|Device name||Wiki||Maintainers||Moved from|
|ASUS Zenfone 5Z (ZS620KL)||Z01R||rohanpurohit, Jackeagle, ThEMarD||19.1|
|F(x)tec Pro¹||pro1||BadDaemon, bgcngm, intervigil, mccreary, npjohnson, tdm||19.1|
|Google Pixel 4a 5G||bramble||aleasto, mikeioannina||19.1|
|Google Pixel 4a||sunfish||PeterCxy, cdesai, mikeioannina||19.1|
|Google Pixel 4||flame||cdesai, Eamo5, mikeioannina, npjohnson||19.1|
|Google Pixel 4 XL||coral||cdesai, Eamo5, mikeioannina, npjohnson||19.1|
|Google Pixel 5a||barbet||aleasto, mikeioannina||19.1|
|Google Pixel 5||redfin||aleasto, mikeioannina||19.1|
|Lenovo Z5 Pro GT||heart||themard, optionaltoast||19.1|
|Lenovo Z6 Pro||zippo||Lucchetto, themard||19.1|
|Motorola edge 20||berlin||npjohnson, SGCMarkus||19.1|
|Motorola edge 30||dubai||themard, sb6596||19.1|
|Motorola edge||racer||erfanoabdi, Jleeblanch, SyberHexen||19.1|
|Motorola edge s / moto g100||nio||dianlujitao||19.1|
|Motorola moto g 5G / one 5G ace||kiev||SyberHexen, Jleeblanch||19.1|
|Motorola moto g 5G plus / one 5G||nairo||SyberHexen||19.1|
|Motorola moto g6 plus||evert||Jleeblanch||19.1|
|Motorola moto g7 play||channel||SyberHexen, deadman96385, erfanoabdi, npjohnson||19.1|
|Motorola moto g7 plus||lake||Jleeblanch, npjohnson||19.1|
|Motorola moto g7 power||ocean||SyberHexen, erfanoabdi, npjohnson||19.1|
|Motorola moto g7||river||erfanoabdi, npjohnson, SyberHexen||19.1|
|Motorola moto x4||payton||erfanoabdi, ThEMarD||19.1|
|Motorola moto z3 play||beckham||Jleeblanch||19.1|
|Motorola one power||chef||Hasaber8||19.1|
|Nubia Mini 5G||TP1803||ArianK16a, npjohnson||19.1|
|OnePlus 5T||dumpling||trautamaki, snc||19.1|
|OnePlus 7 Pro||guacamole||LuK1337, Tortel||19.1|
|OnePlus 7T Pro||hotdog||LuK1337||19.1|
|OnePlus 8 Pro||instantnoodlep||LuK1337||19.1|
|OnePlus 9||lemonade||mikeioannina, tangalbert919, ZVNexus||19.1|
|OnePlus 9 Pro||lemonadep||LuK1337, bgcngm, mikeioannina||19.1|
|Razer Phone 2||aura||mikeioannina, npjohnson||19.1|
|Samsung Galaxy Tab S5e (LTE)||gts4lv||bgcngm, LuK1337||19.1|
|Samsung Galaxy Tab S5e (Wi-Fi)||gts4lvwifi||LuK1337, bgcngm||19.1|
|Sony Xperia 1 II||pdx203||hellobbn||19.1|
|Xiaomi Mi 8||dipper||infrag||19.1|
|Xiaomi Mi 8 Explorer Edition||ursa||bgcngm||19.1|
|Xiaomi Mi 8 Pro||equuleus||bgcngm||19.1|
|Xiaomi Mi 8 SE||xmsirius||uixdess||19.1|
|Xiaomi Mi 9 SE||grus||SebaUbuntu||19.1|
|Xiaomi Mi CC 9 / Mi 9 Lite||pyxis||ceracz||19.1|
|Xiaomi Mi MIX 2S||polaris||bgcngm||19.1|
|Xiaomi Poco F1||beryllium||bgcngm, warabhishek||19.1|
Added 19.1 devices
|Device name||Wiki||Maintainers||Moved from|
|ASUS Zenfone Max Pro M1||X00TD||Vivekachooz||18.1|
|Dynalink TV Box (4K)||wade||npjohnson, bgcngm, stricted, webgeek1234, deadman96385, trautamaki, luca020400, aleasto|
|Essential PH-1||mata||haggertk, intervigil, npjohnson, rashed||18.1|
|Fairphone 3||FP3||dk1978, teamb58||18.1|
|Google ADT-3||deadpool||npjohnson, stricted, webgeek1234, deadman96385, trautamaki, luca020400, aleasto|
|Motorola edge 20 pro||pstar||electimon, SGCMarkus|
|Nubia Z17||nx563j||BeYkeRYkt, Cyborg2017||17.1|
|Nubia Z18 Mini||nx611j||Cyborg2017|
|OnePlus Nord N200||dre||tangalbert919|
|Razer Phone||cheryl||mikeioannina, npjohnson||18.1|
|Samsung Galaxy A52 4G||a52q||Simon1511|
|Samsung Galaxy A72||a72q||Simon1511|
|Samsung Galaxy Note10+ 5G||d2x||Linux4||18.1|
|Samsung Galaxy Note10||d1||Linux4||18.1|
|Samsung Galaxy Note10+||d2s||Linux4||18.1|
|Samsung Galaxy S10 5G||beyondx||Linux4||18.1|
|Samsung Galaxy S10||beyond1lte||Linux4||18.1|
|Samsung Galaxy S10+||beyond2lte||Linux4||18.1|
|Samsung Galaxy S10e||beyond0lte||Linux4||18.1|
|Samsung Galaxy Tab S6 Lite (LTE)||gta4xl||haggertk, Linux4||18.1|
|Samsung Galaxy Tab S6 Lite (Wi-Fi)||gta4xlwifi||Linux4, haggertk||18.1|
|Sony Xperia XZ2||akari||dtrunk90||18.1|
|Sony Xperia XZ2 Compact||xz2c||dtrunk90||18.1|
|Sony Xperia XZ2 Premium||aurora||dtrunk90||18.1|
|Sony Xperia XZ3||akatsuki||dtrunk90||18.1|
|Xiaomi Mi 10 Lite 5G||monet||xSylla||18.1|
|Xiaomi Mi 10T Lite / Mi 10i / Redmi Note 9 Pro 5G||gauguin||Lynnrin||18.1|
|Xiaomi Mi 10T / Mi 10T Pro / Redmi K30S Ultra||apollon||Ramisky, SebaUbuntu||18.1|
|Xiaomi Mi 5||gemini||bgcngm, ikeramat||18.1|
|Xiaomi Mi 5s Plus||natrium||LuK1337||18.1|
|Xiaomi Mi 6||sagit||ArianK16a||18.1|
|Xiaomi Mi A1||tissot||abhinavgupta371||18.1|
|Xiaomi POCO F2 Pro / Redmi K30 Pro / Redmi K30 Pro Zoom Edition||lmi||SebaUbuntu||18.1|
|Xiaomi POCO F3 / Redmi K40 / Mi 11X||alioth||SahilSonar, SebaUbuntu, althafvly||18.1|
|Xiaomi POCO M2 Pro / Redmi Note 9S / Redmi Note 9 Pro / Redmi Note 9 Pro Max / Redmi Note 10 Lite||miatoll||dereference23||18.1|
|Xiaomi POCO X3 NFC||surya||Shimitar, TheStrechh||18.1|
|Xiaomi POCO X3 Pro||vayu||SebaUbuntu||18.1|
|Xiaomi Redmi 7||onclite||Dhina17||18.1|
|ZUK Z2 Plus||z2_plus||DD3Boh||18.1|
Added 18.1 devices
|Device name||Wiki||Maintainers||Moved from|
|Motorola moto z2 play||albus||marcost2||15.1|
|Motorola moto z play||addison||marcost2, npjohnson||14.1|
|NVIDIA Jetson (Nano / Nano 2GB) [Android TV]||porg||webgeek1234, npjohnson||17.1|
|NVIDIA Jetson (Nano / Nano 2GB) [Tablet]||porg_tab||webgeek1234, npjohnson||17.1|
|NVIDIA Shield TV (2015 / 2015 Pro / 2017 / 2019 Pro) / Jetson TX1 [Android TV]||foster||webgeek1234, npjohnson||17.1|
|NVIDIA Shield TV (2015 / 2015 Pro / 2017 / 2019 Pro) / Jetson TX1 [Tablet]||foster_tab||webgeek1234, npjohnson||17.1|
|Sony Xperia Tablet Z2 LTE||castor||snc||17.1|
|Sony Xperia Tablet Z2 Wi-Fi||castor_windy||snc||17.1|