מחסנית הרשת

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

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

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

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

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

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

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

בהמשך מפורטות הנתיבים שהועברו למודול Network Stack בעקבות השינוי.

  • שירותי IP. בframeworks/base/services/net/java/android/net/:

    • apf
    • dhcp
    • ip
    • netlink
    • util (partly)
  • זיהוי פורטלים שבויים והתחברות אליהם. ב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:

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

למודול הזה מצורף מודול ההגדרה של הרשאות מחסנית הרשת, שהוא קובץ APK שמותקן מראש ומגדיר את ההרשאות הנדרשות לרכיבי מחסנית הרשת.

תלויות

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

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

  • ‫Binder IPCs to netd defined in INetd.aidl. הממשק הזה הומר ל-AIDL יציב והוא כפוף לבדיקות תאימות.