Der Titel ist ziemlich selbsterklärend: Ist Android ein 32- oder 64-Bit-Betriebssystem? Ich gehe davon aus, dass es sich um das eine oder andere und nicht um beides handelt, da dies das Hosten von 32- und 64-Bit-Binärdateien bei Google Play erzwingen würde. Ich weiß, dass dies eine einfache Frage ist und dass andere Leute sie gestellt haben, aber für mein Leben konnte ich keine Antwort im Internet finden, und es gibt sicherlich keine in dieser SE. P. >

Antwort

Im Bereich der ARM-Chipsätze ist dies der gemeinsame Faktor, der gesamte Android-Stack, aus dem nahezu identischen Kernel basierend auf Linux sind in der Tat 32-Bit, Cross-Compiled aus einer 32-Bit / 64-Bit-Host-Umgebung, die Host-Umgebung ist in der Regel eine der Distributionen von Linux. Die von Google empfohlene Distribution zum Erstellen und Cross-Kompilieren von Android ist Ubuntu .

Die Android-Laufzeitbibliothek (Medien, Grafiken, Dateisystem, um nur einige zu nennen) ist auch 32bit, aber wenn wir die Schicht des Dalvikvm erreichen, wird die Anzahl der Bits irrelevant, da es sich zu diesem Zeitpunkt um die Apks handelt, die aus dem Google Play Store stammen. Es handelt sich um nativen Bytecode (ein „Nebenprodukt“ des generierten Java-Codes, der kompiliert wurde in einen tragbaren Bytecode), der auf die DalvikVM (Virtual Machine) abzielt, die wiederum den Bytecode interpretiert und übersetzt, der auf den rohen ARM-Befehlssatz abzielt.

Froyo war das letzte Android, das die Kompilierung in einer 32-Bit-gehosteten Umgebung ermöglichte Es wurde für den ARM-Chipsatz übergreifend kompiliert.

Lebkuchen war vor etwa drei Jahren das erste „zukünftige“ Android-Gerät, das die Verwendung einer 64-Bit-gehosteten Umgebung einführte, in der es erstellt wurde . Es gab viele Hacks, um Gingerbread unter einer 32-Bit-Hosted-Umgebung zu erstellen.

ICS und JB und höher erfordern jetzt definitiv eine 64-Bit-Umgebung, um die Kompilierung zu beschleunigen und die Bearbeitungszeit beim Erstellen zu verkürzen.

Zusammenfassend lässt sich sagen, dass das, was Sie im Play Store sehen, keinen Einfluss darauf hat, ob 32-Bit oder 64-Bit verwendet werden, und daher irrelevant ist.

Randnotiz: Typisch 16 GB RAM / Die Quad-Core / 64-Bit-Linux-Distribution, die Zeit, die zum Erstellen von ICS von Grund auf benötigt wird, dauert maximal 30 Minuten. Wenn es sich um eine 32-Bit-Linux-Distribution handelt, hätte dies in der Tat länger gedauert und möglicherweise zu einem Zusammenbruch der CPU geführt, da einfach nicht genug vorhanden ist Rechenleistung zum Abwickeln und Herausdrehen von überkompiliertem Code, der ein sehr anspruchsvoller und anstrengender Prozess ist!

Beweis dafür.

Ziehen Sie eine native ARM-Binärdatei ein, die in /system/bin oder /system/xbin enthalten ist Beispiel: /system/bin/dalvikvm Dies ist die Dalvik VM-Binärdatei, die für die oberen Schichten von Java und APKs verantwortlich ist.

Untersuchen Sie nun die Binärdatei, indem Sie diese ausgeben Befehl: file dalvikvm gibt eine Zusammenfassung des Dateityps an. Die erwartete Ausgabe lautet wie folgt:

dalvikvm: ELF 32-Bit-LSB-ausführbare Datei, ARM, Version 1 (SYSV), dynamisch verknüpft (verwendet gemeinsam genutzte Bibliotheken), entfernt

Beachten Sie den Verweis auf 32-Bit-ELF, der in ARM überkompiliert ist und eine ausführbare Binärdatei ist.

Richtig, fahren Sie fort, lassen Sie uns untersuchen Eine native gemeinsam genutzte Bibliothek in /system/lib, z. B. /system/lib/libandroid_runtime.so, gibt jetzt file libandroid_runtime.so aus. Die erwartete Ausgabe wäre folgende:

libandroid_runtime.so: Gemeinsames ELF-32-Bit-LSB-Objekt, ARM, Version 1 (SYSV), dynamisch verknüpft, entfernt

Beachten Sie erneut, dass die 32-Bit-ELF in ARM überkompiliert ist und eine gemeinsam genutzte Bibliothek ist.

Der Schlüssel zu Die Cross-Kompilierung des Hosts befindet sich in der AOSP-Quelle, dh, der Gingerbread-Build musste ursprünglich auf einem 64-Bit-Hostsystem erstellt werden. Hier ist die Linkgruppe unter Bezugnahme auf wie man die Skripte patcht, damit sie auf dem 32-Bit-Host mit zwei Patches für build/core.mk und build/main.mk ( kombiniert ) in der Gerrit-Überprüfung von AOSP.

Als Folge Als Ergebnis hatte dieser Patch den Weg zu den Build-Skripten von ICS gefunden, in denen ich das Privileg hatte, ICS auf einer 32-Bit-Plattform zu kompilieren, deren Erstellung 3 Tage dauerte ( es war ein ICS-Port für das Zte Blade ). Jetzt sind die Anforderungen hochgefahren. Sie benötigen definitiv einen 64-Bit-Host, um die Kreuzkompilierung der Erstellung von AOSP ab ICS zu ermöglichen: )

Kommentare

  • Sie meinen also, dass das Kompilieren und Ausführen eines 32-Bit-Android-Betriebssystems langsamer dauert als das 64-Bit-Betriebssystem? Ist es eine allgemeine Anforderung, für moderne Android-Betriebssysteme wie Kitkat oder L nur 64-Bit zu verwenden?
  • Es gibt jetzt 64-Bit-ARM-Geräte läuft 64-Bit-Android.
  • Ich ‚ stimme ab, da sich die meisten Antworten darauf beziehen, welche Umgebungen zum Kompilieren von Android verwendet werden, was für das Unternehmen völlig irrelevant ist Frage.
  • @DanHulme Diese Antwort wurde vor fast 4 Jahren veröffentlicht … ja, die Landschaft hat sich seitdem sehr verändert. 🙂
  • Ja, das ‚ ist wahr, und ich ‚ werde eine neue Antwort über die Situation heute, aber die Kompilierungsumgebung war schon immer ein roter Hering.

Antwort

Ursprünglich wurde Android geschrieben Nur für 32-Bit-Prozessoren: und speziell für 32-Bit-ARM-Prozessoren. Später haben Intel und MIPS viel in die Unterstützung ihrer Architekturen durch Android investiert: aber immer noch nur 32-Bit-Prozessoren. Sie konnten dies ohne (viele) Kompatibilitätsprobleme tun, da die meisten Apps nicht als Binärdateien ausgeliefert werden. In Java geschrieben werden sie stattdessen als Bytecode ausgeliefert, was eine virtuelle Maschine auf dem Telefon wird beim Ausführen der App mit der Architektur des Telefons kompiliert. Einige Apps enthalten native Komponenten, die als Binärdatei ausgeliefert werden. Dies geschieht, um einige Arten von Apps schneller zu machen (insbesondere Spiele) oder um der App den Zugriff auf C-Bibliotheken zu ermöglichen, die in Java nicht verfügbar sind. Diese Apps können mehr als eine Binärdatei für die nativen Codeteile enthalten, damit sie ausgeführt werden können auf verschiedenen Architekturen. Trotzdem sind die meisten Apps nur Java-fähig, sodass sie nur auf jeder Architektur funktionieren.

Das oben Gesagte war zum Zeitpunkt dieser Frage (und der meisten anderen Antworten) alles zutreffend geschrieben, aber nicht mehr. Lollipop führte die Unterstützung für die neuen 64-Bit-ARM-Prozessoren ( ARMv8 ) sowie für die x86_64-Prozessoren von Intel und AMD ein, was bedeutet, dass Android jetzt sowohl 32-Bit- als auch 32-Bit-Prozessoren unterstützt 64-Bit-Prozessoren. Das Nexus 9 war das erste Flaggschiff unter den 64-Bit-Android-Geräten. 64-Bit-Unterstützung ermöglicht nicht nur den Zugriff auf neue Befehlssatzerweiterungen, sondern ermöglicht auch, dass Apps mehr als 4 GB RAM verwenden können. Die meisten Apps brauchen nicht so viel, aber High-End-Spiele und Software zur Erstellung von Fotos / Videos können sie sicherlich nutzen: Android wird zu einer Plattform für Spiele in Konsolenqualität (einschließlich VR-Spiele) und zum Erstellen von Inhalten. Java-Apps Sie müssen nicht aktualisiert werden, um dies zu nutzen, da die virtuelle Maschine sie immer in die Architektur des Telefons kompiliert, Apps mit nativem Code jedoch.

Da ARMv8 mit 32- abwärtskompatibel ist. Bitcode (genauso wie x86_64 weiterhin x86-Code ausführen kann) können auch Apps, die nativen Code für 32-Bit-Prozessoren enthalten, weiterhin auf 64-Bit-Android ausgeführt werden. Daher muss eine App nur für 64-Bit kompiliert werden, wenn sie nativen Code enthält Code und möchte die höhere RAM-Grenze oder die neuen Funktionen der Architektur nutzen.

Antwort

Alle ARM-Chips sind derzeit 32-Bit. Aus diesem Grund führt Android derzeit den gesamten Code in einer 32-Bit-Umgebung.

64-Bit-Prozessoren sollen 2014 gestartet werden .

Kommentare

  • Das ‚ ist nicht gerade eine zuverlässige Quelle, da es sich um Server handelt, um zu zitieren:“ Smartphone ist etwas weiter weg „, sagte Forsyth. , wir ‚ sprechen über ARM im Kontext von Android / Smartphones / Tablets.

Antwort

Ist Android ein 32- oder 64-Bit-Betriebssystem? Ich gehe davon aus, dass es sich um das eine oder andere und nicht um beides handelt, da dies das Hosten von 32- und 64-Bit-Binärdateien bei Google Play erzwingen würde.

Weder eigentlich. Android ist ein Dalvik VM-basiertes Betriebssystem, und Google Play hostet Dalvik-Anwendungen. Dalvik VM selbst ist wie Java VM unabhängig von der Bitheit der physischen Maschine immer 32-Bit.

Wie Sie vermutet haben, müssen Anwendungen, die mit nativen Binärdateien und NDK-Anwendungen geliefert werden, mit Binärdateien geliefert werden, die für jede Architektur kompiliert wurden es soll laufen bei. Die häufigste Architektur, auf der Android ausgeführt wird, ist ARM 32-Bit. Es gibt jedoch auch Geräte, die auf x86 und MIPS ausgeführt werden.

Antwort

Ich rate nur, aber ich denke, das erklärt es auch nur einfach. Es hängt davon ab, welches Gerät Sie verwenden. Es gibt vier Arten von Betriebssystemen: ARM, ARM 64, X84 und X84_64. Das ARM ist die beliebte 32-Bit-Plattform, ARM 64 ist auch die beliebte 64-Bit-Plattform, X84 ist die ungewöhnliche Plattform und wird auf Zenfones verwendet, genau wie X84_64, die ungewöhnlich ist und auf Android-Emulatoren verwendet wird. Ich habe diese OS-Informationen zu Open Gapps

erhalten

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.