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/:apfdhcpipnetlinkutil(partly)
זיהוי פורטלים שבויים והתחברות אליהם. ב
frameworks/base/:core/java/android/net/captiveportal/services/core/java/com/android/server/connectivity/NetworkMonitor.javapackages/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
netddefined inINetd.aidl. הממשק הזה הומר ל-AIDL יציב והוא כפוף לבדיקות תאימות.