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

Разработчик Калеб Симпсон представил публичную альфа-версию Mac.apk — инструмента для запуска Android-приложений на компьютерах Mac с процессорами Apple Silicon. Утилита создаёт необходимое окружение непосредственно в macOS и не использует классический эмулятор, виртуальную машину или ядро Linux.
После установки APK-файл преобразуется в отдельный пакет формата .app. Приложение появляется в папке «Программы» и запускается в собственном окне, как обычная программа для macOS. Нажатия мыши интерпретируются как касания экрана, а смена ориентации выполняется сочетанием клавиш ⌘ + R. Также Mac.apk поддерживает ввод с физической клавиатуры и подключение геймпадов.
Как устроен слой совместимости
В основе Mac.apk лежит слой совместимости, который связывает Android-приложения с системными компонентами macOS. Код Java и Kotlin из формата DEX преобразуется в стандартный байт-код Java, после чего выполняется встроенной средой на базе OpenJDK. Окна, звук, буфер обмена и другие функции Android перенаправляются к соответствующим службам операционной системы Apple.
Нативные библиотеки ARM64 запускаются напрямую на чипах Apple Silicon, без дополнительной трансляции инструкций. Старый 32-битный ARM-код предварительно перекомпилируется в 64-битный формат и сохраняется в кэше, чтобы повторный запуск не требовал выполнять эту операцию заново.
Для обработки графики инструмент использует ANGLE при работе с OpenGL ES и MoltenVK для приложений на Vulkan. В обоих случаях конечным графическим API выступает Metal, встроенный в macOS.
Совместимость пока остаётся ограниченной
В публичной альфа-версии Mac.apk без заметных ошибок запускаются Telegram, Signal, Organic Maps, VLC, Wikipedia, Minecraft, Among Us, Subway Surfers и ряд других приложений. Однако часть программ либо работает нестабильно, либо сталкивается с отдельными функциональными ограничениями.
Например, в Rocket League Sideswipe мяч отображается в виде розовой фигуры, а в Duolingo не удаётся войти в учётную запись. Это указывает на то, что проект пока находится на раннем этапе развития и не гарантирует полную совместимость с Android-приложениями.
Большая часть Mac.apk остаётся закрытой. При этом автор опубликовал исходный код dex2jvm — конвертера, который преобразует Java- и Kotlin-код из DEX в стандартный байт-код Java. Инструмент может стать основой для дальнейшего развития проекта и расширения списка совместимых приложений.


