Was ist der Unterschied zwischen den Intel x86 Atom- und Atom_64-Systemabbildern?


96

Ich verwende den Android SDK Manager, um das Systemabbild für die Android M-Vorschau zu installieren. Mir ist jedoch aufgefallen, dass es zwei separate Images für die x86-Plattform gibt.

Geben Sie hier die Bildbeschreibung ein

Was sind die Unterschiede zwischen den beiden und welchen sollte ich für meine 64-Bit-Installation von Ubuntu 15.04 auswählen? (Meine CPU enthält AMD-V und ist im BIOS aktiviert, falls dies einen Unterschied macht.)


5
AFAIK, es ist nur so, dass sie verschiedene CPU-Architekturen emulieren, genau wie ARM, ARM64, MIPS usw.
CommonsWare

5
Es spielt keine Rolle, welchen Computer Sie als IDE verwenden. Dies hängt damit zusammen, welche Hardware Sie emulieren. Die Images von Atom vs Atom_64 geben also an, ob Sie die Ausführung Ihrer App auf einem Gerät mit einer Atom-CPU oder einer Atom-64-Bit-CPU emulieren möchten.
hungriger Gast

2
Es sieht so aus, als wäre eines ein 32-Bit-CPU-Image und das andere ein 64-Bit-Image.
Phantômaxx

Siehe die besten Antworten auf diese ähnliche Frage . IMHO eine klarere Erklärung als die Antworten unten.
ToolmakerSteve

Antworten:


68

Nach diesem Artikel

Mit Googles jüngster Version des 64-Bit-Emulator-Images x86 für Android 5.0 können Entwickler 64-Bit-Apps für Geräte mit Intel Atom-Prozessor erstellen.

Android 32-Bit vs 64-Bit

Viele 64-Bit-Plattformen, einschließlich Solaris, AIX *, HP-UX *, Linux *, OS X *, BSD und IBM z / OS *, verwenden heute ein LP64-Modell. Da Android auf dem Linux-Kernel basiert, verwenden Android 64-Bit-Plattformen auch das LP64-Modell.

Intel 64-Bit-CPUs verfügen über einen 32-Bit-Kompatibilitätsmodus. Während 32-Bit-Anwendungen auf 64-Bit-Prozessoren ausgeführt werden, können sie beim Kompilieren mit einem 64-Bit-Optimierungscompiler die architektonischen Vorteile einer 64-Bit-Umgebung nutzen .

So führen Sie 64-Bit-Apps auf Emulatoren aus

Erstellen Sie ein neues virtuelles Android-Gerät (AVD) basierend auf dem 64-Bit-Systemabbild des Intel Atom-Prozessors und öffnen Sie den AVD-Manager in SDK Manager oder ADT. Klicken Sie dann auf "Erstellen" und füllen Sie die Felder wie in der Abbildung gezeigt aus. Jetzt kann der 64-Bit-AVD-Emulator ausgeführt werden.

Geben Sie hier die Bildbeschreibung ein

64-Bit Android * OS

Standardmäßig werden alle 32-Bit-Anwendungen auf 64-Bit-Prozessoren fehlerfrei ausgeführt, möglicherweise jedoch langsamer als Anwendungen, die für die Ausführung auf 64-Bit-Prozessoren optimiert sind.

Android ist bereit für die 64-Bit-Verarbeitung

Einer der Hauptvorteile der Umstellung von 32-Bit- auf 64-Bit-Chips ist derzeit weitgehend theoretisch: Unterstützung für Exabyte RAM anstelle von nur Gigabyte. Die Art und Weise, wie 64-Bit-Chips mit Speicher umgehen, kann jedoch bei einigen Aufgaben auch zu einer Leistungsverbesserung führen.

Zusammenfassung

Android mit 64-Bit-Technologien für prozessorbasierte Intel Atom-Plattformen kann Entwicklern helfen, ihre Anwendungen jetzt zu optimieren . Das Erstellen von Android-Anwendungen für 64-Bit ist genauso einfach wie das Erstellen herkömmlicher 32-Bit-Android-Anwendungen. Sie können jetzt den offiziellen 64-Bit-Emulator für Android verwenden, um 64-Bit-Apps auszuführen und zu debuggen.

Vielleicht können Ihnen diese Artikel helfen, den Unterschied zwischen diesen Systemabbildern zu verstehen.

Aktualisieren

Google empfiehlt jetzt die Verwendung des x86-Emulators, wie Sie in diesem Bild sehen können

Geben Sie hier die Bildbeschreibung ein

Der Unterschied besteht darin, dass bei der Verwendung von x86-Images jetzt eine schnelle, hardwarebeschleunigte Virtualisierung unter den richtigen Bedingungen ( HAXM ) verwendet wird, sodass es nicht mehr so aussieht , als gäbe es eine fette Mittelschicht.


1
Sie haben Anwendungen erwähnt, die "mit einem 64-Bit-Optimierungscompiler kompilieren". Wie kann ich meine Anwendung mit einem 64-Bit-Compiler kompilieren und einen Vorteil erzielen, wenn ich in einer 64-Bit-Umgebung ausgeführt werde?
Artem M

3
@Jorge Casariego sollten wir intel x86 atom system imagewährend der Entwicklung von AVD für eine bessere Geschwindigkeit des Emulators verwenden?
Iraj Jelodari

8
Wenn uns die Zielarchitektur jedoch egal ist, lautet die wesentliche Frage: Läuft der Emulator "Atom_64" auf einer 64-Bit-Intel-CPU schneller? Ich habe keine Ahnung von Ihrer langen Antwort. Und Ihre Erwähnung von "x86" ist einfach verwirrend, da es sich um eine Wahl zwischen zwei Bildern handelt, die beide x86 erwähnen und sich nur durch die Erwähnung von Atom vs Atom_64 unterscheiden.
ToolmakerSteve

@ToolmakerSteve Ich habe in der Tat die gleichen Zweifel. Außerdem sehe ich, dass jetzt jedes Paket ziemlich groß geworden ist.
Daher

15

Zu Ihrer Information: In der offiziellen Android Studio- Dokumentation heißt es, dass "x86-System-Images im Emulator am schnellsten ausgeführt werden".

Ich habe das 64-Bit nicht ausprobiert, daher kann ich das nicht wirklich kommentieren. Vielleicht kann es jemand anderes.


1
Beantwortet nicht die Frage, bei der es um die Wahl zwischen zwei verschiedenen "x86" -Systemabbildern geht, von denen eines auch "atom_64" und das andere "atom" erwähnt.
ToolmakerSteve

9

Ich habe beide ausprobiert und x86_64 ist etwas langsamer als x86. Was ich nach ein wenig Recherche herausgefunden habe, ist, dass x86 mit einem 32-Bit-basierten Befehlssatz und einem 64-Bit-basierten Befehlssatz ausgeführt werden kann, während x86_64 nur mit 64-Bit ausgeführt wird, was etwas mehr Dekodierung erfordert ...

Sie können auch hier https://developer.android.com/ndk/guides/x86-64.html für weitere Informationen überprüfen .


1
Der erste Satz ist möglicherweise eine nützliche Information. Der Rest dieser Antwort ist grundsätzlich verwirrt, da sich "x86_64" auf das Gerät bezieht, das Sie emulieren , nicht auf den PC, auf dem Sie Ihren Emulator ausführen. Fazit: Es spielt keine Rolle, welche Sie auswählen, es sei denn, Sie testen auf subtile Verhaltensunterschiede bei einer bestimmten Zielarchitektur.
ToolmakerSteve

@ToolmakerSteve Es ist wichtig, wie die Hardware emuliert wird, insbesondere wenn die Host-CPU direkt über die Hardware-Virtualisierungstechnologie verwendet werden kann.
Andho

@andho kannst du mehr ausarbeiten? Ich bin verwirrt; Welches ist schneller / leichter / einfacher auf meinem System zu emulieren? x86 oder x86_64
Buncis

1
@buncis Wenn Ihre CPU VT unterstützt (die meisten tun dies) und Sie es in Ihrem BIOS aktiviert und die erforderlichen Module im Betriebssystem installiert haben, sollten sowohl x86 als auch x86_64 eine ähnliche Geschwindigkeit haben, da die Emulatoranweisungen direkt auf der Host-CPU ausgeführt werden. Wenn VT nicht verfügbar ist, wird die Softwareemulation verwendet. In diesem Fall ist x86 schneller / leichter / einfacher, da ein kleinerer Adressraum zum Emulieren von x86 erforderlich ist als x86_64 (z. B. 64-Bit-Registrierung gegenüber 32-Bit-Registrierung).
Andho

2

x86 bedeutet 32-Bit-System. Jetzt habe ich alle obigen Antworten gelesen und komme direkt zum Punkt.

x86 Atom -> 32bit Intel CPU mit 32bit Android Simulation

x86 Atom_64 -> 32bit Intel CPU mit 64bit Android Simulation

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.