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 inINetd.aidl
. הממשק הזה הומר ל-AIDL יציב והוא כפוף לבדיקות תאימות.