Основы AOSP или есть на нем подводные камни?
Говоря уже о Snowdroid - проекте, который обещал дать новую жизнь ОС Android без установки Google-сервисов, хочется поговорить, что такое AOSP, с чем его едят и с какими подводными камнями приходится столкнуться на этапе разработки и использования.
Android Open Source Project (AOSP) - открытая версия операционной системы Android с открытым исходным кодом, где содержится только все необходимое без тесной интеграции к сервисам.
В основу AOSP лежит не только юзерлэнд, это ещё и:
* Android Runtime (ART) - среда выполнения приложений; * виртуальная машина Java; * библиотека Bionic, необходимая для нативной поддержки языков программирования C и C++; * базовая поддержка оборудования, включая периферию.
Драйвера, ядро и прослойки аппаратной абстракции (HAL) остаются сторонними, но несмотря на это, они не могут работать отдельно, только если не рассматривать кастомные прошивки на основе GSI.
Но главными проблемами операционной системы все ещё остаются плохая поддержка как со стороны производителей устройств, так и со стороны Google, которая в свою очередь является одной из главных членов альянса Open Handset Alliance. И это не только обновления, но и в целом поддержка кастомных прошивок с легаси-приложениями в придачу.
К слову, некоторые крупные вендоры, в частности Samsung, Xiaomi и др., либо используют замудренные способы разблокировки устройств в угоду безопасности, либо публикуют прошивки с несвободными ядрами, что тоже важно учитывать, если собираетесь создавать прошивки на базе Android.
Есть ещё такой козырь - блобы, по сути это те же проприетарные двоичные файлы (не ядро), которые позволяют системе корректно работать с аппаратным обеспечением, но там тоже есть один подвох - они привязаны либо к конкретным характеристикам железа, либо к конкретному чипсету. Они также могут быть привязанными к конкретному системному приложению напрямую и иметь исходный код. Чаще всего они закрыты под NDA-соглашениями, но есть исключения, когда их разрешено публиковать.
В целом, если закрывать на этом глаза, то создавать прошивки кое-как можно, но в таком случае никто не гарантирует, что все будет работать корректно.
Для начала я описал в одном документе, как построить свой Android, и затрагивались в основном только версии Android с 4.0 по 6.0.1, оглядываясь без сторонних блобов. Здесь же я вам посоветую прочитать кингу на GitHub.
В целом, да, хватило бы смелости переделать легаси и подгонять прошивку в рамках проекта Snowdroid на свой телефон 9-летней давности, но об этом я расскажу в другой раз.