ארכיטקטורת הפלטפורמה

‫Android היא מחסנית תוכנה בקוד פתוח שמבוססת על Linux, שנוצרה למגוון רחב של מכשירים וגורמי צורה. איור 1 מציג את הרכיבים העיקריים של פלטפורמת Android.

חבילת התוכנה של Android

איור 1. סטאק התוכנות של Android.

ליבת Linux

הבסיס של פלטפורמת Android הוא ליבת Linux. לדוגמה, ה-Android Runtime‏ (ART) מסתמך על ליבת לינוקס לצורך פונקציות בסיסיות כמו שרשור וניהול זיכרון ברמה נמוכה.

שימוש ב-Linux kernel מאפשר ל-Android ליהנות מתכונות אבטחה חשובות ומאפשר ליצרני מכשירים לפתח מנהלי התקנים לחומרה עבור ליבת מוכרת.

שיטת הפשטת חומרה (HAL)

שיטת הפשטת חומרה (HAL) מספקת ממשקים סטנדרטיים שחושפים את היכולות של חומרת המכשיר למסגרת Java API ברמה גבוהה יותר. שכבת ה-HAL מורכבת מכמה מודולים של ספריות, שכל אחד מהם מטמיע ממשק עבור סוג ספציפי של רכיב חומרה, כמו מודול המצלמה או ה-Bluetooth. כש-API של מסגרת מבצע קריאה כדי לגשת לחומרה של המכשיר, מערכת Android טוענת את מודול הספרייה של רכיב החומרה הזה.

סביבת זמן ריצה ל-Android‏ (ART)

במכשירים עם Android מגרסה 5.0 (רמת API‏ 21) ואילך, כל אפליקציה פועלת בתהליך משלה ועם מופע משלה של Android Runtime‏ (ART). ‫ART נכתב כדי להריץ כמה מכונות וירטואליות במכשירים עם נפח זיכרון נמוך, על ידי הפעלת קבצים בפורמט Dalvik Executable ‏ (DEX), פורמט של קוד בייט שנועד במיוחד ל-Android ועבר אופטימיזציה כדי להקטין את נפח הזיכרון. כלי build, כמו d8, מהדרים מקורות Java ל-DEX bytecode, שיכול לפעול בפלטפורמת Android.

חלק מהתכונות העיקריות של ART כוללות את הדברים הבאים:

  • הידור מראש (AOT) והידור בזמן אמת (JIT)
  • אופטימיזציה של איסוף אשפה (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 framework כדי לחשוף את הפונקציונליות של חלק מהספריות המקוריות האלה לאפליקציות. לדוגמה, אפשר לגשת אל OpenGL ES דרך Java OpenGL API של Android framework כדי להוסיף תמיכה בציור ובשינוי של גרפיקה דו-ממדית ותלת-ממדית באפליקציה.

אם אתם מפתחים אפליקציה שדורשת קוד C או C++‎, אתם יכולים להשתמש ב-Android NDK כדי לגשת לחלק מספריות הפלטפורמה המקוריות האלה ישירות מהקוד המקורי שלכם.

Java API framework

כל התכונות של מערכת ההפעלה Android זמינות לכם דרך ממשקי API שנכתבו בשפת Java. ממשקי ה-API האלה הם אבני הבניין שצריך כדי ליצור אפליקציות ל-Android. הם מפשטים את השימוש החוזר ברכיבים ובשירותים מודולריים של מערכת הליבה, כולל:

  • מערכת תצוגה עשירה וניתנת להרחבה שבעזרתה אפשר לבנות את ממשק המשתמש של אפליקציה, כולל רשימות, רשתות, תיבות טקסט, לחצנים ואפילו דפדפן אינטרנט שניתן להטמעה
  • מנהל משאבים, שמספק גישה למשאבים שאינם קוד, כמו מחרוזות מקומיות, גרפיקה וקבצי פריסה
  • מרכז התראות שמאפשר לכל האפליקציות להציג התראות בהתאמה אישית בשורת הסטטוס
  • מנהל פעילות שמנהל את מחזור החיים של האפליקציות ומספק ערימה משותפת של פעולות חזרה
  • ספקי תוכן שמאפשרים לאפליקציות לגשת לנתונים מאפליקציות אחרות, כמו אפליקציית אנשי הקשר, או לשתף את הנתונים שלהם

למפתחים יש גישה מלאה לאותם ממשקי API של framework שבהם משתמשות אפליקציות מערכת של Android.

אפליקציות מערכת

מערכת Android כוללת חבילה של אפליקציות ליבה לאימייל, להודעות SMS, ליומנים, לגלישה באינטרנט, לאנשי קשר ועוד. לאפליקציות שכלולות בפלטפורמה אין סטטוס מיוחד בין האפליקציות שהמשתמש בוחר להתקין. לכן, אפליקציה של צד שלישי יכולה להפוך לדפדפן האינטרנט שמוגדר כברירת מחדל, לאפליקציית ה-SMS שמוגדרת כברירת מחדל או אפילו למקלדת שמוגדרת כברירת מחדל. יש כמה חריגים, כמו אפליקציית ההגדרות של המערכת.

אפליקציות המערכת פועלות גם כאפליקציות למשתמשים וגם מספקות יכולות מרכזיות שמפתחים יכולים לגשת אליהן מהאפליקציה שלהם. לדוגמה, אם רוצים שהאפליקציה תשלח הודעות SMS, לא צריך לפתח את הפונקציונליות הזו בעצמכם. במקום זאת, אפשר להפעיל את אפליקציית ה-SMS שכבר מותקנת כדי לשלוח הודעה לנמען שציינתם.