January 2, 2019

Что мы можем увидеть в Android

После непродолжительного отдыха, во время которого единственным моим занятием было залипание в YouTube, резко захотелось о чем-нибудь написать. Сегодня хочу порассуждать на тему возможного дальнейшего развития мобильной операционной системы Android.

В августе прошлого года вместе с релизом Android Pie пользователи получили обновленный интерфейс. То, как выглядит операционная система на данный момент, меня невероятно радует. Больше скруглений, приятный шрифт Google Sans, Material Design второй версии. Стоит отметить множественное применение искусственного интеллекта, хоть и его работы я особо не замечал. Тем не менее, адаптивная яркость регулируется рывками, функции в интерфейсе копирования часто ошибаются, карточки с подсказками в лаунчере зачастую бесполезны, копирование текста из меню многозадачности работает исключительно с английским системным языком, заменяя кириллический шрифт аналогами из латиницы, особого прироста по автономности тоже не видно. Проблемы имеются, но их все же меньше чем преимуществ. Также радует появление темной темы и то, как Google добавляет ее поддержку в свои приложения. Одним словом, Android заметно преображается, набирая в стабильности, производительности и красоте.

Но при этом зеленый робот до сих пор тянет за собой болячки былых времен: фрагментацию и отсутствие действительно хорошего софта. Если вторая проблема не совсем относится к гуглу и решается не за один присест, то с первой корпорация добра активно борется.

В фрагментации Android «принимают участие» 2 вещи – разработчики драйверов (т.е. чипмейкеры) и сторонние оболочки. Эти проблемы должен решать Project Treble, но, как мы видим, у него не особо это получается. Да, теперь мы можем запустить практически любой образ системы на самом разном железе, но в будущем неизвестно как поведет себя устаревший Vendor с новыми версиями операционки. Также Treble не решает проблему с адаптаций оболочек (MIUI, Samsung Experience, Flyme и т.д.) под новые версии Android. Именно эта вещь и задерживает выход обновлений на данный момент (если не брать во внимание весь маркетинговый bullsh*t).

Но и ее в скором времени собираются решить с помощью еще не анонсированного APEX. По сути, его работа представляет собой подобие Magisk, где Android будет разделен на множество модулей, отделенных от оболочки. OEM производители смогут обновлять версию Android, увеличивая стабильность, безопасность устройства, добавляя API для работы новых функций, а затем спустя полгода (ха-ха) уже обновлять саму оболочку. Также, если производитель не захочет дальше поддерживать смартфон, Google сможет самостоятельно обновить версию системы/патч безопасности.

Вторую проблему с софтом решить не так уж и просто, т.к разработчиков не заставить клепать приложения под платформу. В сравнении с iOS, на Android очень мало профессионального софта. На яблочной ОС есть Garage Band, LumaFusion, ProCreate и так далее. Да, можно найти аналоги этих программ и на зеленом роботе, но все они:

а) гораздо медленнее работают

б) сильно проигрывают в функционале (в том же LumaFusion можно импортировать lut файлы для цветокоррекции видео)

Именно поэтому я вижу 2 пути решения, каждый из которых достаточно сложен.

1) Портирование iOS приложений на Android.

Когда то давно существовал Apportable SDK, позволяющий быстро портировать (в основном игры) проекты с яблочной системы на робота. Но это было еще до того, как Apple перешла на Swift, который конечно же не портируется на Android. Вообще, Google разработала SDK Flutter, который работает на языке программирования Dart. Преимуществом этого средства разработки является то, что он дает возможность писать приложения одновременно под Android и iOS. Даже интерфейс будет автоматически адаптироваться под нужную платформу. Но на данный момент он подходит исключительно для разработки чего-то не ресурсоемкого, по типу приложения для интернет-магазина. Да и неизвестно сколько еще времени пройдет, пока разработчики начнут что-то разрабатывать на нем.

2) Запуск Linux приложений.

Так как ядро Android основано на ядре Linux, то очень хотелось бы запускать полноценный Linux с его софтом. Это было бы очень удобно делать на планшетах или в том же "Десктопном режиме", благо мощности современных флагманов позволяют. Но чтобы делать это наиболее производительно, необходимо иметь в основе полноценное ядро Linux и нормальную графическую подсистему. Изначально Android работал с простым выводом изображения в FrameBuffer Device для доступа к видеопамяти. Затем, спустя много лет совместной работы Google Chrome OS и Collabora был представлен Mainline Graphics Stack (MGS). Если не вдаваться в очень непонятные технические подробности, то данный графический стек позволяет использовать свободные драйвера (Freedreno/MESA) не только на Android, но и на Linux и Chrome OS. Тем самым вы можете запустить любые графические процессоры (как десктоптные, так и в SOC) в Linux и Android. Благодаря этому появилась возможность перевести Android на полноценное ядро пингвина. Затем, можно попробовать запустить и полноценный Linux – с множеством его программ. Да, их конечно все еще очень мало, но есть тот же пакет Libre Office, Gimp, полноценные браузеры.

Также, присутсвуют слухи о возможном переходе графической системы Android с OpenGL на Vulkan, что должно положительно сказаться на производительности и энергоэффекивности девайсов.