מקבץ רשתות

Network Stack הוא מודול Mainline שניתן לעדכון, שמבטיח שמערכת Android תוכל להתאים את עצמה לתקני הרשת המתפתחים ומאפשר יכולת פעולה הדדית עם הטמעות חדשות. לדוגמה, עדכונים לזיהוי פורטלים שבויים ולקוד הכניסה מאפשרים ל-Android להתעדכן במודלים המשתנים של פורטלים שבויים, ועדכונים ל-APF מאפשרים ל-Android לחסוך בחשמל ב-Wi-Fi כשסוגי חבילות חדשים הופכים לנפוצים.

הרכיבים הכלולים

המודול 'ערימת רשת' מכיל את הרכיבים הבאים. במכשירים שמשתמשים במודול, השירותים האלה הועברו לתהליך אחר והגישה אליהם מתבצעת דרך ממשק AIDL יציב.

  • שירותי IP. IpClient (לשעבר IpManager) הוא רכיב שאחראי על ההקצאה והתחזוקה של שכבות IP. ב-Android 9, רכיבים כמו Bluetooth כבר השתמשו בו בתהליכים שונים, ורכיבים כמו Wi-Fi השתמשו בו בתהליך אחד. DhcpClient מקבל כתובות IP משרתי DHCP כדי שאפשר יהיה להקצות אותן לממשקים.

  • NetworkMonitor. רכיב הNetworkMonitor בודק את יכולת הגישה לאינטרנט כשמתחברים לרשת חדשה או במקרה של כשלים ברשת, בזמן זיהוי פורטלים שבויים ואימות רשתות.

  • אפליקציית התחברות לפורטל שבוי: אפליקציה מותקנת מראש שמנהלת את ההתחברות לפורטלים שבויים. זוהי אפליקציה נפרדת מאז Android 5.0, אבל היא פועלת בשילוב עם NetworkMonitor כדי להעביר למערכת חלק מהבחירות של המשתמשים.

נתיבים מושפעים

הנתיב שעבר למערכי המודולים של Network Stack במסגרת ה-refactor מפורט בהמשך.

  • שירותי IP באמצעות frameworks/base/services/net/java/android/net/:

    • apf
    • dhcp
    • ip
    • netlink
    • util (באופן חלקי)
  • זיהוי פורטלים שבויים והתחברות אליהם ב-frameworks/base/:

    • core/java/android/net/captiveportal/
    • services/core/java/com/android/server/connectivity/NetworkMonitor.java
    • packages/CaptivePortalLogin/*

המיקום החדש של הקוד שהועתק הוא packages/modules/NetworkStack,‏ packages/modules/CaptivePortalLogin ומיקומים משותפים נוספים. הנתיבים שלמעלה מתייחסים למיקום של הקבצים לפני שהם הועברו לשם עבור Mainline. הקבצים ב-packages/modules/NetworkStack וב-packages/modules/CaptivePortalLogin הם חלק מהמודול Mainline ואי אפשר לשנות אותם.

פורמט החבילה

מודול Network Stack מכיל את הרכיבים הבאים בפורמט APK:

  • שירותי IP
  • התחברות לפורטל שבוי (com.google.android.captiveportallogin)

המודול הזה מלווה במודול Network Stack Permission Config, שהוא קובץ APK מותקן מראש שמגדיר את ההרשאות הנדרשות לרכיבי Network Stack.

יחסי תלות

המודול של סטאק הרשתות תלוי בגורמים הבאים:

  • שיטות @hide בעלות הרשאות בשרת המערכת (למשל, ב-IConnectivityManager.aidl). ממשקי ה-API האלה הוגדרו כ-@SystemApi והוגנו כראוי כדי שיהיו נגישים למודול Mainline, אבל לא לאפליקציות אחרות עם הרשאות (למשל, באמצעות הרשאת חתימה חדשה).

  • יצירת IPCs של Binder ל-netd שהוגדרו ב-INetd.aidl. הממשק הזה הומר ל-AIDL יציב ועובר בדיקות תאימות.