Könnten Android-Apps nativ in Ubuntu touch ausgeführt werden?


28

Ich frage mich, warum Android-Apps unter Ubuntu Touch nicht nativ ausgeführt werden können . Ich meine, ist das nicht alles nur Linux?


1
Die Desktop-Umgebung ist ein wichtiger Faktor für die Kompatibilität einer Anwendung.
Patrick C. James

8
Das ist eigentlich eine ganz gute Frage. Nooby zwar, aber sehr gültig. Habe eine Gegenstimme.
don.joey

Ich stimme mit @ don.joey überein, da dies nicht leicht zu untersuchen ist, als nur eine "Ja" - oder "Nein" -Folgung.
MGodby

Es gab einige interessante Diskussionen über das neueste Ubuntu Live, die einen Großteil dieses Themas abdeckten : youtube.com/watch?feature=player_embedded&v=etMduYRRwDc 25:00 27:10 52:45 54:47 55:20 <Zeitstempel auf einigen relevanten Punkte
Mateo

Ist es nicht auch ein Problem, dass sie wahrscheinlich unterschiedliche CPUs haben?
Kevin Fegan

Antworten:


24

Die kurze Antwort lautet "nein".

Genau genommen bietet der Linux-Kernel kaum mehr als eine direkte Schnittstelle zu der Hardware, auf der er ausgeführt wird. Es gibt einen ganzen Stapel zusätzlicher Android-Telefon-spezifischer APIs, Programme, Anwendungen usw., von denen Android-Anwendungen abhängen. Darüber hinaus läuft Android nicht auf einem generischen Linux-Kernel, sondern auf einem, der von Google mit dem speziellen Zweck, das Betriebssystem auszuführen, stark angepasst wurde.

Selbst wenn es technisch möglich wäre, den gesamten Stapel zu reproduzieren, der für die Ausführung von Android-Anwendungen auf einem anderen System erforderlich ist, wäre dies aufgebläht und äußerst ineffizient.


3
Richtig - eine Reihe von Telefonbibliotheken auf einem Desktop auszuführen, der zehnmal leistungsstärker ist, ist äußerst ineffizient ? Seit einem Jahrzehnt betreiben wir Handy-Emulatoren auf Desktops.
MSalters

3
Ich antwortete auf der Prämisse, dass der Fragesteller nativ meinte, dh ohne Emulatoren oder Virtualisierung.
MGodby

5
@MSalters Ein Emulator würde im Vergleich zu einem nativen Programm mehr Ressourcen verwenden , um die gleiche Ausgabe zu erzeugen . Das ist so ziemlich die Definition von Ineffizienz. Und die Android-Emulatoren sind meiner Erfahrung nach besonders langsam.
Jmathew

1
@jmathew Aus der Sicht eines Entwicklers (zumindest meiner) besteht ein Vorteil darin, dass eine App, die in einem Emulator auf einem langsamen Computer einigermaßen gut läuft, auf den Haufen billiger Telefone einigermaßen gut funktioniert.
zxq9

2
@jmathew Ich denke, was MSalters zu sagen versuchte, war, dass, wenn es seit einigen Jahren praktikabel ist, einen Emulator zu verwenden, es keine Möglichkeit gibt, dass das selbe Ding von Haus aus ineffizient sein könnte.
Kasperd

1

Nokia n900 läuft maemo witch ist ein Linux-Betriebssystem und dennoch kann es die Android-App über die Dalvik-Umgebung ausführen, die dafür entwickelt wurde, aber niemals auf den Markt gebracht wurde oder Repisitorien. Warum? Nur die Gesellschaft, die den Dalvik für das n900 entwickelt hat, weiß es. Jetzt gab es eine weitere Initiative namens apkenv. Es scheint, als gäbe es nicht so viel hinzuzufügen, damit das n900 einige Android-Spiele ausführt, und unabhängig von der GPU- oder CPU-Leistung oder dem Desktop von Maemo laufen die Apps dort wie in jeder Emulation, aber manche laufen perfekt, andere nicht. Also über Ubuntu Touch ist es keine Frage der Technik (kann sein, dass ich falsch liege, aber ein offizielles Ubuntu Touch-Telefon ist ein Xiaomi, das auch für Android verwendet wird, also ist Hardware in diesem Fall kein Problem), aber wird und wird es tun, wenn Google gewinnt. '


1

Die Antwort auf Ihre Frage ist ein GROSSES NEIN.

Android unterscheidet sich völlig von Ubuntu Touch, obwohl Android auf dem Linux-Kernel basiert. Dies bedeutet jedoch nicht, dass die nativen Anwendungen von Android unter Linux ausgeführt werden können und umgekehrt.

Die Ähnlichkeit im Kernel zwischen verschiedenen Betriebssystemen macht ihre Anwendungen nicht auf diesen verschiedenen Betriebssystemen ausführbar. Der Kernel ist die unterste Softwareschicht eines Systems. Oberhalb des Kernels befindet sich der Benutzerraum, der aus Systemsoftware und Anwendungsschnittstelle besteht .

Betriebssysteme mit demselben Kernel können völlig unterschiedliche Benutzerbereiche haben und native Anwendungen können in einem bestimmten Benutzerbereich ausgeführt werden.

Darüber hinaus werden Android-Apps in der Regel mit Java- und Android-Apps entwickelt, die in einer Laufzeitumgebung ( Dalvik oder ART ) ausgeführt werden, die Bytecode von JVM als Eingabe verwendet, während Linux-Anwendungen beim Kompilieren direkt in Maschinencode konvertiert werden.

Anwendungen, die mit C ++ für Android entwickelt wurden, können nicht direkt in einer Linux-Umgebung ausgeführt werden, sondern müssen erst für Linux-Systeme kompiliert werden.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.