Ubuntu touch on android emulator

Ubuntu touch on android emulator

1.
Ubuntu Touch представляет собой мобильную платформу, разработанную компанией Canonical Ltd. длясмартфонов. Ubuntu Phone призвана обеспечить удобство работы как в Ubuntu Desktop Edition. ОС была анонсирована 2 января 2013 года и официально публично показана на выставке Consumer Electronics Show 8-11 января 2013 года.
2.
Интерфейс

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

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

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

Что касается нижней части, здесь она используется, чтобы показать или скрыть панель инструментов текущего приложения. Благодаря этому Ubuntu Phone позволяет любому приложению работать в полноэкранном режиме по умолчанию (то есть без рамок, в отличие от iOS и Android Linux, или механических кнопок, их заменяющих).
3.

Ubuntu Phone базируется на настольной Desktop версии Ubuntu с заменой стандартной графической оболочки на мобильную версию Unity. Её интерфейс базируется на Qt и QML. Ubuntu Phone использует модифицированные Advanced Packaging Tool репозитории для получения и обновления программного обеспечения, так что пока система стоит отдельно от ПК версии Ubuntu и приложения, не адаптированные под малый экран, пока что не могут быть установлены по умолчанию. Система может быть использована со стандартным ядром Android Linux, а это означает, что она будет устанавливаться на самые новые смартфоны.

Программы для Ubuntu Phone OS могут быть написаны не только с помощью Qt, но и с помощью других механизмов, таких как HTML5. Ubuntu (на всех устройствах) предусматривает возможность приложению, написанному на HTML5, использовать все системные лотки (например, уведомления) и могут быть легко интегрированы в интерфейс.

На включённом Ubuntu Phone привычный экран блокировки отсутствует (разработчики объяснили это отсутствием необходимости), хотя разблокировка SIM-карты, вероятно, должна быть на своем месте. Вместо этого есть функциональный «экран приветствия». Окружение меняется в процессе использования, что довольно интересно. Оно отображает статус пользователя и последние события на экране приветствия в комплекте с анимированным стилизованным кругом.

Телефон может быть оснащен полноценной Ubuntu и трансформироваться в Desktop версию Ubuntu Linux при соединении с док-станцией. При подключении устройство может использовать все возможности Ubuntu и пользователь получает возможность выполнять офисную работу или даже играть в ARM-совместимые игры на таком устройстве.

Кроме того, Ubuntu Phone можно подключить к учётной записи Ubuntu One и обмениваться фотографиями и файлами в облаке. Ubuntu One Music Store также имеется на данной платформе и имеет весь необходимый функционал, включая возможность покупки и воспроизведения музыки.

Источник

Приложения Android¶

Anbox is a minimal Android container and compatibility layer to run Android apps on GNU/Linux operating systems such as Ubuntu Touch.

«Computer» refers to another device you connect your Ubuntu Touch device to (via USB here). Your USB-attached computer must have adb and fastboot installed.

Читайте также:  All sports gps android

You will need to execute commands on your Ubuntu Touch device (and/or attached computer) to install Anbox and APKs. You can do that by using the terminal application, but it is easier to use adb shell or set up SSH to access your Ubuntu Touch device from your computer.

Поддерживаемые устройства¶

Убедитесь, что Ваше устройство есть в списке поддерживаемых:

BQ Aquaris M10 HD

BQ Aquaris M10 FHD

Порядок установки¶

Установка программы Anbox рекомендуется только для опытных пользователей.

Install Anbox kernel¶

Some devices require you to install a custom Linux kernel to use Anbox. These devices are:

Meizu PRO 5 (codename: turbo , name of the boot partition: bootimg )

BQ Aquaris M10 HD (codename: cooler , name of the boot partition: boot )

BQ Aquaris M10 FHD (codename: frieza , name of the boot partition: boot )

If your device is not in this list, the Anbox kernel was automatically installed when you installed Ubuntu Touch. Please skip ahead to Run the Anbox installer .

You will need to repeat these steps after each Ubuntu Touch update. Not doing so can put your Ubuntu Touch device into an unstable state. Only update your Ubuntu Touch device when you have a computer with you to re-flash the modified kernel image.

Be sure to have a backup of your device.

Open a terminal on your computer and set some device specific variables by running export CODENAME=»turbo» && export PARTITIONNAME=»bootimg» , but replace the part between the quotes respectively with the codename and name of the boot partition for your device. See the above list.

Activate Developer mode on your device.

Connect the device to your computer and run the following commands from your computer (the same terminal you ran the export command):

Run the Anbox installer¶

Once your device has the Anbox kernel installed, you can use the Anbox Tool to install the Anbox container.

Run adb shell from your computer to get a shell on your Ubuntu Touch device.

Run the following command on your Ubuntu Touch device: anbox-tool install .

Follow the on-screen instructions.

Now you’re done! You might have to refresh the app drawer (pull down from the center of the screen and release) for the new Android apps to show up.

You now have an ADB server running on your Ubuntu Touch device.

This guide asks you to run some ADB commands, sometimes on your computer, other times on the device itself. Carefully check which device you are on!

You can check that the ADB server is running on your Ubuntu Touch device by entering adb devices in its terminal app. You should see something like:

Установка новых приложений APK¶

Copy the APK to /home/phablet/Downloads . Then run the following from your computer:

Выполнено! Возможно, Вам придется обновить область приложений (потяните вниз от центра экрана и отпустите), чтобы появились новые приложения для Android.

Приложения нужно вовремя обновлять до актуальных версий¶

Все самые последние версии программ можно найти в репозиториях F-Droid или ApkTrack. Все приложения, которые упоминаются в этой инструкции, можно найти здесь:

Удаление приложений¶

To uninstall apps from the Ubuntu Touch device, run adb uninstall [APP_ID] from your computer:

Читайте также:  Как обновить плагины для андроид

Done! You might have to pull down from the app list for the new Android apps to show up.

Доступ к хранилищу Android¶

The Android storage is located at /home/phablet/anbox-data/data/media/0 .

Ссылки на библиотеки Android можно сделать в виде соответствующих аналогичных библиотек XDG:

Траблшутинг¶

When you want to install an APK, but get the error Invalid APK file that error could also mean «file not found»

Check that you typed the filename correctly.

If the APK does not reside in the folder you are in when you run adb, you have to specify the full path, e.g. /home/phablet/Downloads/my-app.apk instead of just my-app.apk

Оформление баг-репортов¶

Please report any bugs you come across. Bugs concerning Ubuntu Touch are reported in the normal Ubuntu Touch tracker and issues with Anbox are reported on our downstream fork. Thank you!

Источник

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

Источник

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