- Установите Ubuntu Touch на телефон Android
- Совместим ли ваш телефон с Ubuntu Touch?
- Купите новый USB-кабель
- Убедитесь, что ваш телефон полностью обновлен
- Включите режим разработчика на вашем устройстве Android
- Загрузите и запустите установщик
- Следуй инструкциям
- Перезагрузитесь в загрузчик и скрестите пальцы…
- Перезагрузитесь в Recovery и перезагрузитесь снова
- Отключите и обновите
- Изучаем принципы взаимодействия Ubuntu Touch и Android
- Введение
- Компоненты Ubuntu Touch
- Заключение
Установите Ubuntu Touch на телефон Android
Замена ОС Android на Ubuntu Touch, ориентированная на конфиденциальность, на вашем смартфоне означает многое. Вы откажетесь от вездесущего отслеживания и телеметрии ОС Android, но также потеряете доступ ко всем приложениям, кроме самых простых. И нет, WhatsApp нет.
Android — это зрелая мобильная операционная система, работающая на более чем 2,5 миллиардах устройств по всему миру. Магазин Google Play содержит около 3 миллионов приложений, по крайней мере, по одному на все возможные варианты использования, которые вы можете себе представить.
Напротив, у Ubuntu Touch около 10000 пользователей (разработчики на самом деле не знают, поскольку в ОС нет телеметрии), и открытый магазин может похвастаться витриной магазина с 1139 товарами, большинство из которых являются веб-приложениями.
ОС все еще находится в стадии бета-тестирования. Хотя большинство вещей работают стабильно, ваш опыт может отличаться. Как уже упоминалось, нет возможности установить Whatsapp на устройство Ubuntu Touch, а многие другие популярные приложения отсутствуют.
Найдите время, чтобы посетить форумы и канал Telegram, чтобы послушать, как другие люди знакомятся с операционной системой, а затем примите решение.
Совместим ли ваш телефон с Ubuntu Touch?
Работает на более чем 24000 моделей телефонов от 1300 брендов, Android распространен повсеместно. Ubuntu Touch будет работать только на 60. И для большинства из них ОС все еще считается незавершенной.
Там есть список доступны, чтобы убедиться, что ваш телефон включен. Определив модель телефона, выберите запись, чтобы узнать о текущем состоянии разработки.
Например, NFC и распознавание отпечатков пальцев не работают на Oneplus 3, а запись и воспроизведение видео неоднородны. Как бы то ни было, этот автор использовал Ubuntu Touch на Oneplus 3 более года, и это было здорово. Действительно.
Если ваш телефон находится в списке и вы думаете, что сможете жить с ОС в ее текущем состоянии, переходите к следующему шагу.
Купите новый USB-кабель
USB-кабель, который вы использовали для зарядки своего телефона на ночь и периодической передачи мультимедийных файлов, вероятно, не подходит для этой работы. В процессе установки установщик будет записывать огромное количество данных во внутреннюю память вашего телефона, и это очень чувствительный.
Большинство проблем с установкой можно решить, заменив USB-кабель новым заводским, поэтому лучше подготовить его перед началом работы.
Убедитесь, что ваш телефон полностью обновлен
Обновление операционной системы, которую вы собираетесь взорвать, может показаться нелогичным, но для того, чтобы все прошло хорошо, важно, чтобы вы использовали самую последнюю версию Android.
Войдите в меню настроек, нажмите «Система», затем выберите «Обновления системы». Если доступно обновление, скачайте и установите его.
Включите режим разработчика на вашем устройстве Android
Режим разработчика по умолчанию скрыт на устройствах Android, так как он содержит настройки, которые можно использовать для повреждения вашей системы или даже для того, чтобы (шок и ужас) сделать первые шаги к полной замене ОС.
Чтобы включить режим разработчика, выполните следующие действия. Вы также можете прочитать немного больше в Веб-сайт Google для получения инструкций по конкретным версиям Android.
- Войдите в меню настроек.
- Выберите О телефоне.
- Найдите номер сборки.
- Неоднократно нажимайте «Номер сборки» (обычно 7 раз), пока не увидите сообщение «Теперь вы разработчик!»
Ты не настоящий разработчик — если вы не были до того, как начали — но вы обнаружите, что теперь в Системе есть новое меню раздел настроек. Это называется Параметры разработчика, и именно там обитают все крутые и опасные системные опции.
Загрузите и запустите установщик
Установщик Ubuntu Touch может запускаться из Windows или Mac, в Linux его можно запускать как оснастку или как изображение приложения. Если вам посчастливилось быть пользователем Ubuntu, есть файл .deb.
Скачайте версию для настольной ОС. В зависимости от того, какую версию вы выбрали, вам может потребоваться установить программу установки перед ее запуском. Не волнуйтесь, вам нужно будет запустить его только один раз, и вы всегда можете удалить установщик, как только вы использовали его для установки Ubuntu Touch.
После установки установщика выберите его в меню «Пуск».
Следуй инструкциям
После запуска установщика подключите устройство, когда его попросят. С этого момента вы будете следовать подсказкам на экране.
Установщик UBPorts должен автоматически определять ваше устройство. Если это не так, выберите свой телефон из раскрывающегося списка.
Затем вам будет представлен другой раскрывающийся список с вопросом, какую ОС вы хотите установить — есть только один вариант, и это Ubuntu Touch.
Щелчок по установке приведет к другому экрану с еще одним раскрывающимся списком. У этого есть подлинные варианты, и вам будет предложено выбрать, какой канал вы хотите установить. Варианты Стабильный, релиз-кандидат (RC), Edge или Developer (devel).
В зависимости от того, где именно находится Ubuntu Touch в цикле выпуска, все, кроме стабильный скорее всего, будет очень нестабильный.
Выберите «Стабильный» и решите, хотите ли вы удалить свои пользовательские данные. Выбрать Далее.
Перезагрузитесь в загрузчик и скрестите пальцы…
Когда устройство выключено, удерживайте увеличение громкости + питание. Затем нажмите Продолжить в установщике. Комбинация клавиш может отличаться в зависимости от вашего устройства, однако UBPorts покажет вам изображение того, что именно вам нужно сделать.
Установщик скачает необходимые файлы, затем прошьет восстановление и загрузочные образы.
Перезагрузитесь в Recovery и перезагрузитесь снова
Если все пойдет хорошо, вам будет предложено перезагрузиться в новое восстановление, нажав кнопку питания и вниз.. Опять же, точное сочетание клавиш может отличаться в зависимости от вашего устройства.
Как только ваш телефон перезагрузится в новый режим восстановления, установщик загрузит Ubuntu Touch и отправит файлы на ваше устройство. Этот процесс занимает около десяти минут.
Это момент, когда установка не удастся, если ваш USB-кабель находится в менее чем идеальном состоянии.
После этого ваш телефон перезагрузится без каких-либо дополнительных действий.
Отключите и обновите
На этом этапе вы можете отключить свой телефон.
На экране отобразится логотип UBPorts и сообщит вам, что он устанавливает обновления. Этот процесс занимает около пяти минут, поэтому сделайте чашку чая или приберитесь.
Ваш телефон перезагрузится еще раз. Поздравляем, теперь вы используете Ubuntu Touch. Расскажите об этом своим друзьям в WhatsApp.
Источник
Изучаем принципы взаимодействия Ubuntu Touch и Android
Привет, хабр.
Пару месяцев назад я занимался портированием Ubuntu Touch на платформу Allwinner A10 ,
в процессе делал заметки себе на память. Сейчас, на мой взгляд, они всё ещё актуальны, пока Ubuntu Touch окончательно не переехала на свой графический сервер Mir и так далее.
Данная статья поможет заинтересованным лицам найти стартовую точку, с которой можно начать близкое знакомство с UT.
Стиль изложения далёк от технического, но если вы не против, то
приглашаю под кат.
Введение
Что такое libhybris
libhybris — прослойка, позволяющая подгружать в Glibc userspace библиотеки из Bionic userspace, на лету заменяя некоторые символы вариантами из Glibc. Проще говоря, данное решение позволяет использовать проприетарные библиотеки для Android в Linux-пространстве. Наибóльшая польза, конечно же, в возможности использовать проприетарные GPU-драйвера, собранные производителем только под Android.
Что такое surfaceflinger
surfaceflinger — нативный сервис андроида, композитный менеджер графических слоёв.
Ubuntu Touch
Ubuntu Touch Developer Preview сама по себе основана на Android, заимствует необходимые сервисы для работы с железом. Общий обзор зависимости можно почитать здесь — Ubuntu Touch Porting или в заметке на OpenNet.
В качестве базовой операционной системы используется обычный Android JB 4.2 , а точнее CyagenMod-10.1 (репозиторий подпроектов CM — phablet.ubuntu.com/gitweb). Из него удалено всё что связано с dalvik и java — оставлена только нативная часть, состоящая из системных сервисов и HAL . При желании можно использовать AOSP 4.1 , но будьте готовы к адаптации под нативное API от 4.1, оно не покрыто никакой документацией и тем более спецификацией и меняется от релиза к релизу.
Компоненты UT располагаются в chroot , используется самописная утилита uchroot, отрывок:
Для взаимодействия Android-окружения и chroot-окружения Ubuntu задействован механизм libhybris .
Компоненты Ubuntu Touch
phablet-team.
Нас интересуют следующие два компонента, отвечающие за работу платформы на Android устройствах:
- platform-api
- qtubuntu
Скачаем последнюю версию исходников:
Ubuntu Platform API
Ubuntu platform API — низкоуровневый API для выполнения базовых операций с использованием возможностей платформы (Android).
Примеры методов:
- ubuntu_application_ui_show_surface
- ubuntu_application_ui_hide_surface
- ubuntu_application_ui_move_surface_to
- ubuntu_application_ui_resize_surface_to
Из файла документации doc/mainpage.md узнаём, что дерево исходников platform-api можно разбить на две части:
- include — абстрактная декларация platform API
- android — реализация platform API под Android (я бы уточнил — под Android 4.2)
И то единственное, на что может полагаться сторонний разработчик при работе с этим API — это заголовки из
директории includes/ubuntu/application, а всё остальное предполагает изменяться со временем.
Из файла debian/control узнаём, что:
Ага, значит, судя по android/hybris/Android.mk, реализация platform API собирается в виде библотеки libubuntu_application_api с линковкой с нативными либами андроида и помещается в android userspace:
Без внимания осталась директория platform-api/src/android, рассмотрим её в деталях. Судя по наличию файла CMakeLists.txt , сборка идёт уже для glibc.
Есть один-единственный файл с кодом — ubuntu_application_api.cpp, заглянув в которой мы увидим:
— использование процедур libhybris для динамической загрузки символов из shared-либы из android userspace.
— нехитрый мост для подгрузки символов из libubuntu_application_api.so , которая ладит с нативными сервисами андроида, и которую мы совсем недавно мысленно «собрали» с помощью android/hybris/Android.mk.
— куча обёрток для символов API, реализованных в libubuntu_application_api.so .
Итак, во избежание путаницы:
- libubuntu_application_api.so — библиотека под bionic, живёт в android userspace;
- libubuntu_application_api.so — библиотека под glibc, живёт в linux userpace (chroot), грузит символы из первой через libhybris.
Разработчики решили уменьшить энтропию вселенной путём создания одноимённых библиотек.
Если посмотреть их дебаты по поводу именования компонентов merge-153874 discussion, то уши вянут.
Ubuntu Application Manager
В platform-api/android/hybris помимо реализации Ubuntu platform API находятся исходники ubuntuappmanager — сервиса приложений Ubuntu, он живёт в android userspace и, судя по Android.mk, активно использует libubuntu_application_api и общается через Binder IPC с сервисами андроида.
Решает кучу задач управления приложениями и сессиями, быстрый взгляд на default_application_manager.h:
QtUbuntu
Разбираемся с частью UT, отвечающей за взаимодействие между Ubuntu platform API и Qt/QML приложениями.
Если вы не знакомы с Qt Platform Abstraction, то, в кратце, это возможность абстрагироваться от платформы, на которой запускаются приложения Qt с помощью специально написанных QPA-плагинов.
В QPA-плагине реализуются базовые методы вроде createPlatformWindow , а затем Qt приложение, когда захочет создать окошко, использует символ createPlatformWindow из плагина абстракции и в ус не дует, куда оно там дальше пошло.
В данном случае мы будем иметь дело с QPA плагином для работы с Ubuntu application API.
Судя по содержимому ubuntu.pro, платформа линкуется с glibc-версией libubuntu_application_api.so
Обратим внимание на следующие вызовы методов из набора platform API, использованные в integration.cc и window.cc:
Теперь понятно, что когда наше Qt приложение захочет создать окошко, то оно вызовет метод из QPA платформы qubuntu — QUbuntuIntegration::createPlatformWindow из файла integration.cc:
Заглядывая в конструктор QUbuntuWindow в файле window.cc, находим вызов метода QUbuntuWindow::createWindow() :
Это крайне урезанный код, но суть ясна — делаются вызовы к Ubuntu platform API , которое у нас реализовано в glibc-версии libubuntu_application_api.so , которая, на самом деле, является мостом к bionic-версии libubuntu_application_api.so , код которой лежит в platform-api/android.
Нам осталось открыть матрёшку и найти, как же реализованы ubuntu::application::ui::Session и, соответственно, ubuntu::application::ui::Surface . А реализованы они в этом файле — ubuntu_application_api_for_hybris.cpp:
Перематываем, находим UbuntuSurface :
Получаем некий объект типа android::SurfaceControl , который является результатом вызова android::SurfaceComposerClient()->createSurface() .
Через него проходят все обращения к android::SurfaceComposerClient (frameworks/native/libs/gui/Surface.cpp), такие как: изменение размеров, перемещение, изменение порядка слоёв и так далее.
Возвращаясь назад по цепочке, понимаем, что же на самом деле происходит, когда мы запускаем очередное Qt приложение с QPA платформой Ubuntu.
Заключение
На этом моменте я вынужден себя остановить, поскольку, на мой взгляд, рассмотренный принцип взаимодействия Ubuntu Touch и Android является самодостаточным. Дальнейшие рассуждения могут идти уже в отрыве от всего вышеописанного. Нерасмотренными остались вопросы взаимодействия qmlscene и ubuntuappmanager , принцип контроля ввода с помощью сервисов SurfaceFlinger и InputDispatcher и другие вопросы из уголков этой простороной темы. Но это уже совсем другая история.
Через неделю приедет телефон на Firefox OS, распотрошу его…
Источник