¿Por qué no puedo ejecutar ejecutables de Android x86 en Linux?

¿Por qué no puedo ejecutar ejecutables de Android x86 en Linux?

Estoy intentando portar aplicaciones de Android a Linux (no te rías :) y me encontré con un problema. Al intentar ejecutar un ejecutable de Android ( app_process) después de agregar el permiso del ejecutable, ./app_processdice que no existe, aunque cat ./app_processfunciona.

También en mi administrador de archivos (Pantheon Files), el ejecutable muestra el ícono de la biblioteca compartida.

¿Hay alguna forma de ejecutarlos en Linux?

Respuesta1

Android y Linux son dos sistemas operativos diferentes. No puedes simplemente tomar un ejecutable de uno y ejecutarlo en el otro.

El primer obstáculo es el núcleo. Android y Linux se basan en el mismo kernel, pero tienen algunas características diferentes. En particular, Android proporcionacarpetas, que sólo existe en el kernel principal (el que se encuentra en las distribuciones de Linux) desde la versión 3.19. Es posible que una aplicación de código nativo puro no utilice carpetas, pero la mayoría de las aplicaciones Java sí.

El segundo obstáculo son las bibliotecas dinámicas. Si tiene un ejecutable vinculado dinámicamente, invoca el vinculador dinámico. Android y Linux tienen diferentes enlazadores dinámicos y, si el enlazador dinámico no está presente,obtienes el mismo error como si el ejecutable en sí no estuviera presente.

Si copia el vinculador dinámico, los archivos de configuración que necesita y las bibliotecas nativas, entonces debería poder ejecutar la mayoría de los programas nativos. Deberá copiar la mayor parte /systemy la copia debe ubicarse en /system.

Si desea ejecutar aplicaciones Java, es más complicado. Necesita el entorno de ejecución de Java (Dalvik/ART), y la mayoría de las aplicaciones también requieren algunos demonios de Android (algunas aplicaciones de código nativo también requieren esos demonios).

El resultado es que, si bien los dos sistemas pueden cohabitar en un núcleo, este debe ser un núcleo lo suficientemente reciente o un núcleo de Android (un núcleo de Android puede ejecutar la mayoría de las aplicaciones de Linux), yEs necesario instalar ambos sistemas operativos.— No puedes simplemente ejecutar una aplicación de uno a otro.

No conozco ningún instalador listo para usar para Android sobre Linux. Sin embargo, existen instaladores que funcionan al revés, en particularLinux en Android.

Si el objetivo es ejecutar una aplicación de Android en un sistema Linux, entonces la forma más sencilla es ejecutarla dentro del emulador que forma parte delHerramientas de desarrollo de Android.

información relacionada