Název je do značné míry vysvětlující: je Android 32bitový nebo 64bitový operační systém? Předpokládám, že je to jedno nebo druhé, a ne obojí, protože by to přinutilo hostit 32- a 64bitové binární soubory na Google Play. Vím, že se jedná o jednoduchou otázku, a že se na ni ptají jiní lidé, ale po celý život jsem nebyl schopen najít odpověď na webu a na této SE určitě žádná není.

Odpověď

V oblasti čipových sad ARM, což je společný faktor, je celá sada Android z téměř identického jádra založeného na Linux jsou ve skutečnosti 32bitové, křížově kompilované z obvykle buď 32bitového / 64bitového hostitelského prostředí, hostitelské prostředí je obvykle jednou z distribucí Linuxu. Doporučená distribuce od společnosti Google pro vytváření a křížové kompilace systému Android je Ubuntu .

Běhová knihovna pro Android (média, grafika, souborový systém, abychom jmenovali jen několik) jsou také 32bit, ale jak se dostaneme na vrstvu dalvikvm, pak počet bitů bude irelevantní, protože v tomto okamžiku jsou apky pocházející z obchodu Google Play nativní bytecode („vedlejší produkt“ generovaného kódu Java kompilován do přenosného bytecode), který se zaměřuje na DalvikVM (Virtual Machine), který zase interpretuje a překládá bytecode se zaměřením na surovou sadu instrukcí ARM.

Froyo byl poslední Android, který umožňoval kompilaci v 32bitovém hostitelském prostředí, ve kterém šlo o křížovou kompilaci zaměřenou na čipovou sadu ARM.

Gingerbread byl první z „budoucího“ Androidu, tehdy před třemi lety, který zavedl požadavek na použití 64bitového hostovaného prostředí, ve kterém byl postaven . Bylo mnoho hacků, které přiměly Perník stavět v 32bitovém hostitelském prostředí.

ICS a JB a výše nyní rozhodně vyžaduje 64bitové prostředí, aby se urychlila kompilace a zkrátila doba potřebná k sestavení.

Takže shrnuto, to, co vidíte v Obchodu Play, nemá žádný vliv na to, zda jsou použity 32bitové nebo 64bitové, a tedy irelevantní.

Postranní poznámka: Typická 16GB RAM / Čtyřjádrová / 64bitová distribuce Linuxu, čas potřebný k vytvoření ICS od začátku, trvá maximálně 30 minut, pokud by se jednalo o 32bitovou distribuci Linuxu, trvalo by to déle, ve skutečnosti by to mohlo způsobit roztavení CPU, protože tam prostě není dost zpracovatelská síla k proměňování a rozdělování křížově kompilovaného kódu, což je velmi náročný a zdanitelný proces!

Důkaz toho.

Vytáhněte libovolný nativní binární soubor ARM nalezený v /system/bin nebo /system/xbin , například /system/bin/dalvikvm, toto je binárka Dalvik VM, která je zodpovědná za horní vrstvy Java a APK.

Nyní prozkoumejte binární soubor vydáním tohoto příkaz: file dalvikvm, který poskytuje souhrn typu souboru, o který jde, očekávaný výstup by byl tento:

dalvikvm: 32bitový spustitelný soubor LSB ELF, ARM, verze 1 (SYSV), dynamicky propojený (používá sdílené libs), odstraněn

Všimněte si odkazu na 32bitový ELF a je kompilován do ARM a je binárním spustitelným souborem.

Správně, pokračujte, nechme zkontrolovat nativní sdílená knihovna nalezená v /system/lib, například /system/lib/libandroid_runtime.so, nyní vydá file libandroid_runtime.so, očekávaný výstup by byl tento:

libandroid_runtime.so: 32bitový sdílený objekt ELF LSB, ARM, verze 1 (SYSV), dynamicky propojený, odizolovaný

Znovu si všimněte, že jeho 32bitový ELF je kompilován do ARM a je sdílenou knihovnou.

Klíč k křížovou kompilaci hostitele najdete ve zdroji AOSP, tj. sestavení Gingerbread mělo původně požadavek na 64bitový hostitelský systém, zde je diskusní skupina linky odkazující na jak opravit skripty, aby se mohly stavět na 32bitovém hostiteli který má dvě opravy, které naleznete zde, pro build/core.mk a build/main.mk ( kombinované ) při kontrole Gerrit AOSP.

Následně Výsledkem bylo, že se tato oprava dostala do sestavovacích skriptů ICS, ve kterých jsem měl oprávnění kompilovat ICS na 32bitové platformě, jejíž sestavení trvalo 3 dny ( byl to port ICS pro Zte Blade ). Nyní jsou požadavky zvýšeny, do určitě potřebujete 64bitového hostitele, abyste umožnili křížovou kompilaci budovy AOSP od ICS výše: )

Komentáře

  • Takže máte na mysli, že kompilace a spuštění 32bitového OS Android trvá pomaleji než v 64bitovém? Je obecným požadavkem být 64bitovým pro moderní operační systém Android, jako je Kitkat nebo L ?
  • Nyní jsou k dispozici 64bitová zařízení ARM se 64bitovým systémem Android.
  • I ‚ m downvoting, protože většina odpovědí je o tom, jaké prostředí se používá k kompilaci Androidu, což je pro otázka.
  • @DanHulme Tato odpověď byla zveřejněna téměř před 4 lety … ano, krajina se od té doby hodně změnila. 🙂
  • Ano, to ‚ je pravda a já ‚ zveřejním novou odpověď o dnešní situace, ale prostředí kompilace vždy bylo červeným sleděm.

Odpověď

Původně byl Android napsán pouze pro 32bitové procesory: konkrétně 32bitové procesory ARM. Později Intel a MIPS hodně investovaly do podpory Androidu i pro jejich architektury: stále však pouze 32bitové procesory. Dokázali to bez (mnoha) problémů s kompatibilitou, protože většina aplikací se nedodává jako binární soubory. Napsané v Javě se místo toho dodávají jako bytecode , což je virtuální stroj v telefonu se při spuštění aplikace zkompiluje do architektury telefonu. Některé aplikace obsahují nativní komponenty, které jsou dodávány jako binární. Děje se to proto, aby některé druhy aplikací byly rychlejší (zejména hry), nebo aby aplikace měla přístup ke knihovnám C, které nejsou k dispozici v Javě. Tyto aplikace mohou obsahovat více než jeden binární kód pro nativní části kódu, aby mohly běžet na různých architekturách. Přesto je většina aplikací pouze v prostředí Java, takže fungují pouze na libovolné architektuře.

Výše uvedené platilo v době, kdy tato otázka (a většina ostatních odpovědí) byla napsáno, ale již ne. Lollipop představil podporu pro nové 64bitové procesory ARM ( ARMv8 ) i pro procesory Intel a AMD x86_64, což znamená, že Android nyní podporuje 32bitové i 64bitové procesory. Nexus 9 byl první vlajkovou lodí 64bitového zařízení Android. 64bitová podpora, stejně jako umožnění přístupu k novým rozšířením instrukčních sad, znamená, že aplikace mohou využívat více než 4 GB RAM. Většina aplikací to tolik nepotřebuje, ale špičkové hry a software pro vytváření fotografií a videa to jistě mohou využít: tlačit Android na platformu pro hry v konzolové kvalitě (včetně her VR) a pro vytváření obsahu. Aplikace Java k tomu, abyste to využili, není třeba aktualizovat, protože virtuální stroj je vždy kompiluje s architekturou telefonu, ale aplikace s nativním kódem ano.

Protože ARMv8 je zpětně kompatibilní s 32- bitový kód (stejným způsobem x86_64 může stále spouštět x86 kód), i aplikace, které obsahují nativní kód pro 32bitové procesory, mohou stále běžet na 64bitovém systému Android. Takže aplikace musí být kompilována pouze pro 64bitovou, pokud obsahuje nativní code a chce využít výhod vyššího limitu RAM nebo nových funkcí architektury.

Odpověď

Všechny čipy ARM jsou aktuálně 32bitové. Z tohoto důvodu Android aktuálně provádí veškerý kód ve 32bitovém prostředí.

64bitové procesory se spustí v roce 2014 .

Komentáře

  • To ‚ není zrovna spolehlivým zdrojem, protože se jednalo o servery, abych citoval „ Smartphone je o něco dále, “řekl Forsyth. , ‚ mluvíme o ARM v kontextu Android / Smartphony / Tablety.

Odpověď

Je Android 32bitový nebo 64bitový operační systém? Předpokládám, že je to jedno nebo druhé, a ne obojí, protože by to přinutilo hostit 32- a 64bitové binární soubory na Google Play.

Ani ve skutečnosti. Android je operační systém založený na Dalvik VM a Google Play hostí aplikace Dalvik. Samotný Dalvik VM, stejně jako Java VM, je vždy 32bitový bez ohledu na bitovost fyzického stroje.

Jak jste předpokládali, aplikace dodávané s nativními binárními soubory a aplikace NDK musí být dodávány s binárními soubory zkompilovanými pro každou architekturu. má běžet na. Nejběžnější architektura, na které Android běží, je 32bitová ARM; existují však také zařízení, která běží na x86 a MIPS.

Odpověď

Jen hádám, ale myslím, že to také vysvětluje jen jednoduchý. Záleží na tom, jaké zařízení používáte, existují čtyři typy os, kterými jsou ARM, ARM 64, X84 a X84_64. ARM je populární 32bitová platforma, ARM 64 je také populární, ale 64bitová platforma, X84 je neobvyklá platforma a používá se na Zenfones, stejně jako X84_64 je neobvyklá a používá se na Android Emulators. Tyto informace o operačním systému jsem získal na Open Gapps

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *