¿Las aplicaciones de Android podrían ejecutarse en Ubuntu touch de forma nativa?

28

Me pregunto por qué las aplicaciones de Android no podrán ejecutarse de forma nativa en Ubuntu Touch . Quiero decir, ¿no es todo solo Linux?

usuario287536
fuente
1
El entorno de escritorio es un factor importante en la compatibilidad de una aplicación.
Patrick C. James
8
Esta es realmente una muy buena pregunta. Nooby de hecho, pero muy válido. Tener un voto a favor.
don.joey
Estoy de acuerdo con @ don.joey ya que esto no es algo fácil de investigar más allá de un tipo de conclusión "sí" o "no".
MGodby
Hubo una discusión interesante sobre el último ubuntu en vivo, que cubrió gran parte de este tema: youtube.com/watch?feature=player_embedded&v=etMduYRRwDc 25:00 27:10 52:45 54:47 55:20 <marcas de tiempo en algunos relevantes puntos
Mateo
¿No es también un problema que probablemente tengan CPU diferentes?
Kevin Fegan

Respuestas:

24

La respuesta corta es no."

Estrictamente hablando, el kernel de Linux proporciona poco más que una interfaz directa al hardware en el que se está ejecutando. Hay una pila completa de API, programas, aplicaciones, etc. específicos adicionales para teléfonos Android de los que dependen las aplicaciones de Android. Además, Android no se ejecuta en un kernel genérico de Linux, sino que se ejecuta en uno que ha sido altamente personalizado por Google con el propósito específico de ejecutar su sistema operativo.

Incluso si es técnicamente posible reproducir la pila completa requerida para que las aplicaciones de Android se ejecuten en otro sistema, sería muy inflada y extremadamente ineficiente.

MGodby
fuente
3
Correcto: ¿es extremadamente ineficiente ejecutar un conjunto de bibliotecas telefónicas en un escritorio que es 10 veces más potente ? Hemos estado ejecutando emuladores de teléfonos móviles en computadoras de escritorio durante una década.
MSalters
3
Respondí bajo la premisa de que el autor de la pregunta significaba de forma nativa, es decir, sin emuladores o virtualización.
MGodby
55
@MSalters Un emulador usaría más recursos para producir la misma salida en comparación con un programa nativo. Esa es más o menos la definición de ineficiencia. Y los emuladores de Android son particularmente lentos en mi experiencia.
jmathew
1
@jmathew Desde la perspectiva del desarrollador (al menos la mía), un beneficio es que si una aplicación se ejecuta razonablemente bien en un emulador en una máquina lenta, funcionará razonablemente bien en las pilas de teléfonos de bajo precio.
zxq9
2
@jmathew Creo que lo que MSalters estaba tratando de decir era que cuando ha sido práctico durante varios años usar un emulador, no hay forma de que ejecutar lo mismo de forma nativa pueda ser ineficiente.
Kasperd
1

Nokia n900 ejecuta maemo witch es un sistema operativo Linux y, sin embargo, puede ejecutar la aplicación de Android a través del entorno dalvik que se desarrolló para él, pero nunca se puso en el mercado o en los repositorios. ¿Por qué? Solo la sociedad que desarrolló el dalvik para n900 lo sabe. Ahora había otra iniciativa llamada apkenv. Parece que no había mucho que agregar para hacer que el n900 ejecute algunos juegos de Android y no importa el poder de la CPU o la CPU o el escritorio de Maemo, las aplicaciones funcionan allí como un lago en cualquier emulación, pero algunas funcionan perfectamente, algunas no. Entonces, sobre ubuntu touch no se trata de una cuestión técnica (puede ser que esté equivocado, pero un teléfono táctil oficial de ubuntu es un xiaomi que también se usa para Android, por lo que el hardware no es un problema en este caso), pero lo haré y la ley sabrá que Google ganó '

Patricio
fuente
1

La respuesta a su pregunta es un GRAN NO.

Android es completamente diferente de Ubuntu Touch, aunque Android se basa en el kernel de Linux, pero eso no significa que las aplicaciones nativas de Android puedan ejecutarse en Linux y viceversa.

La similitud en el núcleo entre diferentes sistemas operativos no hace que sus aplicaciones sean ejecutables en estos diferentes sistemas operativos. Kernel es la capa de software más baja de un sistema. Por encima del núcleo se encuentra el espacio de usuario que consiste en el software del sistema y la interfaz de la aplicación .

El SO con el mismo núcleo puede tener espacios de usuario completamente diferentes y las aplicaciones nativas se ejecutan en un espacio de usuario particular.

Además, las aplicaciones de Android se desarrollan generalmente utilizando aplicaciones Java y Android que se ejecutan en un entorno de tiempo de ejecución ( Dalvik o ART ) que toma el bytecode de JVM como entrada, mientras que las aplicaciones de Linux se convierten directamente en código de máquina tras la compilación.

Las aplicaciones desarrolladas para Android que usan C ++ no pueden ejecutarse directamente en el entorno de Linux, sino que deben compilarse primero para los sistemas de Linux.

Faizan Akram Dar
fuente