Технологии

Mac.apk запускает Android-приложения на Mac без эмулятора

Публичная альфа Mac.apk позволяет запускать Android-приложения на Mac с Apple Silicon через слой совместимости без виртуальной машины и Linux.

Mac.apk запускает Android-приложения на Mac без эмулятора

Разработчик Калеб Симпсон выпустил публичную альфа-версию Mac.apk — инструмента для запуска Android-приложений на компьютерах Mac с чипами Apple Silicon. Утилита работает без эмулятора, виртуальной машины и ядра Linux, воссоздавая необходимое для приложений окружение непосредственно в macOS.

После установки APK-файл преобразуется в отдельный пакет .app и появляется в папке «Программы». Приложение запускается в собственном окне, а взаимодействие с интерфейсом адаптировано под Mac: щелчки мыши заменяют касания экрана, ориентацию можно менять сочетанием клавиш ⌘ + R. Также поддерживаются физическая клавиатура и геймпады.

Как устроен слой совместимости

Mac.apk преобразует код Java и Kotlin из формата DEX в стандартный байт-код Java, который затем выполняется во встроенной среде на базе OpenJDK. Окна, звук, буфер обмена и другие системные функции Android связываются с соответствующими службами macOS.

Нативные библиотеки ARM64 запускаются напрямую на процессоре Apple Silicon, без перевода инструкций. Старый 32-битный ARM-код предварительно перекомпилируется в 64-битный формат и кэшируется. Для графики Mac.apk использует ANGLE при работе с OpenGL ES и MoltenVK для Vulkan; в обоих случаях основой служит графический API Metal.

Совместимость пока остаётся ограниченной

Часть приложений уже работает без заметных проблем. В их числе Telegram, Signal, Organic Maps, VLC, Wikipedia, Minecraft, Among Us и Subway Surfers. Однако для некоторых программ альфа-версия пока не обеспечивает полноценную работу.

Например, в Rocket League Sideswipe мяч отображается в виде розовой фигуры, а в Duolingo не удаётся войти в аккаунт. Это указывает на ограничения текущей реализации отдельных графических, системных или сетевых компонентов.

Основная часть Mac.apk остаётся закрытой. При этом Симпсон опубликовал исходный код dex2jvm — конвертера, который переводит Java- и Kotlin-код из DEX в стандартный байт-код Java. Проект находится на ранней стадии, поэтому перечень совместимых приложений и стабильность их работы могут меняться по мере развития инструмента.

Источник
404 Media

Читайте новые материалы журнала — свежие сюжеты каждый день.

На главную