Google планира да премине към модел на разработка „първо нагоре“ за функциите на ядрото на Linux в Android от 2023 г. Прочетете, за да научите повече.
Когато видите думите „Android“ и „фрагментиране“ в едно и също изречение, умът ви вероятно веднага ще се насочи към Диаграма за разпространение на версиите на Android. Има няколко субекта, които повечето хора сочат с пръст, когато се оплакват, че актуализациите на операционната система Android се разпространяват бавно навсякъде, но Google може да направи толкова много, сила OEM производителите да разработват и пускат актуализации по-бързо. Това, което Google може да направи обаче, е да намали времето за разработка и по този начин разходите за пускане на актуализации.
Първата голяма инициатива в дългосрочния проект на Google за намаляване на тежестта на развитието е Проект Treble. Обявен заедно с Android 8.0 Oreo през 2017 г., Project Treble модулира Android чрез разделяне на рамката на ОС от внедряването на доставчика (HAL и специфичното за устройството разклонение на ядрото на Linux). Това улесни OEM производителите на Android да пребазират своите операционни системи върху най-новата рамка на AOSP, тъй като те можеха да стартират най-новата версия, без да се нуждаят от актуализиран код от доставчици. В резултат на това производителите на оригинално оборудване биха могли да подготвят своите персонализирани разклонения на Android по-бързо от преди и като разширение да пуснат основни актуализации на операционната система по-бързо.
Следващата стъпка в плановете на Google беше да рационализира доставката на актуализации на ключови компоненти на Android. Google нарече тази инициатива Основна линия на проекта когато го представи заедно с Android 10 през 2019 г. Google по същество пое контрола върху ключови компоненти на операционната система и забрани на OEM производителите да ги модифицират. След това те настройват механизъм за доставка чрез Google Play, така че да могат дистанционно да пускат актуализации на тези ключови компоненти, без да се налага да чакат OEM производителите да приложат самите корекции. Mainline значително подобри колко бързо устройствата получават актуализирани версии на важни OS компоненти, като на свой ред подобри сигурността на екосистемата на Android като цяло.
Но това, което предстои, е още по-важно и може би е най-важната част от дългосрочната стратегия на Google. Когато посочихме по-рано как Treble модулира Android, като отдели рамката на OS от внедряване на доставчик, ние включихме „специфичния за устройство вилица на ядрото на Linux“ като част от този доставчик код. Всеки, който е запознат с Linux за настолни компютри, ще разпознае проблем там: Защо се смесва с кода на доставчика със затворен код? Проблемът е, че докато устройствата с Android се доставят с ядрото на Linux, това ядро включва a много на код извън дървото.
Как стигнахме до там? Проблемът, както е описан от софтуерния инженер на Google Тод Кьос на тазгодишната конференция на водопроводчиците на Linux (чрез ArsTechnica), защото основното ядро на Linux се разклонява няколко пъти, преди да се достави на устройство с Android. Google разклонява всяко основно Linux ядро в "Общо ядро на Android" клон, който следи отблизо основната версия, но добавя няколко специфични за Android корекции. Доставчици на SoC като Qualcomm, MediaTek и Samsung след това се разделят че ядро за всеки SoC, който правят. След това OEM производителите вземат това специфично за SoC ядро и добавят допълнителни пачове, за да внедрят поддръжка за конкретния хардуер, който искат да доставят.
Поради тези промени, "до 50% от кода, работещ на устройство, е код извън дървото (не от общи ядра на Linux или AOSP)“, според Google. Голямото количество код извън дървото на тези устройства прави обединяването на промените нагоре по веригата дълъг и предизвикателен процес. Това е вредно за сигурността на устройството, тъй като производителите на оригинално оборудване трябва да работят по-усилено, за да внедрят кръпки за уязвимости, които са открити в ядрото на Linux. Освен това, това оставя повечето Android устройства с версии на ядрото от преди години, което означава, че пропускат новите функции на ядрото на Linux.
В опит да се справи с този проблем, Google работи върху Android Generic Kernel Image (GKI), което по същество е ядро, компилирано направо от ACK клон. GKI изолира персонализирането на доставчика на SoC и OEM към плъгин модули, елиминира кода извън дървото и позволява на Google да изпраща актуализации на ядрото директно до крайния потребител. Повече от година Google работи върху начин за доставяне на GKI актуализации чрез Play Store, чрез използване на модул Mainline.
Според нашите източници, устройства, които стартират с Android 12 и се доставят с ядрото на Linux 5.10 трябва да разполагат с подписано от Google изображение за зареждане. Google е много собствен Pixel 6 серията ще стартира с Android 12 от кутията и ще се доставя с Linux ядро 5.10, така че двата телефона може да са първите устройства на масовия пазар, които се доставят с GKI.
В допълнение, Тод Кьос от Google разкри, че компанията планира да премине към модел на разработка „първо нагоре“ за нови функции на ядрото на Linux. Това ще помогне на Google да гарантира, че новият код се приземява първо в основното ядро на Linux, което ще намали бъдещия технически дълг, натрупан от повече кодове извън дървото, кацащи на устройства с Android.
На конференцията на водопроводчиците на Linux тази седмица Kjos каза, „Тъй като модулите извън дървото са наистина важни за нашия случай на употреба, ние очакваме, че винаги ще имаме набор от експорти и някои неща, които са различни или в допълнение към това, което е нагоре по веригата, но целият този проект е многогодишен проект, който работи за премахване на възможно най-много кръпки извън дървото и съгласуване, доколкото е възможно, с нагоре по течението." Google има за цел да завърши работата си за надграждане на съществуващи функции и изолиране на промените на доставчиците до края на 2022 г. и от 2023 г. компанията планира да възприеме този модел на развитие „първо нагоре по веригата“, за да избегне подобни проблеми в бъдеще.