Apakah Android OS 32-bit atau 64-bit?

46

Judulnya cukup jelas: apakah Android OS 32 atau 64 bit? Saya berasumsi bahwa ini adalah salah satu atau yang lain dan bukan keduanya, karena itu akan memaksa biner 32-dan 64-bit untuk di-host di Google Play. Saya tahu bahwa ini adalah pertanyaan sederhana, dan orang lain telah menanyakannya, tetapi untuk kehidupan saya, saya belum dapat menemukan jawaban di web, dan tentu saja tidak ada satu pun di SE ini.

empatik
sumber

Jawaban:

48

Dalam ranah chipset ARM yang merupakan faktor umum, seluruh tumpukan Android, dari kernel yang hampir identik berbasis Linux, sebenarnya, 32bit, dikompilasi silang dari biasanya baik lingkungan host 32bit / 64bit, lingkungan host biasanya merupakan salah satu distribusi Linux. Distribusi yang disarankan, oleh Google, untuk membangun dan kompilasi silang Android adalah Ubuntu .

Pustaka run-time Android (media, grafik, sistem file, untuk menyebutkan beberapa) juga 32bit, tetapi ketika kita mencapai lapisan dalvikvm, maka jumlah bit menjadi tidak relevan karena pada saat ini, apks yang datang dari Google Play Store adalah bytecode asli ("produk sampingan" dari kode Java yang dihasilkan dikompilasi ke dalam bytecode portabel) yang menargetkan DalvikVM (Mesin Virtual) yang pada gilirannya menginterpretasikan dan menerjemahkan bytecode dengan menargetkan set instruksi ARM mentah.

Froyo adalah Android terakhir yang memungkinkan kompilasi di bawah lingkungan 32bit yang di-host di mana ia dikompilasi silang dengan chipset ARM.

Gingerbread adalah yang pertama dari Android "masa depan", saat itu sekitar tiga tahun lalu, yang memperkenalkan persyaratan untuk menggunakan lingkungan yang di-host 64bit di mana ia dibangun. Ada banyak peretasan untuk membuat Gingerbread dibangun di bawah lingkungan 32bit yang di-host.

ICS dan JB, dan ke atas sekarang jelas membutuhkan lingkungan 64bit untuk mempercepat kompilasi dan mengurangi waktu turn-around dalam membangun.

Singkatnya, apa yang Anda lihat di Play Store tidak ada kaitannya dengan apakah 32bit atau 64bit digunakan dan dengan demikian tidak relevan.

Catatan tambahan: Distribusi Linux 16GB RAM / Quad core / 64bit yang umum, waktu yang diperlukan untuk membangun ICS dari awal, maksimum 30 menit, seandainya ini distribusi Linux 32bit, ini akan memakan waktu lebih lama, bahkan dapat menyebabkan kerusakan CPU karena hanya ada, tidak cukup kekuatan pemrosesan untuk mengolah dan mengolah kode yang dikompilasi silang, yang merupakan proses yang sangat menuntut dan berat!

Buktinya.

Tarik biner ARM asli yang ditemukan di /system/binatau /system/xbin, misalnya, /system/bin/dalvikvmini adalah biner Dalvik VM yang bertanggung jawab atas lapisan atas Java dan APK.

Sekarang, periksa biner dengan mengeluarkan perintah ini: file dalvikvmyang memberikan ringkasan dari jenis file itu, output yang diharapkan adalah ini:

dalvikvm: ELF 32-bit LSB dapat dieksekusi, ARM, versi 1 (SYSV), ditautkan secara dinamis (menggunakan lib bersama), dilucuti

Perhatikan referensi untuk ELF 32-bit, dan dikompilasi silang ke ARM dan merupakan biner yang dapat dieksekusi.

Benar, lanjutkan, mari kita periksa perpustakaan bersama asli yang ditemukan di /system/lib, misalnya /system/lib/libandroid_runtime.so, sekarang masalah file libandroid_runtime.so, output yang diharapkan adalah ini:

libandroid_runtime.so: ELF 32-bit LSB shared object, ARM, versi 1 (SYSV), terhubung secara dinamis, dilucuti

Sekali lagi, perhatikan, ELF 32-bitnya, dikompilasi silang ke ARM dan merupakan pustaka bersama.

Kunci untuk cross-kompilasi host dapat ditemukan dalam sumber AOSP, yaitu, Gingerbread membangun awalnya memiliki persyaratan yang akan dibangun pada sistem host 64bit, inilah newsgroup Linky mengacu pada bagaimana menambal script untuk mendapatkannya untuk membangun Host 32bit yang memiliki dua tambalan, ditemukan di sini, untuk build/core.mkdan build/main.mk( digabungkan ) pada ulasan Gerrit AOSP.

Sebagai hasil selanjutnya, tambalan ini telah membuat jalannya ke skrip pembuatan ICS di mana saya memiliki hak istimewa untuk mengkompilasi ICS pada platform 32bit yang membutuhkan waktu 3 hari untuk membangun ( itu adalah port ICS untuk Zte Blade ). Sekarang, persyaratan yang menggenjot produksinya, Anda jangan pasti perlu 64bit tuan rumah untuk memungkinkan cross-kompilasi membangun AOSP dari ICS ke atas :)

t0mm13b
sumber
2
Hal-hal yang menarik, tetapi alangkah baiknya jika memiliki beberapa sumber dalam jawabannya.
Kacang
2
+1, karena meskipun tidak ada sumber, setidaknya setengah kerja-kaki untuk penelitian dilakukan untuk membantu menemukan apa yang dicari. Jangan -1 orang yang melakukan upaya yang baik untuk membantu dan menjawab pertanyaan ...
haylem
1
Sekarang ada perangkat ARM 64-bit yang menjalankan Android 64-bit.
Matius Baca
1
Saya downvoting karena sebagian besar jawabannya adalah tentang lingkungan apa yang digunakan untuk mengkompilasi Android, yang sama sekali tidak relevan dengan pertanyaan.
Dan Hulme
1
Ya, itu benar, dan saya akan memposting jawaban baru tentang situasi hari ini, tetapi lingkungan kompilasi selalu menjadi ikan haring merah.
Dan Hulme
8

Awalnya, Android ditulis hanya untuk prosesor 32-bit: dan khususnya, prosesor ARM 32-bit. Kemudian, Intel dan MIPS banyak berinvestasi untuk membuat Android mendukung arsitektur mereka juga: tetapi masih hanya prosesor 32-bit. Mereka dapat melakukan ini tanpa (banyak) masalah kompatibilitas, karena sebagian besar aplikasi tidak dikirim sebagai binari. Ditulis dalam Java, alih-alih dikirim sebagai bytecode , yang mana mesin virtual pada ponsel mengkompilasi ke arsitektur ponsel ketika aplikasi dijalankan. Beberapa aplikasi termasuk aslikomponen, yang dikirim sebagai biner. Hal ini dilakukan untuk membuat beberapa jenis aplikasi lebih cepat (terutama game), atau untuk membiarkan aplikasi mengakses perpustakaan C yang tidak tersedia di Jawa. Aplikasi tersebut dapat menyertakan lebih dari satu biner untuk bagian kode asli, agar dapat berjalan pada arsitektur yang berbeda. Meski begitu, sebagian besar aplikasi hanya Java, jadi mereka hanya bekerja pada arsitektur apa pun.

Di atas semuanya benar pada saat pertanyaan ini (dan sebagian besar jawaban lain) ditulis, tetapi tidak lagi. Lollipop memperkenalkan dukungan untuk prosesor ARM 64-bit yang baru ( ARMv8) serta untuk prosesor Intel dan AMD x86_64, yang berarti bahwa Android sekarang mendukung prosesor 32-bit dan 64-bit. Nexus 9 adalah perangkat Android 64-bit andalan pertama. Selain memberikan akses ke ekstensi set instruksi baru, dukungan 64-bit berarti bahwa aplikasi dapat menggunakan lebih dari 4 GB RAM. Sebagian besar aplikasi tidak akan membutuhkan sebanyak itu, tetapi permainan kelas atas dan perangkat lunak pembuatan foto / video tentu dapat memanfaatkannya: mendorong Android untuk menjadi platform untuk game berkualitas konsol (termasuk game VR) dan untuk membuat konten. Aplikasi Java tidak perlu diperbarui untuk memanfaatkan ini, karena mesin virtual selalu mengkompilasinya ke arsitektur ponsel, tetapi aplikasi dengan kode asli akan melakukannya.

Karena ARMv8 kompatibel dengan kode 32-bit (cara yang sama x86_64 masih dapat menjalankan kode x86), bahkan aplikasi yang menyertakan kode asli untuk prosesor 32-bit masih dapat berjalan di Android 64-bit. Jadi aplikasi hanya perlu dikompilasi untuk 64-bit jika mengandung kode asli dan ingin memanfaatkan batas RAM yang lebih tinggi atau fitur arsitektur baru.

Dan Hulme
sumber
5

Semua chip ARM saat ini 32-bit. Karena itu, Android saat ini mengeksekusi semua kode dalam lingkungan 32-bit.

Prosesor 64-bit akan diluncurkan pada tahun 2014 .

free3dom
sumber
1
Itu bukan sumber yang dapat diandalkan karena ini berbicara tentang server, mengutip "Smartphone sedikit lebih jauh," kata Forsyth. , kita berbicara tentang ARM dalam konteks Android / Smartphone / Tablet.
t0mm13b
2

Apakah Android OS 32 atau 64 bit? Saya berasumsi bahwa ini adalah salah satu atau yang lain dan bukan keduanya, karena itu akan memaksa biner 32-dan 64-bit untuk di-host di Google Play.

Sebenarnya tidak. Android adalah OS berbasis Dalvik VM, dan Google Play menampung aplikasi Dalvik. Dalvik VM sendiri, seperti Java VM, selalu 32-bit terlepas dari bitness dari mesin fisik.

Seperti yang Anda duga, aplikasi yang dikirimkan dengan binari asli dan aplikasi NDK harus dikirimkan dengan binari yang dikompilasi untuk setiap arsitektur yang dimaksudkan untuk dijalankan. Arsitektur paling umum yang dijalankan oleh Android adalah ARM 32-bit; namun ada juga perangkat yang berjalan di x86 dan MIPS.

Lie Ryan
sumber
0

Saya hanya menebak tapi saya pikir ini juga menjelaskannya sederhana saja. Tergantung pada perangkat apa yang Anda gunakan, ada empat jenis os yaitu ARM, ARM 64, X84 dan X84_64. ARM adalah platform 32 bit yang populer, ARM 64 juga merupakan platform yang populer tetapi 64 bit, X84 adalah platform yang tidak umum dan digunakan pada Zenfones, sama seperti X84_64 yang tidak umum dan digunakan pada Emulator Android. Saya mendapat informasi ini di Open Gapps

NeonzYT
sumber