adblock check

Запуск ARMv7 Android-приложений на Android-устройствах только с поддержкой 64-битной архитектуры

Всем привет!

Я начал этот проект, потому что некоторые новые Android-устройства больше не поддерживают 32-битные приложения. Это означает, что приложения, собранные для ARMv7 (armeabi-v7a), больше не могут запускаться на таких устройствах нативно.

Я хотел найти способ обойти это ограничение без root-доступа, кастомной прошивки или запуска второй системы Android.

Armbat — это экспериментальный контейнер для Android-приложений, который позволяет импортировать и запускать 32-битные ARM Android APK на устройствах, поддерживающих только 64-битную архитектуру.

Как это работает?

Вместо эмуляции всей системы Android Armbat использует уже работающую на устройстве среду Android.

Некоторые из основных компонентов:

  • Java-код гостевого приложения выполняется на собственном Android ART устройства.
  • Нативный ARMv7-код (A32) транслируется в ARM64 с помощью JIT на основе Dynarmic.
  • Собственный ELF32-загрузчик отвечает за загрузку и связывание 32-битных нативных библиотек.
  • Слой системных вызовов Linux ARM EABI обрабатывает системные вызовы гостевого приложения.
  • Настоящий Bionic userspace предоставляет гостевую библиотеку C и динамический линковщик.
  • Android-специфичные интерфейсы, такие как JNI, assets, EGL/GLES, ANativeWindow и OpenSLES, связываются с хост-системой.

Проект написан на Kotlin и C++.

Требования

  • Android 12 или новее.
  • ARM64-устройство (arm64-v8a).
  • GPU-драйвер с поддержкой EGL и OpenGL ES 2.0 или новее.
  • Разрешение на доступ ко всем файлам.
  • Поддерживаются только приложения ARMv7 (armeabi-v7a).

Root-доступ НЕ требуется.

Текущий статус

Armbat всё ещё находится в экспериментальной стадии, и совместимость не является универсальной. Некоторые приложения могут работать, другие могут аварийно завершаться или не запускаться из-за того, что определённые Android-интерфейсы или функции нативных библиотек пока не реализованы.

Это не полноценный эмулятор Android и не виртуальная машина. Armbat не загружает другую систему Android.

Я активно работаю над средой выполнения и улучшением совместимости.

Сайт проекта

Сайт: armbat-web.vercel.app/

Скачать

Последний релиз: github.com/dima-xd/armbat/releases/latest

Исходный код: github.com/dima-xd/armbat

Проект является открытым и распространяется под лицензией Apache License 2.0.

Отзывы и сообщения о совместимости

Буду очень благодарен за тестирование на различных устройствах, особенно на телефонах, которые больше не поддерживают 32-битные приложения.

Нашли ошибку или что-то не работает? Пожалуйста, создайте issue здесь:

github.com/dima-xd/armbat/issues

dimaxdqwerty
Пользователь
Android Android
62,7K участников
Вступить
Комментариев пока нет
Оставьте комментарий...
Оставьте комментарий...