Первый выпуск Shashlik, системы для запуска Android-приложений в дистрибутивах Linux

2016-02-22

Разработчики из сообщества KDE представили Shashlik 0.9 - первый публичный релиз проекта, нацеленного на обеспечение запуска Android-приложений в обычных дистрибутивах Linux. Готовые установочные пакеты сформированы для Kubuntu. Выпуск позиционируется как пригодная для начального тестирования бета-версия, которая пока не реализует полный спектр запланированных возможностей, но уже пригодна для запуска некоторых программ и игр.

Shashlik представляет собой максимально урезанное окружение с компонентами платформы Android, позволяющее устанавливать и выполнять немодифицированные Android-приложения, интегрируя их в штатное окружение рабочего стола (пока работа протестирована только в KDE Plasma 5). В Shashlik по возможности используются типичные элементы дистрибутивов Linux, такие как библиотеки KDE FrameWorks и эмулятор QEMU. Для установки APK-пакета предлагается скрипт /opt/shashlik/bin/shashlik-install, после запуска которого Android-приложение появится в меню на рабочем столе, наряду с обычными приложениями Linux.

Приложение выполняется в урезанном окружении Android, запускаемом в отдельной для каждого приложения виртуальной машине. Отрисовка осуществляется при помощи OpenGL-стека на стороне дистрибутива Linux. В настоящее время окружение создаётся с использованием Android Emulator из Android SDK, но в будущем планируется переработать модель запуска и задействовать работающую в пространстве пользователя библиотеку libbinder (механизм межпроцессного взаимодействия) для запуска без виртуальной машины в форме легковесного контейнера.

Основу Shashlik составляет несколько компонентов: runtime-скрипты для запуска окружения, инструментарий для сборки Android-окружения и выполняемый на стороне Android-окружения фоновый процесс shashlikd с прослойкой для организации взаимодействия компонентов Android с рабочим столом Linux. В Android-библиотеках подменяется часть SystemUI, ответственная за формирование навигационной панели, а также код для приёма и вывода уведомлений.