ในขอบเขตของชิปเซ็ต ARM ซึ่งเป็นปัจจัยร่วมกันทั้งสแต็ค Android ทั้งหมดจากเคอร์เนลใกล้เคียงเหมือนกันที่ใช้ Linux เป็นจริง 32 บิตคอมไพล์ข้ามจากปกติทั้งสภาพแวดล้อมโฮสต์ 32 บิต / 64 บิตสภาพแวดล้อมโฮสต์ มักจะเป็นหนึ่งในการกระจายของ Linux การกระจายที่แนะนำโดย Google สำหรับการสร้างและข้ามรวบรวม Android เป็นอูบุนตู
ไลบรารีรันไทม์ของ Android (สื่อ, กราฟิก, ระบบไฟล์, เป็นต้น) แต่ก็มีขนาด 32 บิต แต่เมื่อเราไปถึงเลเยอร์ของ dalvikvm จากนั้นจำนวนบิตจะไม่เกี่ยวข้องอย่างที่เป็นอยู่ ณ จุดนี้ จาก Google Play Store เป็น native bytecode ("ผลพลอยได้" ของโค้ด Java ที่สร้างขึ้นรวบรวมเป็น bytecode แบบพกพา) ซึ่งกำหนดเป้าหมาย DalvikVM (Virtual Machine) ซึ่งจะตีความและแปล bytecode ที่ตั้งค่าชุดคำสั่ง ARM ดิบ
Froyo เป็น Android ตัวสุดท้ายที่เปิดใช้งานการคอมไพล์ภายใต้สภาพแวดล้อมโฮสต์แบบ 32 บิตซึ่งเป็นการรวบรวมข้ามการกำหนดเป้าหมายชิปเซ็ต ARM
Gingerbread เป็น Android รุ่นแรกในอนาคตย้อนกลับไปเมื่อสามปีที่แล้วซึ่งมีข้อกำหนดว่าจะต้องใช้สภาพแวดล้อมการโฮสต์ 64 บิตที่สร้างขึ้นมา มีแฮ็กมากมายที่จะทำให้ Gingerbread ถูกสร้างขึ้นภายใต้สภาพแวดล้อมโฮสต์แบบ 32 บิต
ICS และ JB และขึ้นไปตอนนี้ต้องใช้สภาพแวดล้อมแบบ 64 บิตเพื่อเพิ่มความเร็วในการคอมไพล์และลดระยะเวลาในการสร้าง
ดังนั้นโดยสรุปสิ่งที่คุณเห็นบน Play Store ไม่มีผลต่อการใช้งาน 32 บิตหรือ 64 บิตและไม่เกี่ยวข้อง
หมายเหตุด้านข้าง: การกระจาย Linux RAM / Quad core / 64 บิตโดยทั่วไปเวลาที่ใช้ในการสร้าง ICS ตั้งแต่เริ่มต้นใช้เวลาสูงสุด 30 นาทีมีการกระจาย Linux แบบ 32 บิตซึ่งอาจใช้เวลานานกว่าในความเป็นจริงอาจทำให้ CPU ล่มสลาย เนื่องจากมีเพียงพลังการประมวลผลที่ไม่เพียงพอในการปั่นและหมุนรหัสที่คอมไพล์ซึ่งเป็นกระบวนการที่เรียกร้องและเรียกเก็บภาษีมาก!
พิสูจน์เรื่องนี้
ดึงไบนารีดั้งเดิมของ ARM ที่พบใน/system/bin
หรือ/system/xbin
ตัวอย่าง/system/bin/dalvikvm
นี้เป็นไบนารี Dalvik VM ที่รับผิดชอบเลเยอร์บนของ Java และ APK
ตอนนี้ตรวจสอบไบนารีโดยการออกคำสั่งนี้: file dalvikvm
ซึ่งให้สรุปประเภทของไฟล์มันเป็นผลลัพธ์ที่คาดว่าจะเป็น:
dalvikvm: ปฏิบัติการได้ของ ELF 32 บิต, ARM, รุ่น 1 (SYSV), เชื่อมโยงแบบไดนามิก (ใช้ libs ที่ใช้ร่วมกัน), ถูกปล้น
สังเกตการอ้างอิงถึง 32- บิต ELF และถูกคอมไพล์ข้ามไปที่ ARM และเป็นไบนารีที่ปฏิบัติการได้
ถูกต้องไปต่อมาตรวจสอบไลบรารี่ที่แชร์กันที่พบใน/system/lib
ตัวอย่าง/system/lib/libandroid_runtime.so
ตอนนี้ออกfile libandroid_runtime.so
เอาท์พุตที่คาดว่าจะเป็น:
libandroid_runtime.so: ELF 32- บิต LSB แชร์อ็อบเจ็กต์, ARM, เวอร์ชัน 1 (SYSV), เชื่อมโยงแบบไดนามิก, ปล้น
สังเกตอีกครั้งว่าเอลฟ์ 32 บิตของมันถูกคอมไพล์ข้ามไปยัง ARM และเป็นไลบรารีที่แชร์
กุญแจสำคัญในการรวบรวมข้ามโฮสต์สามารถพบได้ในแหล่ง AOSP เช่น Gingerbread build เดิมมีความต้องการที่จะสร้างบนระบบโฮสต์ 64 บิตนี่คือลิงค์กลุ่มข่าวสารที่อ้างอิงถึงวิธีการแก้ไขสคริปต์เพื่อสร้างมันขึ้นมาบน โฮสต์ 32 บิตซึ่งมีสองแพตช์พบได้ที่นี่สำหรับbuild/core.mk
และbuild/main.mk
( รวมกัน ) ในการตรวจสอบ Gerrit ของ AOSP
ผลที่ตามมาแพทช์นี้ได้มาถึงสคริปต์สร้างของ ICS ซึ่งฉันได้รับสิทธิ์ในการรวบรวม ICS บนแพลตฟอร์ม 32 บิตซึ่งใช้เวลาสร้าง 3 วัน ( เป็นพอร์ตของ ICS สำหรับ Zte Blade ) ตอนนี้ต้องการจะเมาขึ้นคุณจะต้องแน่นอนโฮสต์ 64bit เพื่อเปิดใช้งานข้ามสะสมของอาคาร AOSP จาก ICS ขึ้น :)