Changelog 27 - Thriving Thirteen, Amazing Aperture, Careful Commonization

Written on December 31, 2022 by Nolen Johnson (npjohnson)

hero

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 lineage-20.0.

New Features!

  • 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.
  • Our adb_root service 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.

Amazing Aperture

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!

aperture

Careful Commonization

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
Qualcomm MSM8996 3.18 18.1
Qualcomm MSM8998 4.4 20
Qualcomm SDM845 4.9 20
Qualcomm SM8150 4.14 20
Qualcomm SM8250 4.19 20
Qualcomm SM8350 5.4 20

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!

Deprecations

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!

Generic Targets

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 lineage_gsi_$arch.

Translations

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.

Build roster

Added 20 devices

Device name Wiki Maintainers Moved from
ASUS Zenfone 5Z (ZS620KL) Z01R rohanpurohit, Jackeagle, ThEMarD 19.1
Fairphone 4 FP4 mikeioannina  
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 5 cheeseburger trautamaki 19.1
OnePlus 5T dumpling trautamaki, snc 19.1
OnePlus 6 enchilada LuK1337 19.1
OnePlus 6T fajita EdwinMoq 19.1
OnePlus 7 guacamoleb shantanu-sarkar 19.1
OnePlus 7 Pro guacamole LuK1337, Tortel 19.1
OnePlus 7T hotdogb LuK1337 19.1
OnePlus 7T Pro hotdog LuK1337 19.1
OnePlus 8 instantnoodle jabashque 19.1
OnePlus 8 Pro instantnoodlep LuK1337 19.1
OnePlus 8T kebab 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