Por que não consigo executar executáveis ​​Android x86 no Linux

Por que não consigo executar executáveis ​​Android x86 no Linux

Estou tentando portar aplicativos Android para Linux (não ria :) e me deparei com um problema. Ao tentar executar um executável do Android ( app_process) após adicionar a permissão do executável, ./app_processele diz que não existe, embora cat ./app_processfuncione.

Também no meu gerenciador de arquivos (Pantheon Files), o executável mostra o ícone da biblioteca compartilhada.

Existe alguma maneira de executá-los no Linux.

Responder1

Android e Linux são dois sistemas operacionais diferentes. Você não pode simplesmente pegar um executável de um e executá-lo no outro.

O primeiro obstáculo é o kernel. Android e Linux são baseados no mesmo kernel, mas possuem alguns recursos diferentes. Em particular, o Android fornecefichários, que só existe no kernel mainstream (aquele encontrado nas distribuições Linux) desde a versão 3.19. Um aplicativo de código nativo puro pode não usar fichários, mas a maioria dos aplicativos Java usa.

O segundo obstáculo são as bibliotecas dinâmicas. Se você tiver um executável vinculado dinamicamente, ele invocará o vinculador dinâmico. Android e Linux têm vinculadores dinâmicos diferentes e, se o vinculador dinâmico não estiver presente,você recebe o mesmo erro como se o próprio executável não estivesse presente.

Se você copiar o vinculador dinâmico, os arquivos de configuração necessários e as bibliotecas nativas, poderá executar a maioria dos programas nativos. Você precisará copiar a maior parte /systeme a cópia precisa estar localizada em /system.

Se você deseja executar aplicativos Java, é mais complicado. Você precisa do ambiente de execução Java (Dalvik/ART), e a maioria dos aplicativos também exige alguns daemons Android (alguns aplicativos de código nativo também exigem esses demônios).

O resultado é que, embora os dois sistemas possam coabitar em um kernel, este precisa ser um kernel recente o suficiente ou um kernel Android (um kernel Android pode executar a maioria dos aplicativos Linux) eambos os sistemas operacionais precisam ser instalados— você não pode simplesmente executar um aplicativo de um para o outro.

Não conheço nenhum instalador pronto para Android em cima do Linux. Existem instaladores para o contrário, no entanto, em particularLinux no Android.

Se o objetivo é rodar um aplicativo Android em um sistema Linux, então a maneira mais fácil é executá-lo dentro do emulador que faz parte doFerramentas de desenvolvimento Android.

informação relacionada