Почему я не могу запустить исполняемые файлы Android x86 на Linux

Почему я не могу запустить исполняемые файлы Android x86 на Linux

Я пытаюсь перенести приложения Android на Linux (не смейтесь :) и столкнулся с проблемой. При попытке выполнить исполняемый файл Android ( app_process) после добавления разрешения на исполняемый файл с ./app_processним выдается сообщение о том, что он не существует, хотя cat ./app_processвсе работает.

Также в моем файловом менеджере (Pantheon Files) исполняемый файл отображает значок общей библиотеки.

Есть ли способ запустить их на Linux?

решение1

Android и Linux — две разные операционные системы. Вы не можете просто взять исполняемый файл из одного и запустить его на другом.

Первое препятствие — это ядро. Android и Linux основаны на одном и том же ядре, но у них есть несколько разных функций. В частности, Android предоставляетсвязующие, которые существуют только в основном ядре (которое есть в дистрибутивах Linux) с версии 3.19. Приложение с чистым машинным кодом может не использовать связующие элементы, но большинство приложений Java используют.

Второе препятствие — динамические библиотеки. Если у вас есть динамически-связанный исполняемый файл, он вызывает динамический компоновщик. У Android и Linux разные динамические компоновщики, и если динамический компоновщик отсутствует,вы получаете ту же ошибку, как если бы сам исполняемый файл отсутствовал.

Если вы скопируете динамический компоновщик, необходимые ему файлы конфигурации и собственные библиотеки, то вы сможете запустить большинство собственных программ. Вам нужно будет скопировать большую часть /system, а копия должна быть расположена в /system.

Если вы хотите запустить приложения Java, это сложнее. Вам нужна среда выполнения Java (Dalvik/ART), и большинству приложений также требуются некоторые демоны Android (некоторые приложения с собственным кодом также требуют этих демонов).

В результате обе системы могут сосуществовать на одном ядре, но это должно быть достаточно новое ядро ​​или ядро ​​Android (ядро Android может запускать большинство приложений Linux), инеобходимо установить обе операционные системы— вы не можете просто так запустить приложение с одного на другом.

Я не знаю ни одного готового инсталлятора для Android поверх Linux. Однако есть инсталляторы и для обратного пути, в частностиLinuxнаAndroid.

Если цель состоит в том, чтобы запустить приложение Android в системе Linux, то самый простой способ — запустить его внутри эмулятора, который является частьюИнструменты разработки Android.

Связанный контент