ตอนนี้คุณทราบแล้วว่าแอนดรอยด์คืออะไร และทำอะไรได้บ้าง ต่อไปเราจะมาดูกันว่าการทำงานของมันประกอบไปด้วยอะไรบ้าง รูปภาพต่อไปนี้แสดงส่วนประกอบหลัก ๆ ของระบบปฎิบัติการแอนดรอยด์ โดยส่วนประกอบในแต่ละชั้นจะเรียกใช้บริการของชั้นที่อยู่ถัดลงไป
ภาพประกอบถ่ายจากหนังสือครับ
Linux Kernel
ส่วนที่เป็นแกนหลักหรือเคอร์เนล ( Kernel ) ของแอนดรอยด์นั้น ความจริงก็คือเคอร์เนลของลินุกซ์ ซึ่งเป็นระบบปฎิบัติการที่สร้างโดย Linus Torvalds ในปี ค.ศ. 1991 ปัจจุบันเราสามารถพบลินุกซ์ได้ในทุกสิ่งทุกอย่าง ตั้งแต่นาฬิกาข้อมือไปจนถึง Super Computer
ส่วนของ Linux Kernel นี้จะทำหน้าทีเป็น Hardware Abstraction Layer กล่าวคือเป็นตัวกลางระหว่าง Hardware และ Software ที่อยู่ถัดขึ้นไป และทำหน้าที่บริหารจัดการทรัพยากรต่าง ๆ ของเครื่อง เช่น การจัดการหน่วยความจำ การจัดการโพรเซส ฯลฯ ผู้ผลิตอุปกรณ์สามารถ "พอร์ต" แอนดรอยด์ให้ไปรันบนฮาร์ดแวร์แบบต่างๆ ได้โดยเปลี่ยนแปลงในส่วนของ Linux Kernel
ผู้ใช้มือถือหรืออุปกรณ์แอนดรอยด์จะไม่เห็นว่ามีลินุกซ์อยู่ในเครื่อง และแอพพลิเคชั่นที่เราพัฒนาก็จะไม่ได้เรียกไปยังลินุกซ์โดยตรง แต่ในฐานะนักพัฒนาเราจำเป็นต้องรับรู้ว่ามีลินุกซอยู่ เนื่องจากโปรแกรม utility บางตัวที่ Android SDK เตรียมมาให้จะติดต่อกับลินุกซ์ในอุปกรณ์แอนดรอยด์ เช่น โปรแกรม adb ที่ช่วยให้เราเรียกใช้คำสั่งเพื่อสำรวจระบบไฟล์ของเครื่อง ดูโพรเซสที่รันอยู่ในขณะนั้นและอื่น ๆ ได้
Native Libraries
ถัดขึ้นมาจาก Linux Kernel ก็คือส่วนที่เป็นไลบรารีของแอนดรอยด์ ซึ่งทั้งหมดเขียนด้วยภาษา C หรือ C++ และถูกคอมไพล์มาสำหรับฮาร์ดแวร์ของอุปกรณ์แต่ละรุ่น ไลบรารีที่น่าสนใจมีดังนี้
- Surface Manager คือไลบรารีจัดการส่วนแสดงผลที่มีความสามารถในการผสมกราฟิก ทั้ง 2 มิติและ 3 มิติจากแอพพลิเคชั่นต่าง ๆ เข้าด้วยกัน ทำให้สามารถสร้างเอฟเฟ็ค เช่น วินโดว์ที่มองทะลุไปข้างหลังได้ และ Transition ในรูปแบบต่าง ๆ
- Media Libraries คือไลบรารีที่จัดเตรียมบริการในการเล่นและบันทึกเสียง วิดีโอ และรูปภาพในฟอร์แมตต่าง ๆ เช่น MPEG4 , H.264,MP3,AAC,AMR,JPG และ PNG
- SQLite คือ Database Engine ที่มีประสิทธิภาพและมีขนาดเล็ก เพื่อให้เราจัดเก็บข้อมูลของแอพพลิเคชั่นไว้ในรูปแบบของฐานข้อมูลเชิงสัมพันธ์ ( Relational Database )
- WebKit คือไลบรารีที่ใช้แสดงเนื้อหาเว็บเพจ ซึ่งเป็นตัวเดียวกับที่ใช้ใน Google Chrome และ Apple Safari รวมถึงเว็บราวเซอร์ในมือถือ iPhone และมือถือตระกูล S60 ของ Nokia ด้วย
Android Runtime
อีกส่วนหนึ่งที่ทำงานอยู่บนเคอร์เนลของลินุกซ์ก็คือ Android Runtime ซึ่งประกอบด้วย Core Library สำหรับภาษาจาวา และ Dalvik Virtual Machine ซึ่งถ้าอธิบายง่ายๆ ก็คือ Java Virtual Machine ในแบบของแอนดรอยด์เอง ซึ่งถูกออกแบบมาสำหรับอุปกณ์ที่ใช้ไฟฟ้าจากแบตเตอรี่และมีหน่วยความจำจำกัด
ในแอนดรอยด์นั้นแต่ละแอพพลิเคชั่นจะรันอยู่ในโพรเซสของตัวเอง และมี Dalvik VM ของตัวเองอยู่ด้วย ดังนั้นโค้ดของแต่ละแอพพลิเคชั่นจึงรันอยู่ใน VM ที่แยกจากกัน
สำหรับ Core Library ซึ่งเป็น Java Library นั้นส่วนใหญ่จะเหมือนกับใน Java Standard Edition ( Java SE ) ที่เราใช้พัฒนาจาวาแอพพลิเคชั่นบน PC แต่บางไลบรารีที่มีใน Java SE จะไม่มีในแอนดรอยด์ และบางไลบรารีถึงแม้จะมีในแอนดรอยด์แต่ก็มีรูปแบบการใช้งานที่แตกต่างออกไป
Application Framework
ถัดขึ้นมาจาก Native Libraries และ Android Runtime ก็เป็นส่วนของเฟรมเวิร์คที่ใช้พัฒนาแอพพลิเคชั่น ( Application Framework ) ซึ่งประกอบด้วยคอมโพเนนต์พื้นฐานต่าง ๆ ที่ใช้ในการสร้างแอพพลิเคชั่นของเรา คอมโพเนนต์เหล่านี้จะติดตั้งมากับแอนดรอยด์อยุ่แล้ว และเราสามารถแทนที่ด้วยคอมโพเนนต์ที่เราสร้างขึ้นเองได้
ส่วนสำคัญใน Application Framework มีดังนี้
- Activity Manager คือคอมโพเนนต์ที่ควบคุม Lifecycle ของแอพพลิเคชั่น
- Content Providers คือคอมโพเนนต์ที่ทำให้แอพพลิเคชั่นต่างๆ สามารถแชร์ข้อมูลกันได้
- View System ประกอบด้วยคอมโพเนนต์ที่ใช้สร้างส่วนติดต่อผู้ใช้ เช่น ปุ่ม เท็กซ์บ็อกซ์ลิสต์ กริด
- Resource Manager คือตัวจัดการรีซอร์ส ซึ่งรีซอร์สหมายถึงข้อมูลใดๆ ในแอพพลิเคชั่นที่ไม่ใช่โค้ด เช่น ค่าสตริง และรูปภาพ เป็นต้น
- Notification Manager คือคอมโพเนนต์ที่ทำให้แอพพลิเคชั่นสามารถแสดงข้อความแจ้งเตือนผู้ใช้ออกมาที่แถบสถานะได้
Applications
ส่วนบนสุดของสถาปัตยกรรมแอนดรอยด์ ก็คือแอพพลิเคชั่นต่างๆ ทั้งที่ติดตั้งมากับเครื่องอยู่แล้ว ( Core Application ) เช่น Phone dialer,Email,Contacts,Web browser และ Google Play เป็นต้น รวมถึงแอพพลิเคชั่นที่เราสร้างขึ้นด้วย ซึ่งแอพพลิเคชั่นทั้งหมดในส่วนนี้จะเขียนด้วยภาษาจาวา