החל מ-27 במרץ 2025, מומלץ להשתמש ב-android-latest-release
במקום ב-aosp-main
כדי ליצור תרומות ל-AOSP. מידע נוסף זמין במאמר שינויים ב-AOSP.
מחסנית הרשת
קל לארגן דפים בעזרת אוספים
אפשר לשמור ולסווג תוכן על סמך ההעדפות שלך.
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 במסגרת ה-refactor מפורט בהמשך.
המיקום החדש של הקוד שהועתק הוא 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 יציב והוא כפוף לבדיקות תאימות.
דוגמאות התוכן והקוד שבדף הזה כפופות לרישיונות המפורטים בקטע רישיון לתוכן. Java ו-OpenJDK הם סימנים מסחריים או סימנים מסחריים רשומים של חברת Oracle ו/או של השותפים העצמאיים שלה.
עדכון אחרון: 2025-07-27 (שעון UTC).
[[["התוכן קל להבנה","easyToUnderstand","thumb-up"],["התוכן עזר לי לפתור בעיה","solvedMyProblem","thumb-up"],["סיבה אחרת","otherUp","thumb-up"]],[["חסרים לי מידע או פרטים","missingTheInformationINeed","thumb-down"],["התוכן מורכב מדי או עם יותר מדי שלבים","tooComplicatedTooManySteps","thumb-down"],["התוכן לא עדכני","outOfDate","thumb-down"],["בעיה בתרגום","translationIssue","thumb-down"],["בעיה בדוגמאות/בקוד","samplesCodeIssue","thumb-down"],["סיבה אחרת","otherDown","thumb-down"]],["עדכון אחרון: 2025-07-27 (שעון UTC)."],[],[],null,["# Network Stack is an updatable Mainline module that ensures that Android can\nadapt to evolving network standards and allows for interoperability with new\nimplementations. For example, updates to captive portal detection and login code\nallow Android to stay up to date with changing captive portal models, and\nupdates to APF allow Android to save power on Wi-Fi as new types of packets\nbecome common.\n\nIncluded components\n-------------------\n\nThe Network Stack module contains the following components. On devices using the\nmodule, these services were moved to a different process and are accessed\nthrough a stable AIDL interface.\n\n- **IP services.** `IpClient` (formerly `IpManager`) is a component in charge of\n IP layer provisioning and maintenance. In Android 9, it was already used\n cross-process by components such as Bluetooth, and in-process by components\n such as Wi-Fi. `DhcpClient` obtains IP addresses from DHCP servers so they can\n be assigned to interfaces.\n\n- **NetworkMonitor.** The `NetworkMonitor` component tests for internet\n reachability when connecting to a new network or upon network failures, when\n detecting captive portals, and when validating networks.\n\n- **Captive portal login app.** A preinstalled app in charge of managing login\n on captive portals. This has been a separate app since Android 5.0, but it\n interacts with `NetworkMonitor` to forward some user choices to the system.\n\nAffected paths\n--------------\n\nThe paths moved to the Network Stack module by the refactor are listed below.\n\n- **IP services.** In `frameworks/base/services/net/java/android/net/`:\n\n - `apf`\n - `dhcp`\n - `ip`\n - `netlink`\n - `util` (partly)\n- **Captive portal detection and login.** In `frameworks/base/`:\n\n - `core/java/android/net/captiveportal/`\n - `services/core/java/com/android/server/connectivity/NetworkMonitor.java`\n - `packages/CaptivePortalLogin/*`\n\nThe new location of the moved code is in `packages/modules/NetworkStack`,\n`packages/modules/CaptivePortalLogin` and some other shared locations. The above\npaths refer to the location of files before being moved there for Mainline.\nFiles in `packages/modules/NetworkStack` and\n`packages/modules/CaptivePortalLogin` are part of the Mainline module and cannot\nbe modified.\n\nPackage format\n--------------\n\nThe Network Stack module contains the following components in APK format:\n\n- IP services\n- Captive portal login (`com.google.android.captiveportallogin`)\n\nThis module is accompanied by the Network Stack Permission Config module,\nwhich is a pre-installed APK file that defines the necessary permissions for the\nNetwork Stack components.\n\nDependencies\n------------\n\nThe Network Stack module depends on the following:\n\n- Privileged @hide methods in the system server (e.g., in\n `IConnectivityManager.aidl`). These APIs have been made `@SystemApi` and\n appropriately protected so that they are accessible to the Mainline module but\n not other privileged apps (e.g., using a new signature permission).\n\n- Binder IPCs to `netd` defined in\n [`INetd.aidl`](https://android.googlesource.com/platform/system/netd/+/android16-release/server/binder/android/net/INetd.aidl).\n This interface has been converted to stable AIDL and is subject to conformance\n tests."]]