A cím nagyjából magától értetődő: az Android 32 vagy 64 bites operációs rendszer? Feltételezem, hogy ez egyik vagy másik, és nem mindkettő, mivel ez mind a 32, mind a 64 bites bináris fájlokat a Google Playen kényszerítené. Tudom, hogy ez egy egyszerű kérdés, és más emberek is feltették, de életemre nem sikerült választ találnom az interneten, és ezen az SE-n biztosan nincs.

Válasz

Az ARM lapkakészletek területén, amely a közös tényező, a teljes Android-verem, a majdnem azonos kerneltől a következő alapján: A Linux valójában 32 bites, általában 32 vagy 64 bites hosztkörnyezetből áll össze, a hosztkörnyezet általában a Linux egyik disztribúciója. Az Android készítéséhez és keresztfordításához ajánlott terjesztés a Google által az Ubuntu .

Az Android futási idejű könyvtár (média, grafika, fájlrendszer, csak néhányat említve) szintén 32 bites, de amint elérjük a dalvikvm rétegét, akkor a bitek száma lényegtelenné válik, mivel ebben a pillanatban a Google Play Áruházból érkező apkok natív bytecode-ok (A létrehozott Java kód “mellékterméke”) hordozható bytecode-ként), amely a DalvikVM-et (virtuális gép) veszi célba, amely viszont értelmezi és lefordítja a nyers ARM utasításkészletet célzó bájtkódot.

A Froyo volt az utolsó Android, amely 32 bites hosztolt környezetben engedélyezte a fordítást. az ARM lapkakészlet kereszttel lett lefordítva.

A mézeskalács volt az első “jövőbeli” Android, akkor körülbelül három évvel ezelőtt, amely bevezette a 64 bites hosztolt környezet használatának követelményét, amelyben épült. . Számos feltörés történt annak érdekében, hogy a mézeskalács 32 bites hostolt környezetben épüljön fel.

Az ICS és a JB, és felfelé most már mindenképpen 64 bites környezetre van szükség az összeállítás felgyorsításához és az épület megfordulási idejének csökkentéséhez.

Összefoglalva: a Play Áruházban látottak nincsenek hatással arra, hogy 32 vagy 64 bitet használnak-e, és ezért lényegtelen.

Mellékjegyzet: Tipikus 16 GB RAM / A négymagos / 64 bites Linux disztribúció, az ICS nullától való felépítéséhez szükséges idő maximum 30 percet vesz igénybe, ha ez egy 32 bites Linux terjesztés lenne, akkor hosszabb ideig tartott volna, valójában CPU összeomlást okozhat, mivel egyszerűen nincs elég feldolgozási teljesítmény a keresztfordított kód összeomlásához és kikapcsolásához, ami nagyon megterhelő és adóztató folyamat!

Ennek igazolása.

Húzza be a natív ARM bináris fájlokat, amelyek megtalálhatók a /system/bin vagy a /system/xbin például /system/bin/dalvikvm, ez a Dalvik virtuális gép bináris, amely felelős a Java és az APK felső rétegéért.

Most vizsgálja meg a bináris dokumentumot ennek kiadásával parancs: file dalvikvm amely összefoglalja a fájl típusát, a várható kimenet a következő lesz:

dalvikvm: ELF 32 bites LSB futtatható, ARM, 1. verzió (SYSV), dinamikusan összekapcsolt (megosztott libeket használ), lecsupaszítva

Figyelje meg a 32 bites ELF hivatkozását, és az ARM-hez fordított, bináris futtatható fájl.

Jobbra, haladva haladjon meg a (z) /system/lib könyvtárban található natív megosztott könyvtár, például /system/lib/libandroid_runtime.so, most kiadja file libandroid_runtime.so, a várható kimenet a következő lenne:

libandroid_runtime.so: ELF 32 bites LSB megosztott objektum, ARM, 1. verzió (SYSV), dinamikusan összekapcsolva, lecsupaszítva

Ismételten vegye észre, hogy annak 32 bites ELF-je keresztbe fordítva az ARM-be és megosztott könyvtár.

A kulcs a a gazdagép keresztkompilációja megtalálható az AOSP forrásban, vagyis a Gingerbread buildnek eredetileg 64 bites gazdagéprendszerre volt követelménye, itt a hírcsoport linky a a szkriptek javítása, hogy a 32 bites gazdagépre épülhessen, amelynek két javítása van, itt található a build/core.mk és build/main.mk ( együttesen ) az AOSP Gerrit-felülvizsgálatán.

Ezt követően Ennek eredményeként ez a javítás eljutott az ICS összeállítási szkriptjeihez, amelyekben megtiszteltetés számomra az ICS összeállítása egy 32 bites platformon, amelynek elkészítése 3 napig tartott ( az ICS portja volt a Zte Blade-hez ). A követelmények szigorodtak, és do feltétlenül 64 bites gazdagépre van szüksége, hogy lehetővé tegye az AOSP felépítésének keresztkompilálását az ICS-től felfelé: )

Megjegyzések

  • Tehát azt akarja mondani, hogy az an összeállítása és futtatása 32 bites Android operációs rendszeren lassabban megy, mint a 64 bitesnél? Általános követelmény, hogy mind a 64 bites legyen a modern Android operációs rendszerekhez, például a Kitkat vagy a L ?
  • Jelenleg vannak 64 bites ARM eszközök 64 bites Androidot futtat.
  • I ‘ m visszafogom, mert a válasz nagy része arról szól, hogy milyen környezetekkel használják az Android fordítását , ami teljesen irreleváns a kérdés.
  • @DanHulme Ez a válasz 4 évvel ezelőtt jelent meg … igen, a táj azóta sokat változott. 🙂
  • Igen, ez ‘ igaz, és én ‘ új választ fogok küldeni a a mai helyzet, de az összeállítási környezet mindig vörös hering volt.

Válasz

Eredetileg az Androidot írták csak 32 bites processzorokhoz: és különösen 32 bites ARM processzorokhoz. Később az Intel és a MIPS sokat fektetett abba, hogy az Android is támogassa architektúrájukat: de továbbra is csak 32 bites processzorok. Ezt (sok) kompatibilitási probléma nélkül tudták megtenni, mert a legtöbb alkalmazást nem binárisként szállítják. Java-ban írva ehelyett bytecode ként szállítják, ami egy virtuális gép a telefonon fordítja össze a telefon architektúráját, amikor az alkalmazás fut. Néhány alkalmazás tartalmaz natív komponenseket, amelyeket binárisként szállítanak. Ez azért történik, hogy bizonyos típusú alkalmazások gyorsabbak legyenek (különösen a játékok), vagy hogy az alkalmazások hozzáférjenek a C könyvtárakhoz, amelyek nem érhetők el a Java-ban. Ezek az alkalmazások több natív kódot is tartalmazhatnak a natív kódrészekhez, hogy futtathassák őket. különböző architektúrákon. Ennek ellenére az alkalmazások többsége csak Java-alapú, így csak bármilyen architektúrán dolgozik.

A fentiek mind igazak voltak abban az időben, amikor ez a kérdés (és a többi válasz nagy része) írott, de már nem. A Lollipop támogatást vezetett be az új 64 bites ARM processzorokhoz ( ARMv8 ), valamint az Intel és az AMD x86_64 processzoraihoz, ami azt jelenti, hogy az Android mostantól mind a 32 bites, mind az 64 bites processzorok. A Nexus 9 volt az első zászlóshajó, 64 bites Android-eszköz. Az új utasításkészlet-bővítményekhez való hozzáférés mellett a 64 bites támogatás azt jelenti, hogy az alkalmazások 4 GB-nál több RAM-ot használhatnak fel. A legtöbb alkalmazásnak nem lesz szüksége annyira, de a csúcskategóriás játékok és a fotó / videó készítő szoftverek biztosan ki tudják használni: az Android felé tolják a konzol minőségű játékok (beleértve a VR-játékokat) és a tartalom létrehozásának platformját. Ennek kihasználása érdekében nem kell frissíteni, mert a virtuális gép mindig lefordítja őket a telefon architektúrájához, de a natív kóddal rendelkező alkalmazások igen.

Mivel az ARMv8 visszafelé kompatibilis a 32- bites kód (ugyanúgy, ahogy az x86_64 továbbra is futtathatja az x86 kódot), még azok az alkalmazások is futtathatók 64 bites Androidon, amelyek natív kódot tartalmaznak a 32 bites processzorokhoz. Tehát egy alkalmazást csak akkor kell lefordítani 64 bitesre, ha natív tartalmaz kód: és a magasabb RAM korlátot vagy az architektúra új szolgáltatásait szeretné kihasználni.

Válasz

Az összes ARM chip jelenleg 32 bites. Emiatt az Android jelenleg az összes kód 32 bites környezetben.

A 64 bites processzorok elindulnak 2014-ben .

Megjegyzések

  • Ez a ‘ nem éppen megbízható forrás, mivel a szerverekről volt szó, idézve ” Az okostelefon egy kicsit távolabb van “- mondta Forsyth. , ‘ az ARM-ról beszélünk az Android / okostelefonok / táblagépek összefüggésében.

Válasz

Az Android 32 vagy 64 bites operációs rendszer? Feltételezem, hogy ez egyik vagy másik, és nem mindkettő, mivel ez mind a 32, mind a 64 bites bináris fájlokat kényszerítené a Google Playen történő tárolására.

Valójában egyiket sem. Az Android egy Dalvik VM alapú operációs rendszer, és a Google Play otthont ad a Dalvik alkalmazásoknak. Maga a Dalvik VM, a Java VM-hez hasonlóan, mindig 32 bites, függetlenül a fizikai gép bitségétől.

Amint gyanította, a natív bináris fájlokkal és NDK alkalmazásokkal szállított alkalmazásoknak minden architektúrához fordított bináris fájlokkal együtt kell szállítaniuk címen futni szándékozik. A leggyakoribb architektúra, amelyen az Android fut, az ARM 32 bites; vannak azonban olyan eszközök is, amelyek x86-on és MIPS-en futnak.

Válasz

Csak tippelek, de azt hiszem, hogy ez is csak ezt magyarázza egyszerű. Attól függ, hogy milyen eszközt használ, négyféle operációs rendszer létezik, amelyek ARM, ARM 64, X84 és X84_64. Az ARM a népszerű 32 bites platform, az ARM 64 a népszerű, de a 64 bites platform, az X84 a nem mindennapi platform, amelyet a Zenfones-on használnak, ugyanúgy, mint az X84_64 nem mindennapi és az Android emulátoroknál. Ezeket az információkat az Open Gapps

-ről kaptam

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük