สถาปัตยกรรมแพลตฟอร์ม

Android เป็นสแต็กซอฟต์แวร์โอเพนซอร์สที่ใช้ Linux ซึ่งสร้างขึ้นสำหรับอุปกรณ์และรูปแบบของอุปกรณ์ที่หลากหลาย รูปที่ 1 แสดงองค์ประกอบหลักของแพลตฟอร์ม Android

ชุดซอฟต์แวร์ Android

รูปที่ 1 สแต็กซอฟต์แวร์ Android

เคอร์เนล Linux

รากฐานของแพลตฟอร์ม Android คือเคอร์เนล Linux ตัวอย่างเช่น Android Runtime (ART) อาศัยเคอร์เนล Linux สำหรับ ฟังก์ชันการทำงานพื้นฐาน เช่น การจัดการหน่วยความจำแบบหลายเธรดและระดับต่ำ

การใช้เคอร์เนล Linux ช่วยให้ Android ใช้ประโยชน์จากฟีเจอร์ ด้านความปลอดภัยที่สำคัญ และช่วยให้ผู้ผลิตอุปกรณ์พัฒนาไดรเวอร์ฮาร์ดแวร์ สำหรับเคอร์เนลที่รู้จักกันดีได้

ระดับชั้นการจัดการฮาร์ดแวร์โดยตรง (HAL)

Hardware Abstraction Layer (HAL) มีอินเทอร์เฟซมาตรฐานที่แสดง ความสามารถของฮาร์ดแวร์ของอุปกรณ์ต่อเฟรมเวิร์ก Java API ระดับที่สูงกว่า HAL ประกอบด้วยโมดูลไลบรารีหลายโมดูล ซึ่งแต่ละโมดูลจะใช้การติดตั้งใช้งานอินเทอร์เฟซสำหรับคอมโพเนนต์ฮาร์ดแวร์ประเภทหนึ่งๆ เช่น โมดูลกล้องหรือบลูทูธ เมื่อ API ของเฟรมเวิร์กเรียกใช้เพื่อเข้าถึงฮาร์ดแวร์ของอุปกรณ์ ระบบ Android จะโหลดโมดูลไลบรารีสำหรับคอมโพเนนต์ฮาร์ดแวร์นั้น

รันไทม์ของ Android

สำหรับอุปกรณ์ที่ใช้ Android เวอร์ชัน 5.0 (API ระดับ 21) ขึ้นไป แอปแต่ละแอปจะทำงานในกระบวนการของตัวเองและมีอินสแตนซ์ของ Android Runtime (ART) เป็นของตัวเอง ART เขียนขึ้นเพื่อเรียกใช้เครื่องเสมือนหลายเครื่องในอุปกรณ์ที่มีหน่วยความจำน้อย โดยการเรียกใช้ไฟล์รูปแบบ Dalvik Executable (DEX) ซึ่งเป็นรูปแบบไบต์โค้ดที่ออกแบบมาโดยเฉพาะสำหรับ Android และได้รับการเพิ่มประสิทธิภาพให้ใช้หน่วยความจำน้อยที่สุด เครื่องมือบิลด์ เช่น d8 จะคอมไพล์แหล่งที่มาของ Java เป็นไบต์โค้ด DEX ซึ่งทำงานบนแพลตฟอร์ม Android ได้

ฟีเจอร์หลักบางส่วนของ ART มีดังนี้

  • การคอมไพล์ล่วงหน้า (AOT) และการคอมไพล์ JIT (Just-In-Time)
  • การจัดการหน่วยความจำที่ไม่ใช้แล้ว (GC) ที่เพิ่มประสิทธิภาพ
  • ใน Android 9 (API ระดับ 28) ขึ้นไป การแปลงไฟล์ DEX ของ แพ็กเกจแอปเป็นโค้ดแมชชีนที่กะทัดรัดมากขึ้น
  • การรองรับการแก้ไขข้อบกพร่องที่ดียิ่งขึ้น ซึ่งรวมถึงเครื่องมือสร้างโปรไฟล์การสุ่มเฉพาะ ข้อยกเว้นในการวินิจฉัยโดยละเอียดและการรายงานข้อขัดข้อง รวมถึงความสามารถในการตั้งค่า จุดสังเกตเพื่อตรวจสอบฟิลด์ที่เฉพาะเจาะจง

ก่อน Android เวอร์ชัน 5.0 (API ระดับ 21) Dalvik เป็นรันไทม์ของ Android หากแอปทำงานได้ดีใน ART ก็จะทำงานใน Dalvik ได้เช่นกัน แต่ในทางกลับกันอาจไม่เป็นเช่นนั้น

นอกจากนี้ Android ยังมีชุดไลบรารีรันไทม์หลักที่ให้ฟังก์ชันการทำงานส่วนใหญ่ของภาษาการเขียนโปรแกรม Java ซึ่งรวมถึงฟีเจอร์ภาษา Java 8 บางอย่างที่เฟรมเวิร์ก Java API ใช้

ไลบรารี C/C++ แบบเนทีฟ

คอมโพเนนต์และบริการหลักของระบบ Android หลายอย่าง เช่น ART และ HAL สร้างขึ้นจากโค้ดแบบเนทีฟที่ต้องใช้ไลบรารีแบบเนทีฟที่เขียนด้วย C และ C++ แพลตฟอร์ม Android มี API ของเฟรมเวิร์ก Java เพื่อแสดงฟังก์ชันการทำงานของไลบรารีแบบเนทีฟบางส่วนเหล่านี้ต่อแอป เช่น คุณสามารถเข้าถึง OpenGL ES ผ่าน Java OpenGL API ของเฟรมเวิร์ก Android เพื่อเพิ่มการรองรับการวาดและจัดการกราฟิก 2 มิติและ 3 มิติในแอป

หากคุณกำลังพัฒนาแอปที่ต้องใช้โค้ด C หรือ C++ คุณสามารถใช้ Android NDK เพื่อเข้าถึงไลบรารีแพลตฟอร์มแบบเนทีฟบางส่วนเหล่านี้ได้โดยตรงจากโค้ดแบบเนทีฟ

เฟรมเวิร์ก Java API

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

นักพัฒนาแอปมีสิทธิ์เข้าถึง Framework API เดียวกันกับที่แอปของระบบ Android ใช้ได้อย่างเต็มที่

แอประบบ

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

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