สถาปัตยกรรม Android

สถาปัตยกรรมระบบ Android ประกอบด้วยส่วนประกอบต่อไปนี้:

ภาพรวมของสถาปัตยกรรมระบบ Android
สถาปัตยกรรมระบบรูปที่ 1 Android
  • การประยุกต์ใช้กรอบ กรอบงานแอปพลิเคชันมักใช้โดยนักพัฒนาแอปพลิเคชัน ในฐานะนักพัฒนาฮาร์ดแวร์ คุณควรทราบ API ของนักพัฒนาเนื่องจากแมปโดยตรงไปยังอินเทอร์เฟซ HAL พื้นฐาน และสามารถให้ข้อมูลที่เป็นประโยชน์เกี่ยวกับการนำไดรเวอร์ไปใช้
  • Binder IPC กลไก Binder Inter-Process Communication (IPC) ช่วยให้เฟรมเวิร์กแอปพลิเคชันสามารถข้ามขอบเขตของกระบวนการและเรียกใช้รหัสบริการระบบ Android ซึ่งช่วยให้ API เฟรมเวิร์กระดับสูงโต้ตอบกับบริการระบบ Android ได้ ในระดับเฟรมเวิร์กของแอปพลิเคชัน การสื่อสารนี้ถูกซ่อนจากนักพัฒนาและสิ่งต่างๆ ดูเหมือนจะ "ใช้งานได้"
  • บริการระบบ บริการของระบบเป็นส่วนประกอบแบบโมดูลาร์ที่เน้น เช่น Window Manager, Search Service หรือ Notification Manager ฟังก์ชันที่เปิดเผยโดย API เฟรมเวิร์กของแอปพลิเคชันจะสื่อสารกับบริการของระบบเพื่อเข้าถึงฮาร์ดแวร์พื้นฐาน Android รวมถึงกลุ่มที่สองของการให้บริการระบบ (เช่นจัดการหน้าต่างและผู้จัดการการแจ้งเตือน) และสื่อ (บริการมีส่วนร่วมในการเล่นและสื่อบันทึก)
  • ฮาร์ดแวร์ Abstraction Layer (HAL) HAL กำหนดอินเทอร์เฟซมาตรฐานสำหรับผู้จำหน่ายฮาร์ดแวร์เพื่อนำไปใช้ ซึ่งช่วยให้ Android สามารถไม่เชื่อเรื่องพระเจ้าเกี่ยวกับการใช้งานไดรเวอร์ระดับล่าง การใช้ HAL ช่วยให้คุณใช้งานฟังก์ชันได้โดยไม่กระทบหรือแก้ไขระบบระดับที่สูงกว่า การใช้งาน HAL ถูกบรรจุลงในโมดูลและโหลดโดยระบบ Android ในเวลาที่เหมาะสม ดูรายละเอียด ฮาร์ดแวร์ Abstraction Layer (HAL)
  • ลินุกซ์เคอร์เนล การพัฒนาไดรเวอร์อุปกรณ์คล้ายกับการพัฒนาไดรเวอร์อุปกรณ์ Linux ทั่วไป ใช้ Android รุ่นของลินุกซ์ด้วยการเพิ่มพิเศษบางอย่างเช่นต่ำหน่วยความจำ Killer (ระบบการจัดการหน่วยความจำที่เป็นเชิงรุกมากขึ้นในหน่วยความจำการรักษา), ล็อคปลุก (ก PowerManager บริการของระบบ) คนขับ Binder IPC และคุณสมบัติอื่น ๆ ที่สำคัญ สำหรับแพลตฟอร์มฝังตัวสำหรับมือถือ ส่วนเพิ่มเติมเหล่านี้มีไว้สำหรับการทำงานของระบบเป็นหลัก และไม่ส่งผลต่อการพัฒนาไดรเวอร์ คุณสามารถใช้เคอร์เนลเวอร์ชันใดก็ได้ตราบเท่าที่สนับสนุนคุณลักษณะที่จำเป็น (เช่น ไดรเวอร์ Binder) อย่างไรก็ตาม เราขอแนะนำให้ใช้เคอร์เนล Android เวอร์ชันล่าสุด ดูรายละเอียด อาคารเมล็ด

ภาษานิยามอินเทอร์เฟซ HAL (AIDL/HIDL)

Android 8.0 ใหม่ออกแบบกรอบ Android OS (อยู่ในโครงการที่เรียกว่าเสียงแหลม) ที่จะทำให้มันง่ายขึ้นเร็วขึ้นและค่าใช้จ่ายน้อยสำหรับผู้ผลิตไปยังอุปกรณ์ที่ปรับปรุงเป็นรุ่นใหม่ของ Android ในสถาปัตยกรรมใหม่นี้ ภาษาคำจำกัดความของอินเทอร์เฟซ HAL (HIDL ออกเสียงว่า "hide-l") ระบุอินเทอร์เฟซระหว่าง HAL และผู้ใช้ ทำให้สามารถเปลี่ยนกรอบงาน Android ได้โดยไม่ต้องสร้าง HAL ขึ้นใหม่ ใน Android 10 ฟีเจอร์ HIDL ถูกรวมไว้ใน AIDL ตั้งแต่นั้นมา HIDL ถูกเลิกใช้และใช้งานโดยระบบย่อยที่ยังไม่ได้แปลงเป็น AIDL เท่านั้น

เสียงแหลมแยกการใช้งานผู้ขาย (เฉพาะอุปกรณ์ ซอฟต์แวร์ระดับล่างที่เขียนโดยผู้ผลิตซิลิคอน) ออกจากเฟรมเวิร์กระบบปฏิบัติการ Android ผ่านอินเทอร์เฟซใหม่ของผู้จำหน่าย ผู้ขายหรือผู้ผลิต SOC สร้าง HALs ครั้งและวางไว้ใน /vendor พาร์ติชันบนอุปกรณ์; กรอบในพาร์ทิชันของตัวเองนั้นจะสามารถแทนที่ด้วย การปรับปรุงแบบ over-the-air (OTA) โดยไม่ต้อง recompiling HALs

ความแตกต่างระหว่างสถาปัตยกรรม Android รุ่นเก่าและสถาปัตยกรรมที่ใช้ IDL ปัจจุบันคือการใช้อินเทอร์เฟซของผู้ขาย:

  • ใน Android 7.x และรุ่นก่อนหน้า ไม่มีอินเทอร์เฟซของผู้จำหน่ายที่เป็นทางการ ดังนั้นผู้ผลิตอุปกรณ์ต้องอัปเดตโค้ด Android ส่วนใหญ่เพื่อย้ายอุปกรณ์ไปยัง Android เวอร์ชันใหม่กว่า:

    สภาพแวดล้อมการปรับปรุงรูปที่ 2 มรดก Android
  • ใน Android 8.0 ขึ้นไป อินเทอร์เฟซผู้ขายที่เสถียรใหม่ให้การเข้าถึงส่วนเฉพาะฮาร์ดแวร์ของ Android ดังนั้นผู้ผลิตอุปกรณ์จึงสามารถส่งมอบ Android รุ่นใหม่ๆ ได้ง่ายๆ โดยอัปเดตเฟรมเวิร์กระบบปฏิบัติการ Android โดยไม่ต้องทำงานเพิ่มเติมจากผู้ผลิตซิลิคอน:

    สภาพแวดล้อมการปรับปรุงรูปที่ 3 ปัจจุบัน Android

อุปกรณ์ใหม่ทั้งหมดที่เปิดตัวพร้อมกับ Android 8.0 ขึ้นไปสามารถใช้ประโยชน์จากสถาปัตยกรรมใหม่ได้ เพื่อให้เข้ากันไปข้างหน้าของการใช้งานของผู้จัดจำหน่ายอินเตอร์เฟซผู้ขายจะถูกตรวจสอบโดย ผู้ขาย Test Suite (VTS) ซึ่งเป็นคล้ายกับ ความเข้ากันได้ Test Suite (CTS) คุณสามารถใช้ VTS เพื่อทำให้การทดสอบเคอร์เนล HAL และ OS เป็นแบบอัตโนมัติทั้งในสถาปัตยกรรม Android รุ่นเก่าและปัจจุบัน

ทรัพยากรสถาปัตยกรรม

สำหรับรายละเอียดเกี่ยวกับสถาปัตยกรรม Android โปรดดูส่วนต่อไปนี้:

  • ประเภท HAL อธิบาย Binderized, Passthrough, Same-Process (SP) และ HAL ดั้งเดิม
  • AIDL เอกสารเกี่ยวกับ AIDL ไม่ว่าจะใช้โดยทั่วไปหรือเป็นส่วนต่อประสาน HAL
  • HIDL (ทั่วไป) ประกอบด้วยข้อมูลทั่วไปเกี่ยวกับอินเทอร์เฟซระหว่าง HAL และผู้ใช้
  • HIDL (C ++) มีรายละเอียดสำหรับการสร้างการใช้งาน C++ ของอินเตอร์เฟส HIDL
  • HIDL (Java) มีรายละเอียดเกี่ยวกับส่วนหน้า Java สำหรับอินเตอร์เฟส HIDL
  • ConfigStore HAL อธิบาย API สำหรับการเข้าถึงรายการการกำหนดค่าแบบอ่านอย่างเดียวที่ใช้ในการกำหนดค่าเฟรมเวิร์ก Android
  • อุปกรณ์ภาพซ้อนทับต้นไม้ ให้รายละเอียดเกี่ยวกับการใช้การซ้อนทับแผนผังอุปกรณ์ (DTO) ใน Android
  • ผู้ขายพื้นเมือง Development Kit (VNDK) อธิบายชุดของไลบรารีเฉพาะผู้จำหน่ายสำหรับการนำ HAL ของผู้จำหน่ายไปใช้
  • ผู้ให้บริการการเชื่อมต่อของวัตถุ (VINTF) อธิบายอ็อบเจ็กต์ที่รวบรวมข้อมูลที่เกี่ยวข้องเกี่ยวกับอุปกรณ์และทำให้ข้อมูลนั้นพร้อมใช้งานผ่าน API ที่สืบค้นได้
  • SELinux สำหรับ Android 8.0 รายละเอียดการเปลี่ยนแปลงและการปรับแต่ง SELinux

นอกจากนี้ยังแหล่งข้อมูลในเว็บไซต์นี้สมาชิกของทีมแหลมตีพิมพ์ เสียงแหลม: การปรับปรุงซอฟแวร์ได้อย่างรวดเร็วโดยการสร้างสมดุลในการใช้งานซอฟแวร์ระบบนิเวศของผู้มีส่วนได้เสียทั่วโลกกระจาย กระดาษนี้ฟรีสำหรับสมาชิก ACM และผู้ที่ไม่ใช่สมาชิกสามารถซื้อหรืออ่านบทคัดย่อได้