Почему нельзя запустить android приложение на Linux?

Рейтинг: 4Ответов: 3Опубликовано: 01.04.2015

Здравствуйте! Почти все приложения для Android написаны на Java. И тем не менее их нельзя запустить на компьютере. Почему? А если перекомпилировать? В чем разница между Java на Android и Linux? Можно их запустить на компьютере?

Ответы

▲ 3Принят

Во первых Андроид это операционная система и работает на виртуальной машине по жавой. Хоть и сделана на база линукса они разные, разные библеотеки, дрова и тд. Тем более приложение компилируется на архитектуру процессоров ARM. Но запустить на компе возможно с помощью эмулятора, па пример Genymotion.

▲ 14
  • Десктопная Java работает на Sun'овской виртуальной машине JVM
  • Android'ная Java работает на виртуальной машине Dalvik, которая по байткоду несовместима с JVM
  • Начиная с Kitkat Android начал переход на новую виртуальную машину ART (Android Runtime)

Существуют перекомпиляторы с байткода JVM на Dalvik и обратно. Стандартно это делается с помощью утилиты dx встроенной в Android SDK. Но проблема в том, что это не поможет, поскольку Java байткод будет вызывать встроенные нативные функции телефона отсутствующие в десктопе.

Единственный выход - это запускать APK файлы в окружении эмулятора: либо на GenyMotion, который работает поверх Ораклевской виртуалки, либо стандартного AVD устройства идущего в комплекте с Android SDK.

Update

Сообщается, что выпущен плагин для браузера Chrome, который позволяет запускать Андроид приложение в окружении браузера: втыкаем и читаем

▲ 3

ARC Welder пытается решить проблему запуска Android-приложений на десктопе. Пока, похоже, не слишком удачно.