
Я пытаюсь перенести приложения 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.