- Запуск Android приложений на Linux
- Запуск Android приложений на Linux
- Встречайте Anbox, ваш «Android в коробке»
- Какие Linux дистрибутивы поддерживают Snap?
- Установка Anbox в Linux
- Загрузка файлов APK на ваш компьютер с Linux
- Установка приложений Android в Linux с помощью Anbox
- Теперь вы можете запускать приложения для Android в Linux
- Выводы
- Установка и запуск Android-приложений на Linux
- Как работает Android, часть 1
- Немного фактов
- Android is Linux
- It’s all about apps
- Binder
Запуск Android приложений на Linux
Запуск Android приложений на Linux является очень простым. Хотите запускать приложения для Android в Linux? Как насчет игр на Android? Доступно несколько вариантов, но лучше всего работает Anbox, полезный инструмент, который запускает ваши любимые приложения для Android в Linux без эмуляции.
Запуск Android приложений на Linux
В этой статье, мы поговорим про запуск Android приложений на Linux. Итак давайте узнаем как можно запустить программы на своем ПК с Linux сегодня.
Встречайте Anbox, ваш «Android в коробке»
Доступ к предпочитаемым вами приложениям и играм для Android обеспечивает потрясающее новое измерение производительности вашего настольного компьютера или ноутбука Linux. Мобильные приложения по дизайну намного проще, чем в настольных операционных системах.
Это может быть именно то, что вы ищете для повышения производительности рабочего стола!
Тем временем мобильные игры становятся все более изощренными. Имеет смысл продолжать играть на другом устройстве, особенно учитывая ограниченное время автономной работы телефона или планшета. Конечно, вы можете подключить устройство, чтобы перезарядить, но возможность играть в игру на вашем компьютере может дать вам преимущество.
Для запуска приложений Android доступно несколько инструментов macOS и Windows. Наиболее распространенным инструментом для запуска Android на рабочем столе является Bluestacks, но он не доступен для Linux.
Вместо этого пользователям Linux следует попробовать Anbox, бесплатную альтернативу с открытым исходным кодом, основанную на последней версии Android Open Source Project (AOSP). Предлагая оконную среду Android с приложениями и играми, Anbox использует контейнеры для отделения Android от операционной системы хоста (то есть ОС на вашем компьютере).
Это не все; Помимо того, что Anbox является открытым исходным кодом, он не имеет ограничений, поэтому теоретически вы можете запускать любое приложение для Android в Linux. Аппаратная виртуализация также отсутствует, и Anbox может работать на ноутбуке или настольном компьютере так же, как на мобильном устройстве под управлением Linux.
Этот последний момент чрезвычайно важен, поскольку он может преодолеть проблемы взаимодействия с мобильными устройствами Linux. Запуск Android приложений на Linux таким способом является самым удобным.
Какие Linux дистрибутивы поддерживают Snap?
Anbox поставляется бесплатно, хотя и бесплатен. Это означает, что двоичные файлы и все зависимости включены в один пакет, что упрощает установку. К сожалению, это также может означать, что ваша ОС Linux не может использовать Anbox, если она не может распаковывать и устанавливать снимки.
Служба snapd требуется для установки моментальных снимков, и это совместимо с дистрибутивами Linux, такими как:
- Arch Linux
- Debian
- Ubuntu
- Fedora
- Gentoo
- Linux Mint
- Manjaro
- OpenSUSE
- Solus
- Lubuntu
В Ubuntu он предустановлен с 14.04. Вы найдете полную информацию о вашем дистрибутиве на сайте Snapcraft.
Чтобы установить snapd, используйте следующую команду терминала:
Дождитесь завершения установки, прежде чем продолжить.
Установка Anbox в Linux
С установленным на вашем ПК Linux сервисом snapd вы готовы установить Anbox. Это делается с помощью следующей команды, которая устанавливает все необходимое:
snap install —classic anbox-installer && anbox-installer
Вам будет предложено ввести пароль перед загрузкой пакета моментальных снимков.
Вскоре после этого вам будет представлен выбор:
- Установить Anbox
- Удалить Anbox
Если вам потребуется удалить программное обеспечение позднее, просто запустите указанную выше команду установщика и выберите вариант 2. Однако в случае установки Anbox вы можете перейти к варианту 1.
После этого вы увидите сводную информацию о том, что будет делать установка. Например, выделяются файлы, добавленные из PPA, а также информация о том, что среда выполнения anbox (библиотека программного обеспечения, позволяющая запускать другие программы и приложения) будет автоматически запускаться при входе в Linux.
Если вас все это устраивает, введите легенду «Я СОГЛАШАЮСЬ» и дождитесь установки Anbox. После этого следуйте инструкциям, чтобы перезагрузить систему, прежде чем продолжить.
Загрузка файлов APK на ваш компьютер с Linux
После перезагрузки компьютера Anbox будет доступен в меню рабочего стола. Нажмите на нее, чтобы запустить; Вы скоро увидите окно Anbox.
Если ничего не происходит или вы застряли на заставке с сообщением «Начало», отмените или подождите, пока это не закончится. Затем откройте новый терминал и введите
Затем снова щелкните значок в меню. Через несколько мгновений Anbox должен запуститься. Это известная ошибка в дистрибутивах на основе Ubuntu 16.04, которая не должна затрагивать более поздние дистрибутивы.
С запущенной Anbox вы увидите список основных приложений Android, которые вы можете запустить в Linux, таких как Календарь и Электронная почта. Просто щелкните левой кнопкой мыши по этим значкам, чтобы открыть их; они появятся в новых окнах, размер которых можно изменить по мере необходимости. Если вам нужен браузер, оболочка WebView включена.
Чтобы добавить свои собственные приложения и игры, все, что вам нужно сделать, это загрузить (или скопировать с другого устройства) соответствующие файлы APK. Это установочные файлы, такие как файлы DEB (или снимки) в Linux или файлы EXE в Windows. Как правило, они доступны через Google Play на Android … но это не относится к Anbox.
Установка приложений Android в Linux с помощью Anbox
Поскольку реализация Anbox для Android не зарегистрирована специальными сертификатами для поставщика, вы не сможете получить доступ к Google Play (или установить). Поэтому ответом является загрузка и загрузка APK.
Где вы найдете APK? Доступно несколько альтернатив Google Play, но если вы предпочитаете Play Store, у вас есть несколько способов извлечь APK из Google Play. Хотя Google ограничивает доступ к Play Store только зарегистрированным устройствам Android, в обход этого не идет пиратство. Если у вас есть APK-файлы или они доступны бесплатно, можно запускать их на незарегистрированных устройствах Android.
После того, как вы получите все APK-файлы, которые хотите установить, вам нужно разрешить установку из неизвестных источников. Для этого откройте меню «Настройки» на экране приложений и найдите «Безопасность». Здесь включите переключатель рядом с неизвестными источниками и нажмите кнопку ОК, чтобы принять.
После этого найдите файлы APK и дважды щелкните первый файл, который хотите установить. Через несколько мгновений приложение или игра должны быть готовы и будут запускаться в своем собственном окне в Linux. Установленные игры перечислены вместе со всеми другими приложениями.
Готово! Настройка проведена, запуск Android приложений на Linux возможен.
Если Вам интересны новости про Android, различные обзоры и советы по установке различных программ, мы рекомендуем ознакомиться с сайтом http://poandroidam.ru/.
Теперь вы можете запускать приложения для Android в Linux
Запуск Android приложений на Linux является очень простым. Но, поскольку Anbox находится, в данный момент на стадии альфа, могут быть некоторые проблемы со стабильностью. Тем не менее, обнадеживает знание того, насколько просто настроить, установить и запустить приложения Android в Linux с Anbox.
Для просмотра и запуска приложения, мы провели 7 шагов:
- Убедитесь, что ваш дистрибутив поддерживает мгновенные пакеты.
- Установите или обновите сервис snapd.
- Установите Anbox.
- Запустите Anbox с вашего рабочего стола Linux.
- Скачайте APK файлы и запустите их.
- Подождите, пока установится APK-файл.
- Нажмите, чтобы запустить приложения Android на рабочем столе Linux.
Рекомендуем ознакомиться с appvisor.ru там вы сможете найти много интересных программ.
Выводы
Anbox — не единственный способ запуска приложений и игр для Android в Linux, но мы считаем, что он станет самым популярным через несколько лет. Если у Вас есть свои варианты того, как запустить Linux на вашем Android-устройстве, обязательно сообщите в комментариях сайта.
Источник
Установка и запуск Android-приложений на Linux
Как известно, многие Android-приложения можно нативно запускать на Chrome OS благодаря библиотеке Chrome App Runtime.
С помощью расширений chromeos-apk и ARChon запуск Android APK стал возможен и на других ОС.
В этой публикации я расскажу, как установить произвольное Android-приложение на Ubuntu 14.04.
Исходные инструменты:
- Ubuntu 14.04 LTS;
- Chrome 39.0 (подойдет и другая версия 37+).
Устанавливаем ARChon Runtime
1) Скачиваем и распаковываем ARChon в произвольную дирректорию;
2) Открываем Chrome и включаем Developer mode в chrome://extensions/;
3) Кликаем «Load unpacked extension» и устанавливаем распакованный ARChon.
Далее необходимо подготовить архив APK для установки.
Устанавливаем chromeos-apk
1) Для Ubuntu прежде всего нужно установить библиотеку lib32stdc++6:
2) chromeos-apk можно установить с помощью менеджера пакетов npm (поставляется вместе с node.js).
3) Сейчас можно установить непосредственно chromeos-apk:
Теперь все готово к распаковке APK.
Подготавливаем APK с помощью chromeos-apk
1) Для распаковки APK-архива выполняем:
2) Теперь у нас есть Chrome-APK расширение, и все что нужно — загрузить (chrome://extensions/) и запустить его.
UPD: полезные ссылки от sequence
ARChon Packager: создает архивы для archon из установленных в телефоне приложений.
twerk: расширение хром, сильно облегчает конвертацию apk.
Источник
Как работает Android, часть 1
В этой серии статей я расскажу о внутреннем устройстве Android — о процессе загрузки, о содержимом файловой системы, о Binder и Android Runtime, о том, из чего состоят, как устанавливаются, запускаются, работают и взаимодействуют между собой приложения, об Android Framework, и о том, как в Android обеспечивается безопасность.
Немного фактов
Android — самая популярная операционная система и платформа для приложений, насчитывающая больше двух миллиардов активных пользователей. На ней работают совершенно разные устройства, от «интернета вещей» и умных часов до телевизоров, ноутбуков и автомобилей, но чаще всего Android используют на смартфонах и планшетах.
Android — свободный и открытый проект. Большинство исходного кода (который можно найти на https://source.android.com) распространяется под свободной лицензией Apache 2.0.
Компания Android Inc. была основана в 2003 году и в 2005 году куплена Google. Публичная бета Android вышла в 2007 году, а первая стабильная версия — в 2008, с тех пор мажорные релизы выходят примерно раз в год. Последняя на момент написания стабильная версия Android — 7.1.2 Nougat.
Android is Linux
По поводу такой формулировки было много споров, так что сразу поясню, что именно я имею в виду под этой фразой: Android основан на ядре Linux, но значительно отличается от большинства других Linux-систем.
Среди исходной команды разработчиков Android был Robert Love, один из самых известных разработчиков ядра Linux, да и сейчас компания Google остаётся одним из самых активных контрибьюторов в ядро, поэтому неудивительно, что Android построен на основе Linux.
Как и в других Linux-системах, ядро Linux обеспечивает такие низкоуровневые вещи, как управление памятью, защиту данных, поддержку мультипроцессности и многопоточности. Но — за несколькими исключениями — вы не найдёте в Android других привычных компонентов GNU/Linux-систем: здесь нет ничего от проекта GNU, не используется X.Org, ни даже systemd. Все эти компоненты заменены аналогами, более приспособленными для использования в условиях ограниченной памяти, низкой скорости процессора и минимального потребления энергии — таким образом, Android больше похож на встраиваемую (embedded) Linux-систему, чем на GNU/Linux.
Другая причина того, что в Android не используется софт от GNU — известная политика «no GPL in userspace»:
We are sometimes asked why Apache Software License 2.0 is the preferred license for Android. For userspace (that is, non-kernel) software, we do in fact prefer ASL 2.0 (and similar licenses like BSD, MIT, etc.) over other licenses such as LGPL.
Android is about freedom and choice. The purpose of Android is promote openness in the mobile world, and we don’t believe it’s possible to predict or dictate all the uses to which people will want to put our software. So, while we encourage everyone to make devices that are open and modifiable, we don’t believe it is our place to force them to do so. Using LGPL libraries would often force them to do just that.
Само ядро Linux в Android тоже немного модифицировано: было добавлено несколько небольших компонентов, в том числе ashmem (anonymous shared memory), Binder driver (часть большого и важного фреймворка Binder, о котором я расскажу ниже), wakelocks (управление спящим режимом) и low memory killer. Исходно они представляли собой патчи к ядру, но их код был довольно быстро добавлен назад в upstream-ядро. Тем не менее, вы не найдёте их в «обычном линуксе»: большинство других дистрибутивов отключают эти компоненты при сборке.
В качестве libc (стандартной библиотеки языка C) в Android используется не GNU C library (glibc), а собственная минималистичная реализация под названием bionic, оптимизированная для встраиваемых (embedded) систем — она значительно быстрее, меньше и менее требовательна к памяти, чем glibc, которая обросла множеством слоёв совместимости.
В Android есть оболочка командной строки (shell) и множество стандартных для Unix-подобных систем команд/программ. Во встраиваемых системах для этого обычно используется пакет Busybox, реализующий функциональность многих команд в одном исполняемом файле; в Android используется его аналог под названием Toybox. Как и в «обычных» дистрибутивах Linux (и в отличие от встраиваемых систем), основным способом взаимодействия с системой является графический интерфейс, а не командная строка. Тем не менее, «добраться» до командной строки очень просто — достаточно запустить приложение-эмулятор терминала. По умолчанию он обычно не установлен, но его легко, например, скачать из Play Store (Terminal Emulator for Android, Material Terminal, Termux). Во многих «продвинутых» дистрибутивах Android — таких, как LineageOS (бывший CyanogenMod) — эмулятор терминала предустановлен.
Второй вариант — подключиться к Android-устройству с компьютера через Android Debug Bridge (adb). Это очень похоже на подключение через SSH:
Из других знакомых компонентов в Android используются библиотека FreeType (для отображения текста), графические API OpenGL ES, EGL и Vulkan, а также легковесная СУБД SQLite.
Кроме того, раньше для реализации WebView использовался браузерный движок WebKit, но начиная с версии 7.0 вместо этого используется установленное приложение Chrome (или другое; список приложений, которым разрешено выступать в качестве WebView provider, конфигурируется на этапе компиляции системы). Внутри себя Chrome тоже использует основанный на WebKit движок Blink, но в отличие от системной библиотеки, Chrome обновляется через Play Store — таким образом, все приложения, использующие WebView, автоматически получают последние улучшения и исправления уязвимостей.
It’s all about apps
Как легко заметить, использование Android принципиально отличается от использования «обычного Linux» — вам не нужно открывать и закрывать приложения, вы просто переключаетесь между ними, как будто все приложения запущены всегда. Действительно, одна из уникальных особенностей Android — в том, что приложения не контролируют напрямую процесс, в котором они запущены. Давайте поговорим об этом подробнее.
Основная единица в Unix-подобных системах — процесс. И низкоуровневые системные сервисы, и отдельные команды в shell’е, и графические приложения — это процессы. В большинстве случаев процесс представляет собой чёрный ящик для остальной системы — другие компоненты системы не знают и не заботятся о его состоянии. Процесс начинает выполняться с вызова функции main() (на самом деле _start ), и дальше реализует какую-то свою логику, взаимодействуя с остальной системой через системные вызовы и простейшее межпроцессное общение (IPC).
Поскольку Android тоже Unix-подобен, всё это верно и для него, но в то время как низкоуровневые части — на уровне Unix — оперируют понятием процесса, на более высоком уровне — уровне Android Framework — основной единицей является приложение. Приложение — не чёрный ящик: оно состоит из отдельных компонентов, хорошо известных остальной системе.
У приложений Android нет функции main() , нет одной точки входа. Вообще, Android максимально абстрагирует понятие приложение запущено как от пользователя, так и от разработчика. Конечно, процесс приложения нужно запускать и останавливать, но Android делает это автоматически (подробнее я расскажу об этом в следующих статьях). Разработчику предлагается реализовать несколько отдельных компонентов, каждый из которых обладает своим собственным жизненным циклом.
In Android, however, we explicitly decided we were not going to have a main() function, because we needed to give the platform more control over how an app runs. In particular, we wanted to build a system where the user never needed to think about starting and stopping apps, but rather the system took care of this for them… so the system had to have some more information about what is going on inside of each app, and be able to launch apps in various well-defined ways whenever it is needed even if it currently isn’t running.
Для реализации такой системы нужно, чтобы приложения имели возможность общатся друг с другом и с системными сервисами — другими словами, нужен очень продвинутый и быстрый механизм IPC.
Этот механизм — Binder.
Binder
Binder — это платформа для быстрого, удобного и объектно-ориентированного межпроцессного взаимодействия.
Разработка Binder началась в Be Inc. (для BeOS), затем он был портирован на Linux и открыт. Основной разработчик Binder, Dianne Hackborn, была и остаётся одним из основных разработчиков Android. За время разработки Android Binder был полностью переписан.
Binder работает не поверх System V IPC (которое даже не поддерживается в bionic), а использует свой небольшой модуль ядра, взаимодействие с которым из userspace происходит через системные вызовы (в основном ioctl ) на «виртуальном устройстве» /dev/binder . Со стороны userspace низкоуровневая работа с Binder, в том числе взаимодействие с /dev/binder и marshalling/unmarshalling данных, реализована в библиотеке libbinder.
Низкоуровневые части Binder оперируют в терминах объектов, которые могут пересылаться между процессами. При этом используется подсчёт ссылок (reference-counting) для автоматического освобождения неиспользуемых общих ресурсов и уведомление о завершении удалённого процесса (link-to-death) для освобождения ресурсов внутри процесса.
Высокоуровневые части Binder работают в терминах интерфейсов, сервисов и прокси-объектов. Описание интерфейса, предоставляемого программой другим программам, записывается на специальном языке AIDL (Android Interface Definition Language), внешне очень похожем на объявление интерфейсов в Java. По этому описанию автоматически генерируется настоящий Java-интерфейс, который потом может использоваться и клиентами, и самим сервисом. Кроме того, по .aidl -файлу автоматически генерируются два специальных класса: Proxy (для использования со стороны клиента) и Stub (со стороны сервиса), реализующие этот интерфейс.
Для Java-кода в процессе-клиенте прокси-объект выглядит как обычный Java-объект, который реализует наш интерфейс, и этот код может просто вызывать его методы. При этом сгенерированная реализация прокси-объекта автоматически сериализует переданные аргументы, общается с процессом-сервисом через libbinder, десериализует переданный назад результат вызова и возвращает его из Java-метода.
Stub работает наоборот: он принимает входящие вызовы через libbinder, десериализует аргументы, вызывает абстрактную реализацию метода, сериализует возвращаемое значение и передаёт его процессу-клиенту. Соответственно, для реализации сервиса программисту достаточно реализовать абстрактные методы в унаследованном от Stub классе.
Такая реализация Binder на уровне Java позволяет большинству кода использовать прокси-объект, вообще не задумываясь о том, что его функциональность реализована в другом процессе. Для обеспечения полной прозрачности Binder поддерживает вложенные и рекурсивные межпроцессные вызовы. Более того, использование Binder со стороны клиента выглядит совершенно одинаково, независимо от того, расположена ли реализация используемого сервиса в том же или в отдельном процессе.
Для того, чтобы разные процессы могли «найти» сервисы друг друга, в Android есть специальный сервис ServiceManager, который хранит, регистрирует и выдаёт токены всех остальных сервисов.
Binder широко используется в Android для реализации системных сервисов (например, пакетного менеджера и буфера обмена), но детали этого скрыты от разработчика приложений высокоуровневыми классами в Android Framework, такими как Activity, Intent и Context. Приложения могут также использовать Binder для предоставления друг другу собственных сервисов — например, приложение Google Play Services вообще не имеет собственного графического интерфейса для пользователя, но предоставляет разработчикам других приложений возможность пользоваться сервисами Google Play.
Подробнее про Binder можно узнать по этим ссылкам:
В следующей статье я расскажу о некоторых идеях, на которых построены высокоуровневые части Android, о нескольких его предшественниках и о базовых механизмах обеспечения безопасности.
Источник