Ortak faktör olan ARM yonga setleri alanında, tüm Linux yığını, Linux tabanlı benzer çekirdekten, aslında ya 32bit / 64bit bir ana bilgisayar ortamından, ana bilgisayar ortamından çapraz derlenmiş 32bit genellikle Linux'un dağıtımlarından biridir. Android tarafından derlenmesi ve derlenmesi için Google tarafından önerilen dağıtım Ubuntu'dur .
Android çalışma zamanı kitaplığı (medya, grafik, dosya sistemi, ancak birkaç isim) de 32bit, ancak dalvikvm katmanına ulaştığımızda, bit sayısı bu noktada olduğu gibi önemsiz hale geliyor Google Play Store'dan, ham ARM komut setini hedefleyen bayt kodunu çeviren ve çeviren DalvikVM'yi (Sanal Makine) hedef alan, yerel bytecode (taşınabilir bir byte kodunda derlenen oluşturulan Java kodunun "yan ürünü").
Froyo, ARM yonga setini hedef alan çapraz derlemeli 32 bitlik bir barındırılan ortamda derlemeyi sağlayan son Android'di.
Gingerbread, üç yıl önce, o zamanlar inşa edildiği 64bit barındırılan bir ortamın kullanılması şartı getiren “geleceğin” ilk Androidiydi. Gingerbread'i 32bit barındırılan ortamlar altında inşa etmenin birçok yolu vardı.
ICS ve JB ve şimdilerde kesinlikle derlemeyi hızlandırmak ve binadaki geri dönüş süresini azaltmak için 64 bitlik bir ortam gerekiyor.
Sonuç olarak, Google Play Store'da gördüğünüz şey 32bit veya 64bit kullanılıp kullanılmadığı ve dolayısıyla ilgisizliği ile ilgisi yoktur.
Not: Tipik 16GB RAM / Dört çekirdekli / 64bit Linux dağıtımı, ICS'yi sıfırdan inşa etmek için geçen süre, maksimum 30 dakika sürer, bunun 32bit bir Linux dağıtımı olmuştu, aslında daha uzun sürebilirdi, bir CPU'nun erimesine neden olabilirdi basitçe olduğu gibi , çok zorlu ve vergi gerektiren bir işlem olan çapraz derlenmiş kodu çalkalamak ve parçalamak için yeterli işlem gücü yok !
Bunun kanıtı.
Örneğin içinde bulunan herhangi bir yerel ARM ikili kodunu çekin /system/bin
veya bu, Java'nın ve APK'lerin üst katmanlarından sorumlu olan Dalvik VM ikilisidir./system/xbin
/system/bin/dalvikvm
Şimdi, şu komutu vererek ikili dosyayı inceleyin: file dalvikvm
Bu, hangi dosya türünün bir özetini verir, beklenen çıktı şudur:
dalvikvm: ELF 32-bit LSB çalıştırılabilir, ARM, sürüm 1 (SYSV), dinamik olarak bağlanmış (paylaşılan kütüphaneleri kullanır), soyulmuş
32-bit ELF referansına dikkat edin ve ARM'e çapraz derlendi ve ikili bir çalıştırılabilir dosyadır.
Doğru, devam edersek /system/lib
, örneğin /system/lib/libandroid_runtime.so
şimdi yayınlanmış sayıdaki yerel bir paylaşılan kütüphaneyi inceleyelim file libandroid_runtime.so
, beklenen çıktı şudur:
libandroid_runtime.so: ELF 32-bit LSB paylaşılan nesne, ARM, sürüm 1 (SYSV), dinamik olarak bağlanmış, soyulmuş
Yine, dikkat, 32-bit ELF, ARM ile çapraz derlenmiş ve paylaşılan bir kütüphanedir.
Ev sahibinin çapraz derlemesinin anahtarı, AOSP kaynağında bulunabilir, yani, Gingerbread in temel olarak 64 bitlik bir ana sistem üzerine kurulma zorunluluğu vardı, işte onu oluşturmak için komut dosyalarının nasıl yamalanacağına değinen haber grubu bağlantısı . AOSP'nin Gerrit incelemesinde ( build/core.mk
ve birleştirilmiş ), burada bulunan iki yaması olan 32bit ana bilgisayar .build/main.mk
Bunu izleyen bir sonuç olarak, bu yama ICS'yi, 3 gün süren ( Zte Blade için bir ICS limanıydı) 32 bitlik bir platformda ICS'yi derleme ayrıcalığına sahip olduğum senaryoları oluşturdu . Şimdi, gereksinimler, hızlandırıldığını olan sen do kesinlikle yukarı doğru ICS AOSP binanın çapraz derleme etkinleştirmek için 64bit host gerekir :)