Google is committed to advancing racial equity for Black communities. See how.
หน้านี้ได้รับการแปลโดย Cloud Translation API
Switch to English

สถาปัตยกรรม 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 ประกอบด้วยบริการสองกลุ่ม ได้แก่ ระบบ (เช่น Window Manager และ Notification Manager) และ สื่อ (บริการที่เกี่ยวข้องกับการเล่นและสื่อบันทึก)
  • ชั้นนามธรรมของฮาร์ดแวร์ (HAL) HAL กำหนดอินเทอร์เฟซมาตรฐานสำหรับผู้จำหน่ายฮาร์ดแวร์เพื่อนำไปใช้ซึ่งทำให้ Android ไม่เชื่อเรื่องพระเจ้าเกี่ยวกับการใช้งานไดรเวอร์ระดับล่าง การใช้ HAL ช่วยให้คุณสามารถใช้งานฟังก์ชันต่างๆได้โดยไม่ส่งผลกระทบหรือแก้ไขระบบระดับที่สูงขึ้น การใช้งาน HAL จะรวมอยู่ในโมดูลและโหลดโดยระบบ Android ในเวลาที่เหมาะสม สำหรับรายละเอียดโปรดดู Hardware Abstraction Layer (HAL)
  • เคอร์เนลลินุกซ์ การพัฒนาไดรเวอร์อุปกรณ์ของคุณคล้ายกับการพัฒนาไดรเวอร์อุปกรณ์ Linux ทั่วไป Android ใช้เคอร์เนล Linux เวอร์ชันที่มีส่วนเพิ่มเติมพิเศษบางอย่างเช่น Low Memory Killer (ระบบจัดการหน่วยความจำที่เข้มงวดในการรักษาหน่วยความจำมากขึ้น), ล็อกปลุก (บริการระบบ PowerManager ), ไดรเวอร์ Binder IPC และคุณสมบัติอื่น ๆ ที่สำคัญ สำหรับแพลตฟอร์มแบบฝังมือถือ ส่วนเพิ่มเติมเหล่านี้มีไว้สำหรับการทำงานของระบบเป็นหลักและไม่มีผลต่อการพัฒนาไดรเวอร์ คุณสามารถใช้เคอร์เนลเวอร์ชันใดก็ได้ตราบเท่าที่รองรับคุณสมบัติที่ต้องการ (เช่นไดรเวอร์ binder) อย่างไรก็ตามเราขอแนะนำให้ใช้เคอร์เนล Android เวอร์ชันล่าสุด ดูรายละเอียดได้ที่ Building Kernels

ภาษานิยามอินเตอร์เฟส HAL (HIDL)

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

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

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

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

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

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

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

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

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

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

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