Il titolo è praticamente autoesplicativo: Android è un sistema operativo a 32 o 64 bit? Presumo che sia luno o laltro e non entrambi, in quanto ciò costringerebbe sia i file binari a 32 bit che quelli a 64 bit ad essere ospitati su Google Play. So che questa è una domanda semplice, e che altre persone me lhanno fatta, ma per quanto mi riguarda non sono riuscito a trovare una risposta sul web, e non ce nè certamente una su questo SE.

Risposta

Nel regno dei chipset ARM che è il fattore comune, lintero stack Android, dal kernel quasi identico basato su Linux, infatti, sono a 32 bit, cross-compilati di solito da un ambiente host a 32 bit / 64 bit, lambiente host è solitamente una delle distribuzioni di Linux. La distribuzione consigliata, da Google, per la creazione e la compilazione incrociata di Android è Ubuntu .

La libreria run-time di Android (media, grafica, filesystem, per citarne solo alcuni) è anche a 32bit, ma man mano che si raggiunge il layer del dalvikvm, il numero di bit diventa irrilevante in quanto a questo punto gli apk provenienti da Google Play Store sono bytecode nativi (un “sottoprodotto” del codice Java generato compilato in un bytecode portatile) che ha come target DalvikVM (Virtual Machine) che a sua volta interpreta e traduce il bytecode indirizzato al set di istruzioni ARM grezzo.

Froyo è stato lultimo Android che ha consentito la compilazione in un ambiente ospitato a 32 bit in cui era cross-compilato mirando al chipset ARM.

Gingerbread è stato il primo del “futuro” Android, allora circa, tre anni fa, che ha introdotto il requisito per utilizzare un ambiente ospitato a 64 bit in cui è stato costruito . Cerano molti hack per costruire Gingerbread in un ambiente ospitato a 32 bit.

ICS e JB e versioni successive ora richiedono decisamente un ambiente a 64 bit per velocizzare la compilazione e ridurre i tempi di consegna nella costruzione.

Quindi, per riassumere, ciò che vedi sul Play Store non ha alcuna rilevanza sul fatto che vengano utilizzati 32 bit o 64 bit e quindi irrilevante.

Nota a margine: tipica RAM da 16 GB / La distribuzione Linux quad core / 64 bit, il tempo necessario per costruire ICS da zero, impiega 30 minuti al massimo, se si trattasse di una distribuzione Linux a 32 bit, ci sarebbe voluto più tempo, infatti, potrebbe causare un guasto della CPU in quanto semplicemente, non abbastanza potenza di elaborazione per sfornare e sviluppare codice cross-compilato, che è un processo molto impegnativo e faticoso!

Prova di ciò.

Inserisci qualsiasi binario ARM nativo trovato in /system/bin o /system/xbin , ad esempio, /system/bin/dalvikvm, questo è il binario di Dalvik VM responsabile dei livelli superiori di Java e APK.

Ora, esamina il binario immettendo questo comando: file dalvikvm che fornisce un riepilogo del tipo di file che è, loutput previsto sarebbe questo:

dalvikvm: eseguibile ELF LSB a 32 bit, ARM, versione 1 (SYSV), collegato dinamicamente (utilizza librerie condivise), spogliato

Notare il riferimento a ELF a 32 bit, è cross-compilato con ARM ed è un eseguibile binario.

Bene, andando avanti, esaminiamo “s una libreria condivisa nativa trovata in /system/lib, ad esempio /system/lib/libandroid_runtime.so, ora emette file libandroid_runtime.so, loutput atteso sarebbe questo:

libandroid_runtime.so: oggetto condiviso ELF LSB a 32 bit, ARM, versione 1 (SYSV), collegato dinamicamente, spogliato

Di nuovo, nota, il suo ELF a 32 bit, cross-compilato in ARM ed è una libreria condivisa.

La chiave per la compilazione incrociata dellhost può essere trovata nel sorgente AOSP, ovvero, la build di Gingerbread originariamente aveva un requisito per essere costruita su un sistema host a 64 bit, ecco il newsgroup linky facendo riferimento a come applicare una patch agli script per crearli su un host a 32 bit che ha due patch, disponibili qui, per build/core.mk e build/main.mk ( combinato ) sulla revisione di Gerrit di AOSP.

Come successiva risultato, questa patch era arrivata agli script di build di ICS in cui avevo il privilegio di compilare ICS su una piattaforma a 32 bit che impiegava 3 giorni per essere compilata ( era un port di ICS per Zte Blade ). Ora, i requisiti sono aumentati, fai sicuramente bisogno di un host a 64 bit per abilitare la compilazione incrociata della creazione di AOSP da ICS in su: )

Commenti

  • Quindi, intendi che la compilazione e lesecuzione di un sistema operativo Android a 32 bit richiede più tempo rispetto a 64 bit? È un requisito generale essere tutti a 64 bit per i moderni sistemi operativi Android come Kitkat o L ?
  • Ora ci sono dispositivi ARM a 64 bit con Android a 64 bit.
  • Ho ‘ downvoting perché la maggior parte della risposta riguarda gli ambienti utilizzati per compilare Android, il che è completamente irrilevante per domanda.
  • @DanHulme Questa risposta è stata pubblicata quasi 4 anni fa … sì, il paesaggio è cambiato molto da allora. 🙂
  • Sì, ‘ è vero e ‘ pubblicherò una nuova risposta sul situazione odierna, ma lambiente di compilazione è sempre stato una falsa pista.

Risposta

In origine, era scritto Android solo per processori a 32 bit: e in particolare, processori ARM a 32 bit. Successivamente, Intel e MIPS hanno investito molto per far sì che Android supportasse anche le loro architetture: ma ancora solo processori a 32 bit. Sono stati in grado di farlo senza (molti) problemi di compatibilità, perché la maggior parte delle app non vengono fornite come binari. Scritte in Java, vengono invece fornite come bytecode , che una macchina virtuale sul telefono si compila nellarchitettura del telefono quando viene eseguita lapp. Alcune app includono componenti nativi , forniti come binari. Questo viene fatto per rendere più veloci alcuni tipi di app (in particolare i giochi) o per consentire allapp di accedere a librerie C che non sono disponibili in Java. Queste app possono includere più di un binario per le parti di codice nativo, per consentire loro di essere eseguite su architetture diverse. Anche così, la maggior parte delle app sono solo Java, quindi funzionano su qualsiasi architettura.

Quanto sopra era tutto vero al momento in cui questa domanda (e la maggior parte delle altre risposte) era scritto, ma non più. Lollipop ha introdotto il supporto per i nuovi processori ARM a 64 bit ( ARMv8 ) nonché per i processori x86_64 di Intel e AMD, il che significa che Android ora supporta sia Processori a 64 bit. Il Nexus 9 è stato il primo dispositivo Android di punta a 64 bit. Oltre a dare accesso a nuove estensioni del set di istruzioni, il supporto a 64 bit significa che le app possono utilizzare più di 4 GB di RAM. La maggior parte delle app non avrà bisogno di così tanto, ma i giochi di fascia alta e il software per la creazione di foto / video possono sicuramente farne uso: spingendo Android verso una piattaforma per giochi di qualità per console (compresi i giochi VR) e per la creazione di contenuti. App Java non è necessario aggiornare per trarne vantaggio, perché la macchina virtuale li compila sempre nellarchitettura del telefono, ma le app con codice nativo sì.

Poiché ARMv8 è retrocompatibile con 32- codice bit (allo stesso modo in cui x86_64 può ancora eseguire codice x86), anche le app che includono codice nativo per processori a 32 bit possono ancora essere eseguite su Android a 64 bit. Quindi unapp deve essere compilata solo per 64 bit se contiene code e vuole sfruttare il limite di RAM più alto o le nuove funzionalità dellarchitettura.

Risposta

Tutti i chip ARM sono attualmente a 32 bit. Per questo motivo, Android viene eseguito tutto il codice in un ambiente a 32 bit.

Processori a 64 bit impostati per il lancio nel 2014 .

Commenti

  • Quella ‘ non è esattamente una fonte affidabile perché si trattava di server, per citare ” Lo smartphone è un po più lontano “, ha detto Forsyth. , ‘ stiamo parlando di ARM nel contesto di Android / smartphone / tablet.

Risposta

Android è un sistema operativo a 32 o 64 bit? Presumo che sia luno o laltro e non entrambi, in quanto ciò costringerebbe lhosting di file binari a 32 e 64 bit su Google Play.

Nemmeno in realtà. Android è un sistema operativo basato su VM Dalvik e Google Play ospita applicazioni Dalvik. La stessa Dalvik VM, come Java VM, è sempre a 32 bit indipendentemente dal valore della macchina fisica.

Come sospetterai, le applicazioni fornite con binari nativi e le applicazioni NDK devono essere fornite con binari compilati per ogni architettura è destinato a funzionare a. Larchitettura più comune su cui gira Android è ARM a 32 bit; tuttavia ci sono anche dispositivi che girano su x86 e MIPS.

Answer

Im solo indovinando ma penso che questo lo spieghi anche semplice. Dipende dal dispositivo che stai utilizzando, ci sono quattro tipi di sistema operativo che è ARM, ARM 64, X84 e X84_64. ARM è la popolare piattaforma a 32 bit, ARM 64 è anche la piattaforma popolare ma a 64 bit, X84 è la piattaforma non comune e utilizzata su Zenfones, come X84_64 è raro e utilizzato su emulatori Android. Ho ottenuto queste informazioni sul sistema operativo su Open Gapps

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *