Otsikko on melko itsestään selvä: onko Android 32- tai 64-bittinen käyttöjärjestelmä? Oletan, että kyseessä on yksi tai toinen eikä molemmat, koska se pakottaisi sekä 32- että 64-bittisiä binäärejä isännöimään Google Playssa. Tiedän, että tämä on yksinkertainen kysymys, ja että muut ihmiset ovat kysyneet sitä, mutta en ole koko elämäni ajan löytänyt vastausta verkosta, eikä sitä todellakaan ole tällä SE: llä.
Vastaus
ARM-piirisarjojen alueella, joka on yhteinen tekijä, koko Android-pino, lähes identtisestä ytimestä, joka perustuu Linux on itse asiassa 32-bittinen, ristiinkokoettu yleensä joko 32- / 64-bittisestä isäntäympäristöstä, isäntäympäristö on yleensä yksi Linuxin jakeluista. Googlen suosittelema jakelu Androidin rakentamiseksi ja ristikääntämiseksi on Ubuntu .
Androidin ajonaikainen kirjasto (media, grafiikka, tiedostojärjestelmä, muutamia mainitakseni) ovat myös 32 bittiä, mutta kun saavutamme dalvikvm-kerroksen, bittien lukumäärä muuttuu merkityksettömäksi, koska se on tässä vaiheessa, Google Play Kaupasta tulevat apkit ovat natiivi tavukoodi (generoidun Java-koodin ”sivutuote”) kannettavaksi tavukoodiksi), joka kohdistaa DalvikVM: ään (virtuaalikone), joka puolestaan tulkitsee ja kääntää tavukoodin kohdistaen raakaa ARM-käskysarjaa.
Froyo oli viimeinen Android, joka mahdollisti kääntämisen 32-bittisessä isännöityssä ympäristössä, jossa se oli ristikäännetty ARM-piirisarjan kohdentaminen.
Piparkakut olivat ensimmäinen ”tulevista” Androidista, tuolloin noin kolme vuotta sitten, mikä otti käyttöön vaatimuksen käyttää 64-bittistä isännöityä ympäristöä, johon se rakennettiin. . Oli monia hakkereita saadakseen piparkakut rakennettavaksi 32-bittisessä isännöityyn ympäristöön.
ICS ja JB sekä ylöspäin edellyttävät nyt varmasti 64-bittistä ympäristöä kääntämisen nopeuttamiseksi ja rakennuksen läpimenoajan lyhentämiseksi.
Yhteenvetona voidaan todeta, että Play-kaupassa näkemälläsi ei ole merkitystä sillä, käytetäänkö 32- tai 64-bittistä, joten sillä ei ole merkitystä.
Sivuhuomautus: Tyypillinen 16 Gt RAM / Neliytiminen / 64-bittinen Linux-jakelu, ICS: n rakentamiseen tyhjästä kuluva aika kestää enintään 30 minuuttia, jos tämä olisi 32-bittinen Linux-jakelu, se olisi kestänyt kauemmin, itse asiassa se voi aiheuttaa prosessorin sulamisen, koska yksinkertaisesti ei ole tarpeeksi prosessointiteho, jotta voidaan kääntää ja kääntää ristikäännetty koodi, joka on erittäin vaativa ja verotettava prosessi!
Todiste tästä.
Vedä sisään kaikki alkuperäiset ARM-binaarit, jotka löytyvät kohdasta /system/bin
tai /system/xbin
, esimerkiksi /system/bin/dalvikvm
, tämä on Dalvik VM -binaari, joka vastaa Java- ja APK-tiedostojen ylemmistä kerroksista.
Tutki nyt binaaria antamalla tämä komento: file dalvikvm
joka antaa yhteenvedon tiedostotyypistä, odotettu tulos olisi seuraava:
dalvikvm: ELF 32-bittinen LSB-suoritettava tiedosto, ARM, versio 1 (SYSV), dynaamisesti linkitetty (käyttää jaettuja lib-tiedostoja), riisuttu
Huomaa viittaus 32-bittiseen ELF: ään, ja se on ristikäännetty ARM: iin ja on binäärinen suoritustiedosto.
Oikea, siirrytään eteenpäin, tarkastetaan natiivista jaetusta kirjastosta, joka löytyy osiosta /system/lib
, esimerkiksi /system/lib/libandroid_runtime.so
, julkaise nyt file libandroid_runtime.so
, odotettu lähtö olisi seuraava:
libandroid_runtime.so: ELF 32-bittinen jaettu LSB-objekti, ARM, versio 1 (SYSV), dynaamisesti linkitetty, riisuttu
Huomaa jälleen, että sen 32-bittinen ELF on ristikäännetty ARM: ään ja on jaettu kirjasto.
isännän ristikokoelma löytyy AOSP-lähteestä, eli piparkakkujen koontiversio oli alun perin vaatimus rakentaa 64-bittiselle isäntäjärjestelmälle, tässä uutisryhmä linky viittaa komentosarjojen korjaaminen saadaksesi sen rakentamaan 32-bittiselle isännälle , jolla on kaksi täältä löytyvää korjaustiedostoa build/core.mk
ja build/main.mk
( yhdistettynä ) AOSP: n Gerrit-arvostelussa.
Seuraavana Tämän seurauksena tämä korjaustiedosto oli tullut tiensä ICS: n komentosarjoihin, joissa minulla oli etuoikeus kääntää ICS 32-bittiselle alustalle, jonka rakentaminen kesti 3 päivää ( se oli Zte-terän ICS-portti ). Vaatimukset on nyt kirjattu. do tarvitset ehdottomasti 64-bittisen isännän, jotta AOSP-rakennuksen ristikokoaminen ICS: stä ylöspäin: )
Kommentit
- Tarkoitatko siis, että 32-bittisen Android-käyttöjärjestelmän kääntäminen ja suorittaminen vievät hitaammin kuin 64-bittisessä? Onko yleinen vaatimus olla 64-bittinen nykyaikaiselle Android-käyttöjärjestelmälle, kuten Kitkat tai L ?
- 64-bittisiä ARM-laitteita on nyt olemassa käynnissä 64-bittinen Android.
- Äänestän ’, koska suurin osa vastauksesta koskee sitä, mitä ympäristöjä käytetään kääntämään Android, mikä on täysin merkityksetöntä kysymys.
- @DanHulme Tämä vastaus lähetettiin lähellä 4 vuotta sitten … kyllä, maisema on muuttunut paljon siitä lähtien. 🙂
- Kyllä, se ’ on totta, ja minä ’ aion lähettää uuden vastauksen tilanne tänään, mutta kokoamisympäristö on aina ollut punainen silakka.
Vastaus
Alun perin Android kirjoitettiin vain 32-bittisille prosessoreille: ja erityisesti 32-bittisille ARM-prosessoreille. Myöhemmin Intel ja MIPS investoivat paljon siihen, että myös Android tukisi heidän arkkitehtuuriaan: mutta silti vain 32-bittiset prosessorit. He pystyivät tekemään tämän ilman (monia) yhteensopivuusongelmia, koska useimpia sovelluksia ei lähetetä binääreinä. Java-kirjoitettuna ne lähetetään sen sijaan nimellä tavukoodi , joka virtuaalikone puhelimessa kokoaa puhelimen arkkitehtuurin, kun sovellus on käynnissä. Jotkut sovellukset sisältävät alkuperäisiä komponentteja, jotka toimitetaan binaarina. Tämä tehdään tiettyjen sovellusten (erityisesti pelien) nopeuttamiseksi tai sovelluksen sallimiseksi käyttää C-kirjastoja, joita ei ole saatavana Java-sovelluksessa. Nämä sovellukset voivat sisältää useita binaareja alkuperäiskoodiosille, jotta ne voivat toimia eri arkkitehtuureissa. Silti suurin osa sovelluksista on vain Java-sovelluksia, joten ne vain työskentelevät minkä tahansa arkkitehtuurin parissa.
Ylläoleva oli totta silloin, kun tämä kysymys (ja suurin osa muista vastauksista) oli kirjoitettu, mutta ei enää. Lollipop esitteli tuen uusille 64-bittisille ARM-prosessoreille ( ARMv8 ) sekä Intelin ja AMD: n x86_64-prosessoreille, mikä tarkoittaa, että Android tukee nyt sekä 32-bittisiä että 64-bittiset prosessorit. Nexus 9 oli ensimmäinen lippulaiva 64-bittinen Android-laite. Uusien käskysarjalaajennusten lisäksi 64-bittinen tuki tarkoittaa, että sovellukset voivat käyttää yli 4 Gt RAM-muistia. Suurin osa sovelluksista ei tarvitse niin paljon, mutta huippuluokan pelit ja valokuvien / videoiden luomisohjelmistot voivat varmasti käyttää sitä: ajaa Androidia alustaksi konsolilaatuisille peleille (mukaan lukien VR-pelit) ja sisällön luomiselle. Tätä ei tarvitse päivittää, koska virtuaalikone kokoaa ne aina puhelimen arkkitehtuuriin, mutta natiivikoodilla varustetut sovellukset.
Koska ARMv8 on taaksepäin yhteensopiva 32- bittikoodi (samalla tavalla kuin x86_64 voi silti käyttää x86-koodia), jopa sovellukset, jotka sisältävät natiivikoodin 32-bittisille prosessoreille, voivat silti toimia 64-bittisessä Androidissa. Joten sovellus on käännettävä vain 64-bittiselle, jos se sisältää natiivikoodin code ja se haluaa hyödyntää RAM-muistin ylärajaa tai arkkitehtuurin uusia ominaisuuksia.
vastaus
Kaikki ARM-sirut ovat tällä hetkellä 32-bittisiä. Tämän vuoksi Android suorittaa kaikki koodit 32-bittisessä ympäristössä.
64-bittiset prosessorit käynnistettiin vuonna 2014 .
kommentit
- Että ’ ei ole aivan luotettava lähde, koska kyse oli palvelimista, lainaten ” Älypuhelin on hieman kauempana ”, Forsyth sanoi. , puhumme ’ ARM: sta Android- / älypuhelinten / tablettien yhteydessä.
Vastaa
Onko Android 32- tai 64-bittinen käyttöjärjestelmä? Oletan, että kyseessä on yksi tai toinen eikä molemmat, koska se pakottaisi sekä 32- että 64-bittisiä binäärejä isännöimään Google Playssa.
Kumpikaan oikeastaan. Android on Dalvik VM -pohjainen käyttöjärjestelmä, ja Google Play isännöi Dalvik-sovelluksia. Itse Dalvik VM, kuten Java VM, on aina 32-bittinen fyysisen koneen bittiestä riippumatta.
Kuten epäilit, alkuperäisten binääritiedostojen ja NDK-sovellusten mukana toimitettavien sovellusten on toimitettava jokaiselle arkkitehtuurille kootut binäärit. sen on tarkoitus toimia osoitteessa. Yleisin Android-arkkitehtuuri on ARM 32-bit; on kuitenkin myös laitteita, jotka toimivat x86: lla ja MIPS: llä.
Vastaa
En vain arvailla, mutta mielestäni tämä selittää sen vain yksinkertainen. Se riippuu siitä, mitä laitetta käytät, on neljä käyttöjärjestelmää, jotka ovat ARM, ARM 64, X84 ja X84_64. ARM on suosittu 32-bittinen alusta, ARM 64 on myös suosittu mutta 64-bittinen, X84 on harvinainen alusta ja sitä käytetään Zenfonesissa, sama kuin X84_64 sen harvinaista ja käytetään Android-emulaattoreissa. Sain nämä käyttöjärjestelmän tiedot Open Gapps
-sivustosta