Android 10 с открытым кодом на Orange Pi: возможна ли стабильная работа

Меня зовут Марина Сергиенко, я Team Lead, Engineering, Consultant в компании GlobalLogic уже 10 лет, последний год занимаю позицию Team Lead. Сегодня хочу рассказать про один из некоммерческих проектов, над которым работали инженеры из моей команды.

Данная статья — это систематизация опыта, технических решений и навыков, которые команда получила в ходе портирования актуальной версии open source системы Android на одноплатный компьютер Orange Pi.

Статья будет полезна инженерам, занимающимся вопросами интеграции и портирования ОС, энтузиастам еmbedded-технологий, специалистам, имеющим дело с микрокомпьютерами типа Raspberry Pi.

Зачем нам Orange Pi

Чуть больше года назад, когда в руки попала плата Orange Pi, нас заинтересовала возможность запустить на ней последний Android (тогда это была версия P). Собралась команда из пяти единомышленников (embedded-инженеров), и мы стартовали небольшой проект для проверки концепции.

Сегодня на рынке нет недорогого решения с современной версией Android и периферией, привычной любому пользователю. Что мы понимаем под «нет платформы»?

Во-первых, цена. Она определяет доступность. Есть множество производителей, предлагающих решения в разном ценовом диапазоне. И в Android она высокая. Во-вторых, поддержка и актуальность. Часто производители и комьюнити не успевают за тенденциями рынка. А поддержка последней версии Android для многих платформ вообще отсутствует.

С чего начинали

1. Выбрали операционную систему.

Разумеется, определились с интересующей нас операционной системой — Android. На текущий момент это самая популярная ОС для портирования мобильных устройств.

2. Исследовали рынок одноплатных компьютеров.

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

На текущий момент индустрия одноплатных компьютеров развивается интенсивно. В таблице ниже мы собрали для наглядности некоторые разработки и модели. Отбирали по принципу: все имеют на борту 2 ГБ оперативной памяти. Особое внимание обратим на колонку Price. Она не отражает полного состояния отрасли, но хорошо иллюстрирует диапазон цен: есть решения от десятков до сотен долларов.

HW Comparison Table, 2 Gb DDR3

BoardsSoCGPUPriceAvailable Android
Raspberry Pi 4 Model BBroadcom BCM2711Cortex-A72 Quad coreVideoCore VI$52.97Android 7.1.2
Banana Pi M2 Ultra
Allwinner R40Cortex A7 Quad coreMali-400MP2$56.99Android 7.1.2
ODROID-C2Amlogic S905Cortex-A53 Quad coreMali-450$85.40Android 8.1
NanoPi K2Amlogic S905Cortex-A53 Quad coreMali-450MP$53.00Android 8.1
PINE A64+Amlogic S905Cortex A53 Quad-CoreMali-400MP2 $29.00Android 7.0
Orange Pi 3Allwinner H6Cortex-A53 Quad coreMali-720$34.90Android 7.0
HiKey 960HiSilicon Kirin 9604xCortex-A73, 4xCortex-A53Mali-G71MP8$239.00Android 9.0
SanCloud BeagleBone EnhancedTI AM3358Cortex-A8SGX530$69.00Custom Android for BBB

Что это дает? Гибкость. Пользователь с любым бюджетом соберет для себя «умное» устройство. Еще одна графа в таблице показывает версию ОС Android, которую можно запустить на данной платформе. От чего она зависит и откуда берется? Все просто: версия предоставляется либо продавцом/производителем для популяризации своей платформы, либо от open source community.

К чему были эти теоретические отступления? У нас есть новая версия Android, одноплатный компьютер, и год назад мы решили портировать этот Android на одноплатный компьютер. Мы не первые, кто решил это сделать. Но есть нюанс: наша команда определила новые требования. Чтобы было интереснее!

3. Формирование требований и постановка задачи:

  1. Использовать только последнюю версию Android, которая актуальна на текущий момент. Что надо, чтобы портировать ее? Настроить аппаратно-зависимые части, bootloader, адаптировать ядро Linux, сконфигурировать уровень HAL, сервисы.
  2. Платформа должна быть дешевой. И, разумеется, содержать ресурсы, достаточные, чтобы Android мог работать. 640 килобайт, конечно, хватит для всех, но не для Android 10.
  3. Использовать только open source проекты из открытых источников. Итоговый проект должен быть открыт и доступен каждому. Плюс важен аспект безопасности. Можно ли доверять данному продукту? Например, когда мы скачиваем Android с официального сайта Orange Pi, получаем только бинарный файл. Содержимое этого файла никому не известно. И всегда остается доля сомнений. Хотелось бы избежать этого: люди должны понимать, что проекту можно доверять.
  4. Проект должен собираться «из коробки». Ни для кого не секрет: чтобы собрать Android, сначала нужно собрать ядро Linux, bootloader, библиотеки и сервисы самого Android. Это все сконфигурировать, адаптировать аппаратно-зависимые части, сложить все в образ и записать на носитель информации. После этого Android заработает. Нетривиальная задача для неподготовленных людей.
  5. Последнее в списке, но не по важности. Получить удовольствие от процесса.

На этом теоретический этап подошел к концу. Теперь рассмотрим, а как же было на практике? Весь процесс мы разбили на шаги.

Шаг 1. Выбор платы

После сравнения вариантов мы остановились на Orange Pi Plus 2E.

Orange Pi Plus 2E (Shenzhen Xunlong Software)

Потому что:

  • она дешевая;
  • есть активное сообщество, которое может помочь;
  • относительно неплохое «железо» (32-разрядный процессор, 4-ядерный с частотой 1.6 ГГц, графический процессор Mali-400, 2 ГБ ОЗУ и 16 ГБ MMC, интерфейсы: USB для подключения внешней периферии, Wi-Fi и Ethernet).

Шаг 2. Критерии и постулаты разработки

  1. Все, что исправляем или добавляем в сторонние репозитории, нужно коммитить в upstream. Если находим ошибку и требуется фикс в ядре — предлагаем в mainline Linux kernel. Если делается фикс в Android Open Source Project от Google — аналогично. В течении разработки, особенно в активной фазе, активно предлагаем наши патчи в upstream.
  2. Создавать форки других проектов только при необходимости — если нужно добавить специфические для платформы вещи.
  3. Держать код чистым. Это понятные структурированные описания изменений. Не всегда получается из-за спешки, но стараемся обращать на это внимание.
  4. Максимально избегать использования проприетарных проектов.

Шаг 3. Процесс

Google предлагает нам следующие шаги по кастомизации Android под новую платформу:

За этими словами скрываются такие действия:

  1. Создать директорию для платформы (она должна располагаться в папке device): с наименованием вендора и названием продукта. Там следует разместить vendor setup файл, в котором будет задаваться название сборки.
  2. Добавить make-файлы для сборки продукта. Они содержат название архитектуры, подключаемые модули и конфигурационные файлы. Кроме того, overlay config file, который настраивает ресурсы стандартных компонентов Android.
  3. Доработать Android-манифест, чтобы обеспечить сборку «из коробки». Включить сборку ядра и bootloaders.

GloDroid основывается на AOSP от Google и включает репозитории с таблицы ниже. Мы сделали make-файлы для конфигурации Android: какую разновидность хотим собрать (TV, Automotive, для других задач), поддержку каких HAL/сервисов включить (например, Wi-Fi и Bluetooth).

Что получилось в итоге

В отдельном репозитории (скачивается в директорию prebuilts) мы храним уже собранные сторонние приложения (файлы APK), которые могут сразу инсталлироваться. Загвоздка в том, что Play Market не входит в AOSP, за него необходимо либо платить, либо проходить сертификацию у Google. Мы нашли выход и использовали F-Droid для установки и тестирования приложений. Также добавили тулчейн, которым собираем ядро, и U-Boot. Инструменты для сборки остальных пакетов входят в состав AOSP.

Вернемся к вопросу о безопасности бинарных файлов. В частности, поговорим о графических драйверах. Их поставляет компания ARM для своих графических процессоров. Это проприетарный драйвер, а мы договаривались не использовать такие решения.

Фаза поддержки у них завершилась в 2018 году, до этого они активно выпускали обновления. Это немного огорчило, но еще больше огорчились, когда обнаружили вызов таких функций, как 256-битное шифрование, и работу с сокетами. Повезло, что комьюнити приступило к реверс-инжинирингу самого драйвера. Драйвера для видеопроцессора мы также получили от сообщества благодаря тому же реверс-инжинирингу. С этим разобрались.

Одна из наших целей — стабильная и «плавная» работа Android на этой плате. UI не должен тормозить. Для этого мы регулярно изучаем, что поддерживается, и оптимизируем графическую обработку. То есть это включает профилирование, кеширование при необходимости. Часть задач мы успешно решили, что-то еще предстоит в будущем.

Рассмотрим, над какими компонентами нам приходится больше всего работать.

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

  • DRM-микшер, который отвечает за взаимодействие с вспомогательным процессором. Комьюнити не приняло три нужных нам патча, поэтому храним их в нашем репозитории.
  • Проект Mesa, который реализует OpenGL Stack. Он динамично развивается последние три года. Реализует OpenGL, GL ES, Vulkan и позволяет использовать различные средства аппаратного ускорения. Драйвера от Mesa часто функциональней и лучше, чем оригинальные драйвера от производителей «железа». Практически весь проект сделан с помощью реверс-инжиниринга.
  • Video Engine позволяет выполнять аппаратное кодирование и декодирование видео. Google уже сделал под него базовую поддержку, но не дал всех компонентов, чтобы склеить воедино. На данный момент поддержку видеодекодирования мы не реализовали.
  • Аудио. Получилось поднять звук «из коробки». Мы используем tinyhal — открытый проект на GitHub.

А что со стабильностью

Мы работаем над исправлением существующих и новых багов, которые появляются как регрессия из-за некоторых улучшений сторонних репозиториев. Планируем поднять сервер Continuous Іntegration, на котором все изменения будут автоматически собираться. Будут запускаться тесты и генерироваться отчет валидации для любого члена сообщества, который захочет участвовать в проекте. Тем самым планируем немного разгрузить себя и улучшить качество продукта. Для тестирования будем использовать VTS/CTS. Это наборы тестов, которые предоставляет Google.

Также, разумеется, ручное тестирование. Тут надеемся получить от сообщества помощь. Кстати, мы ее уже получаем — нам пишут люди из разных локаций.

На самом деле очень многое в проекте — результат работы людей со всего мира, которые занимаются улучшением Linux kernel.

Итоги

На этом слайде показано, сколько усилий было потрачено на различные активности.

Мы написали около 1350 строк make-файлов для конфигурации Android. Примерно 300 строк C/C++ кода для улучшения его работы. Написание кода у нас занимало примерно 1% времени. Make-файлы — около 5% времени. Для наглядности: за 3-4 месяца активной фазы разработки на кодирование было потрачено 5 дней. Еще 24% времени уходило на сборку и отладку.

Android OS — живая и постоянно изменяющаяся система. То, что было актуально для версии 8, зачастую неактуально для версии 10. Приходится разбирать исходный код, и на это идет много времени. Поэтому, кроме решения практической задачи портирования, работа над проектом здорово прокачала навык самообразования:

  • глубоко погрузились в официальную документацию Google, поняли ее логику;
  • руками пощупали существующие AOSP-репозитории. Разобрались, как они устроены, поскольку там далеко не все задокументировано.

Мы выполнили все поставленные цели. Реализовали поддержку Android для платформы Orange Pi Plus 2E, сделали это достоянием сообщества и получили массу удовольствия.

Итоговый проект доступен на GitHub. Вот его wiki.

Если стало интересно и хотите приобщиться к нашей команде — мы рады помощи!

LinkedIn

50 комментариев

Подписаться на комментарииОтписаться от комментариев Комментарии могут оставлять только пользователи с подтвержденными аккаунтами.

Вопрос к топикстартеру, а как у этой платы с проблемами, которые есть у Raspberry PI 3? А именно работа с SD карточкой и сериал портом ? В проекте используем PI3 наблюдаем частый выход из строя карточек, плюс низкая скорость записи. Сериал порт часто зависает. В PI4 вроде бы эти проблемы решены

Малинка на какой ОС крутится? Очень часто причиной выхода из строя карточек является слишком большое количество записи данных на нее, из-за того что те же линуксы по-умолчанию монтируют, например, ту же /tmp на флешку. Лучше перемещать такие вещи в рамдиск.
Android, по идее, из коробки не так активно флешку насилует.

Скорее всего так и есть. ОС у нас Linux.

мы с такими проблемами на OPI2 не столкнулись, сериал порт у нас работает без проблем, а как плата может повлиять на SD карту? вможет просто карточки не очень по качеству?

может. У RASPI 3 архитектурная реализация кривая, если интересно почитайте. habr.com/ru/post/440584

да, очень интересно, спасибо. Мы как раз думаем над поддержкой нашей платформы и для распберри тоже.

А по поводу SD карточек, то оказывается есть разные SD карты , мы сейчас планируем перейти на карты с поддержкой SMART что бы можно было мониторить их как то.

Поэтому мы тоже протестируем OPI2, может получится решить проблемы.

1. Як не крутив, не зібралося (ubuntu 20.04) Поради розробників не допомогли
2. Викладена версія під orange pi 3 не поміщається на emmc 8 Gb
3. Запустивши з sd карти, я отримав неймовірно повільну систему

под orange pi 3 мы пока работаем — проект живой, и пока не получается ему уделять достаточно много времени, поскольку это волонтерская работа :), но мы очень рады получить фидбек, вопросы и помощь, возможно вместе мы сможем продвигаться быстрее :)

Сегодня на рынке нет недорогого решения с современной версией Android и периферией, привычной любому пользователю.

Як це немає? developer.android.com/things

Android 8.1, 80£, not in stock

ну под описание не дорого эти киты как-то не очень подходят :)

Підтримується Raspberry Pi 3 Model B, 35€

Я давно делал примерно такое же, но конечно с нормальными драйверами.
Под терминалы вполне себе решение, андроид неплохо в киоск умеет.

Он динамично развивается последние три года.

Откуда дровишки? Он динамично развивается последние лет 15-20, когда оно ещё не было Mesa3D.

Драйвера от Mesa часто функциональней и лучше, чем оригинальные драйвера от производителей «железа». Практически весь проект сделан с помощью реверс-инжиниринга.

Нет. Большинство драйверов как раз поддерживаются самими производителями, Broadcom, Intel, AMD, VMWare, и даже nVidia

В общем поддерживаю комментарий про троллейбус из хлеба, в конце таких проектов накрывает пустота от которой становится тошно, вроде бы и сделали, но по большому счёту нахрен никому не нужно. Причём даже в опыт не запишешь, т.к. через год-два платформа будет другая, андроид будет другой, драйвера будут другие.

Тоже самое касается проприетарных графических драйверов? В чём смысл использовать недопродукты, но главное с открытым кодом? Я просто, как работник компании, которая является участником консорциума иногда вношу изменения в проприетарные драйвера для Mali и не вижу в их использовании ничего плохого. Есть общие codereview board, репозитории и т.п. Причём в консорциуме таким образом работают тысячи человек, драйвера вылизываются максимально идеально, т.к. люди их используют в боевых условиях — медикал дивайсис, аутомотив, и т.д. Работать над реверс инжиниринговым продуктом — это та же пустота в конце, полная беcсмысленность, всегда будет отсталость и часто даже критическая. Такие продукты только для красноглазиков. Каждый год появляются новые чипы от Arm Norway, многоядерные старые, многоядерные для работы под Hypervisor’ом. TTM время очень дорого стоит. Использовать опенсоурс тут — это как имея возможность бегать, ты всегда выбираешь костыль или инвалидную коляску при выходе из дома. Не потому что есть ограничения, а потому что принцип.

Откуда дровишки? Он динамично развивается последние лет 15-20, когда оно ещё не было Mesa3D.

Скорее всего имеется в виду Panfrost, а не Mesa в целом.

Тоже самое касается проприетарных графических драйверов? В чём смысл использовать недопродукты, но главное с открытым кодом?

Кроме идейных соображений: независимость от производителя. В статье упоминается, что поддержка чипа закончилась.

Как минимум один разработчик Panfrost делает это за деньги, и один из заказчиков — компания разрабатывающая развлекательные системы для самолетов. Их интересует только часть функциональности, но они готовы платить, чтобы этот кусок еще работал N лет.

Скорее всего имеется в виду Panfrost, а не Mesa в целом.

Нет. См полную цитату:

Проект Mesa, который реализует OpenGL Stack. Он динамично развивается последние три года. Реализует OpenGL, GL ES, Vulkan и позволяет использовать различные средства аппаратного ускорения.
Кроме идейных соображений: независимость от производителя. В статье упоминается, что поддержка чипа закончилась.

:) Это не соответствует действительности. Поддержка есть до сих пор и она активна, просто мало кто в здравом уме покупает сегодня чипы с поддержкой OpenGL ES 2.0 первого поколения. Но тех, кто вляпался — поддерживают до сих пор.

Как минимум один разработчик Panfrost делает это за деньги, и один из заказчиков — компания разрабатывающая развлекательные системы для самолетов. Их интересует только часть функциональности, но они готовы платить, чтобы этот кусок еще работал N лет.

Где-то здесь испорченный телефон. У нас в репозитории utgard, midgard и bifrost. Да чего брать нас, если можно зайти на официальный сайт и увидеть:

developer.arm.com/...​ali-drivers/utgard-kernel

DX910-SW-99002-r10p0-00rel0.tgz GPU Linux Kernel Device Drivers r10p0-00rel0 (Released on 26th September 2019) 326 KB

Драйвер выпущенный 8-9 месяцев назад. GLES драйвера тоже постоянно обновляются даже для utgard.

Ну и производитель инфотеймента для самолётов, который не может себе позволить купить коммерческую лицензию на Mali GPU DDK с исходниками GLES драйверов — это просто смешно. Бинарники от производителя чипа можно получить бесплатно.

Где-то здесь испорченный телефон

Да, это я напутал. Доклад делал разработчик Panfrost, но история была о Vivante: www.youtube.com/...​watch?v=FvBv7j2PsJs&t=803

Є ще така причина використовувати опенсорс — щоб рік не бігати за розробником для виправлення критичної баги, бо всі зайняті сапортом великого клієнта.

Неплохая альтернатива вечнокипящему HiKey 960!
Пожалуй жмакну звездочку)

спасибо, именно дороговизна HiKey сподвигла нас покрутить головой вокруг :)

«Картинка с троллейбусом из буханки хлеба.png»

Побуду занудой, но зачем тут Андроид? Каков вообще практический смысл всего этого проекта?

На тот же Orange Pi Plus 2e ставится «настоящий» линукс. Более того, Raspberry Pi 4 Model B 2GB стоит примерно столько же (я беру цены украинских магазинов), при том что на него тоже ставится Линукс (и даже Win 10). Кое-кто из моих знакомых гоняет на таком девайсе сервер умного дома, написанный на .NET Core (с доступом к БД, REST интерфейсом и всей прочей мишурой)

А если мне нужен именно Андроид, то зачем мне, простите, «настоящий» линукс?

а зачем вам там андроид? какие юскейсы?

Мне — незачем, а вот рынку часто надо.
Эмулятор годится разве что картинки показывать, а с такой платкой вполне себе можно рабочий прототип собрать.

рабочий прототип чего? я не придалбываюсь, я реально хочу понять, как это можно использовать

Да чего угодно, где требуется вменяемый UI на больше чем один экран, с поддержкой самых разных устройств ввода, к которому не придется приучать пользователя заново. А если постараться, то и инфраструктура с обновлениями и магазином приложений. При этом все открыто не сильно хуже этих ваших линуксов 🤷‍♂️

Да чего угодно, где требуется вменяемый UI на больше чем один экран

Это круто, конечно, но это чип для set-top boxes, там поддержка LCD (TCON) и HDMI, но Display Engine один, поэтому либо то, либо то.

А если постараться, то и инфраструктура с обновлениями и магазином приложений. При этом все открыто не сильно хуже этих ваших линуксов

А дальше что? Зачем это всё?

Теоретично — ще одна ТБ-приставка, з усім набором андроїд програм.

их и так уже тьма. + есть же андроид тв, там своя специфика

Дальняя перспектива. Я вот столкнулся с тем, что некоторые коммерческие вендоры, похоже, перешли на стратегию Android first: вначале делается полная поддержка SoC для андроида, а поддержка «голого» Linux уже по мере наявности ресурсов. NXP, например, не предоставляет OpenGL драйвера для Xorg на iMX8, для Linux есть только Wayland или EGLFS. Если есть legacy платформа построенная на Xorg, то это проблема.

Я вот столкнулся с тем, что некоторые коммерческие вендоры, похоже, перешли на стратегию Android first: вначале делается полная поддержка SoC для андроида, а поддержка «голого» Linux уже по мере наявности ресурсов.

Не совсем правда, голый линукс на i.mx8 вообще мало кому нужен, назначение платформы не то. У них есть IMXLINUX, но это industrial, avionics, etc. Это платформа не для любителей и хоббистов, а для коммерческого использования. Кастомеры не хотят разводить ебаторий на пол года, им нужно сел и поехал.

например, не предоставляет OpenGL драйвера для Xorg на iMX8, для Linux есть только Wayland или EGLFS.

Если чего-то не хватает, то это обычно означает что выбрана неверная платформа под требования. Достаточно взглянуть на target application список, чтобы было понятно. OpenGL — это десктоп, на этой платформе есть только OpenGL ES, OpenGL SC 2.0, именно поддержка индустриальных стандартов.

Если есть legacy платформа построенная на Xorg, то это проблема.

Ну это действительно проблема. Время обновлений.

Если чего-то не хватает, то это обычно означает что выбрана неверная платформа под требования. Достаточно взглянуть на target application список, чтобы было понятно. OpenGL — это десктоп, на этой платформе есть только OpenGL ES, OpenGL SC 2.0, именно поддержка индустриальных стандартов.

Дело не совсем в стандарте. Rockchip на RK3399 тоже не дает desktop OpenGL, только ES, но у них есть драйвера под X11. То есть если использовать glamour и приложение поддерживает ES, то Xorg вполне себе вариант. Но верных платформ под Linux/X11 все меньше. Мой поинт был в том, что если сейчас начинать проект с UI в потребительском сегменте, то из UNIX-подобных платформ есть:

— Linux/X11 с постепенно уменьшающимся списком поддерживаемого железа
— Linux/Wayland с не очень понятной степенью готовности и поддержки в фреймворках/приложениях.
— Qt с EGLFS
— Android
— ChromeOS

И на их всех можно жить, но если планировать на несколько лет и с расчетом на развитие в будущем, например, на семейство девайсов, то из всего списка предпочтительнее по-моему Android, как самая универсальная и поддерживаемая платформа.

Rockchip на RK3399 тоже не дает desktop OpenGL, только ES, но у них есть драйвера под X11.

3399 — это бытовый чип, 3288 — индустриальный, но лоу-энд. Просто сравни количество набортного железа в 3288 и в i.mx8.

Но верных платформ под Linux/X11 все меньше.

А что мешает запускать x11 приложения под wayland? wayland — это composition manager по сути.

Мой поинт был в том, что если сейчас начинать проект с UI в потребительском сегменте, то из UNIX-подобных платформ есть:

i.mx8 — это не потребительский сегмент, что я и пытался сказать. С другой стороны если надо UI, то что мешает его сделать на OpenGL ES? Многие компании так и поступают, получается быстро и красиво. Многие игровые компании предоставляют подобные услуги, да, дорого, но одуренно и уникально. Например, www.rightware.com/kanzi

3399 — это бытовый чип, 3288 — индустриальный, но лоу-энд

А по каким критериям? Когда я говорил про потребительский сегмент, то имел в виду железо, которое продается в дома и офисы, а не которое ставится на корабли, заводы и самолеты.

А что мешает запускать x11 приложения под wayland? wayland — это composition manager по сути.

Отсутствие хардварного GLX в XWayland. Судя по всему, для того, чтобы эта связка работала нужно чтобы хардварный GLX работал в самих иксах. На интеловских дровах это работало, на iMX 8M — нет.

i.mx8 — это не потребительский сегмент, что я и пытался сказать.

imx 8m mini — то, что я называю потребительским выше. В target applications есть set top boxes и two-way videoconferencing, а из поддержки только Android и Wayland. Я забыл, что framebuffer (EGLFS) там тоже выбросили.

С другой стороны если надо UI, то что мешает его сделать на OpenGL ES? Многие компании так и поступают, получается быстро и красиво. Многие игровые компании предоставляют подобные услуги, да, дорого, но одуренно и уникально. Например, www.rightware.com/kanzi

Причин может быть много — отсутствие свободных денег/времени на аутсорсинг UI, завязка на open source проекты, которые в голый OpenGL не интегрируешь (chromium, например), уменьшение пула кандидатов при поиске разработчиков. Но я не очень понял при чем тут это. Я же не говорил, что Андроид единственный вариант, я говорил, что он наиболее business-friendly в долгосрочной перспективе.

А по каким критериям? Когда я говорил про потребительский сегмент, то имел в виду железо, которое продается в дома и офисы, а не которое ставится на корабли, заводы и самолеты.

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

Отсутствие хардварного GLX в XWayland. Судя по всему, для того, чтобы эта связка работала нужно чтобы хардварный GLX работал в самих иксах. На интеловских дровах это работало, на iMX 8M — нет.

А какой смысл запускать OpenGL/X11 приложения? И что это может быть? Например тот же хром отлично запускается, ему хватает EGL/OpenGL ES.

imx 8m mini — то, что я называю потребительским выше. В target applications есть set top boxes и two-way videoconferencing, а из поддержки только Android и Wayland. Я забыл, что framebuffer (EGLFS) там тоже выбросили.

Забавный чип, они даже не разглашают что там за GPU внутри, что он поддерживает только OpenGL ES 2.0. imx.8m разглашают и там печальная картина, а в mini даже не знаю что думать.

Причин может быть много — отсутствие свободных денег/времени на аутсорсинг UI, завязка на open source проекты, которые в голый OpenGL не интегрируешь (chromium, например), уменьшение пула кандидатов при поиске разработчиков. Но я не очень понял при чем тут это. Я же не говорил, что Андроид единственный вариант, я говорил, что он наиболее business-friendly в долгосрочной перспективе.

Вот мы и плавно подошли к главному вопросу. В чём смысл latest & gratest android и почему нельзя взять дефолтный, тот, что уже сделали? Платформа не расчитана же на General Purpose usage (с таким-то дохлым GPU на нём не пойдёт 80% всем игр), она расчитана, что будет сделано своё приложение и оно там будет работать и принимать все ограничения платформы.

Вот мы и плавно подошли к главному вопросу. В чём смысл latest & gratest android и почему нельзя взять дефолтный, тот, что уже сделали? Платформа не расчитана же на General Purpose usage (с таким-то дохлым GPU на нём не пойдёт 80% всем игр), она расчитана, что будет сделано своё приложение и оно там будет работать и принимать все ограничения платформы.

Нет, это не был главный вопрос в моем оригинальном посте, я потом добавил вот это: dou.ua/...​-10-on-orange-pi/#1853517

Это я не считал контекст треда и отвечал на «Linux vs Android в целом», а не «Linux vs Android на Orange Pi». Mea culpa.

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

tldr: просто учились портировать андроид на кастомные железки для портфолио.
я прав?

нет :), у нас в портфолио уже достаточно аналогичных проектов по портированию, мы столкнулись с тем, что для обучения даже нет ничего пободного, например чтоб получить знания по Linux Kernel одноплатников пруд пруди, а имбеддед Андроид — ничего. Надеюсь для студентов будет полезным наша версия Андроида с платой всего за 15$

и что вы дальше будете делать с этой платкой? о каких студентах речь идет? интерны ГЛ?

Основною причиню для виписку Android Things був доступ до всієї екосистеми Google сервісів — весь набір функцій Firebase включно з push нотифікаціями (аналог AWS), TensorFlow Lite, OTA оновлення, безпека і сертифікація. Як плюс — невисокий поріг входу для девелоперів з мобайлу, які звикли до Java/Kotlin і відповідних бібліотек.
Очивидно, ніхто не претиндує на real-time-system, але своя ніша для таких проектів є. Android Things доволі порізаний, деякі системні сервіси забрали. А в AOSP є повний набір.

но с другой стороны, в Android Things не надо заморачиваться сильно с сопровождением платформы, это гугл делает. Роль дева только обновлять саму апку.

Респект за проделаную работу по продвижению открытых решений!

Вы сделали довольно интересную работу, молодцы. Но зачем? какая конечная цель использования данной платформы? И кто будет сопровождать её? банально те же обновления безопасности? Почему не android things? (подозреваю что ответ зависит от того, зачем делали порт). Есть ли поддержка Treble?

После сравнения вариантов мы остановились на Orange Pi Plus 2E.

но данная модель не упоминается в табличке с ценами. там только Orange Pi 3. Почему?

Я чуть выше ответила зачем, а сопровождать мы планируем дальше, рады будем если к нам присоединятся новые контрибьютеры. Думаю не добавили в табличку — потому что посчитали это избыточным, в принципе легко нагуглить что это платформа достаточно не дорогая, мы также успешно запустили Андроид на более дешевой апельсинке за 15$.

добавьте железку в табличку, пожалуйста.
на тему цены — дешево это круто, но это решение не готовое для продакшена. Это так, собрать что-то на коленке. Сомневаюсь, что вы сможете купить партию в тыщ 5 таких платок. Уже проще будет самим собрать с нужной обвязкой и тд.

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

Подписаться на комментарии