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/bin
atau /system/xbin
, misalnya, /system/bin/dalvikvm
ini adalah biner Dalvik VM yang bertanggung jawab atas lapisan atas Java dan APK.
Sekarang, periksa biner dengan mengeluarkan perintah ini: file dalvikvm
yang 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.mk
dan 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 :)