Ubuntu touch android apps

Ubuntu Wiki

Collection

Ubuntu Touch is no longer maintained as a core product by Canonical. However, the Ubports community are continuing development.

Install
Get started here!

Get help . and get in touch

The Collection PPA

Below is a collection of Ubuntu Touch apps being developed, their current state of packaging and availability in the Collection PPA. A PPA (Personal Packaging Archive) is a repository of third-party packages used to distribute apps that are not part of Ubuntu proper.

Please note: These apps are provided as-is, there is no security or performance review by anybody but the original author. Do not install these apps unless you understand the potential risks to your computer or device.

With that said, you can install the applications by running the following commands in a terminal:

Run this command only if you are installing the apps on a mobile device via SSH: sudo apt-get install software-properties-common

After this, you can run the sudo apt-get install $APPNAME command, where you can replace $APPNAME by a space-separated list of apps you want to install. You’ll find the list of apps as packages here.

For developers: if you’re looking to get your application in this PPA, add it to the list and we’ll get to it as soon as we can. If you include packaging in your branch then we’ll get to it quicker!

Questions? if you’ve got any questions about this collection of Ubuntu Touch apps, or about app development in Ubuntu, you can join and ask our community of developers.

Ready to Install

This table lists the apps already available in the Collection PPA

Источник

Изучаем принципы взаимодействия 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, распотрошу его…

Источник

Ubuntu touch android apps

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

О UBports
Проект UBports был основан Мариусом Грипсгардом в 2015 году и в начальной стадии становился местом, где разработчики могли делиться идеями и обучать друг друга в надежде перенести платформу Ubuntu Touch на большее количество мобильных устройств.
После того, как Canonical неожиданно объявила о планах прекратить поддержку Ubuntu Touch в апреле 2017 года, UBports и его родственные проекты начали работу над исходным кодом; сохраняя и расширяя свои возможности на будущее.


Рекомендуется выполнять портирование на устройства, которые отвечают следующим требованиям:

Доступность исходного кода
У вашего устройства должно быть Linux ядро, исходный код которого публично доступен.
Также, исходный код требуемый для сборки LineageOS 12.1 или 14.1 также должен быть доступен. Оба из них должны быть доступны если для вашего устройства есть порт LineageOS 12.1 или 14.1, или порт прошивок на основе этих версий LineageOS.

Ядро
В данный момент Halium требует устройства с версией ядра Linux выше или равной 3.10.0. Согласно с systemd v217 README, старые ядра устройств не совместимы с systemd v217 или новее. Вы можете узнать версию ядра вашего устройства найдя строку «Версия ядра» в пункте «Об устройстве» в настройках Android. Версия ядра также может быть найдена в Makefile на верхнем уровне любого дерева исходников Linux ядра.

Читайте также:  Где андроид хранит apk файлы

Некоторые дистрибутивы Halium могут использовать ядро не старше 3.4, например как Ubuntu Touch

ОЗУ
1ГБ ОЗУ достаточно для запуска большинства дистрибутивов Halium. Рекомендуется 2ГБ или выше для наилучшего удобства конечного пользователя.

Хранилище
Требуется 16ГБ памяти. На устройствах с меньшим объёмом памяти будет недостаточно места для полной установки Halium.
Маловероятно что вы сможете собрать и запустить Halium если ваше устройство не отвечает данным требованиям. Пожалуйста, свяжитесь с нами если вы не уверены что ваше устройство соответствует данным требованиям.

Источник

Ubuntu touch android apps

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

О UBports
Проект UBports был основан Мариусом Грипсгардом в 2015 году и в начальной стадии становился местом, где разработчики могли делиться идеями и обучать друг друга в надежде перенести платформу Ubuntu Touch на большее количество мобильных устройств.
После того, как Canonical неожиданно объявила о планах прекратить поддержку Ubuntu Touch в апреле 2017 года, UBports и его родственные проекты начали работу над исходным кодом; сохраняя и расширяя свои возможности на будущее.


Рекомендуется выполнять портирование на устройства, которые отвечают следующим требованиям:

Доступность исходного кода
У вашего устройства должно быть Linux ядро, исходный код которого публично доступен.
Также, исходный код требуемый для сборки LineageOS 12.1 или 14.1 также должен быть доступен. Оба из них должны быть доступны если для вашего устройства есть порт LineageOS 12.1 или 14.1, или порт прошивок на основе этих версий LineageOS.

Ядро
В данный момент Halium требует устройства с версией ядра Linux выше или равной 3.10.0. Согласно с systemd v217 README, старые ядра устройств не совместимы с systemd v217 или новее. Вы можете узнать версию ядра вашего устройства найдя строку «Версия ядра» в пункте «Об устройстве» в настройках Android. Версия ядра также может быть найдена в Makefile на верхнем уровне любого дерева исходников Linux ядра.

Некоторые дистрибутивы Halium могут использовать ядро не старше 3.4, например как Ubuntu Touch

ОЗУ
1ГБ ОЗУ достаточно для запуска большинства дистрибутивов Halium. Рекомендуется 2ГБ или выше для наилучшего удобства конечного пользователя.

Хранилище
Требуется 16ГБ памяти. На устройствах с меньшим объёмом памяти будет недостаточно места для полной установки Halium.
Маловероятно что вы сможете собрать и запустить Halium если ваше устройство не отвечает данным требованиям. Пожалуйста, свяжитесь с нами если вы не уверены что ваше устройство соответствует данным требованиям.

Источник

Оцените статью