Network Stack هي وحدة Mainline قابلة للتحديث تضمن إمكانية تكيّف Android مع معايير الشبكة المتطوّرة وتتيح التشغيل التفاعلي مع عمليات التنفيذ الجديدة. على سبيل المثال، تتيح التحديثات الخاصة برصد المدخل المشروط الوصول إليه ورمز تسجيل الدخول لنظام Android البقاء على اطّلاع على أحدث نماذج المدخل المشروط الوصول إليه، كما تتيح التحديثات الخاصة بميزة APF لنظام Android توفير الطاقة عند استخدام شبكة Wi-Fi مع شيوع أنواع جديدة من الحِزم.
المكوّنات المضمّنة
تحتوي وحدة Network Stack على المكوّنات التالية. على الأجهزة التي تستخدم الوحدة، تم نقل هذه الخدمات إلى عملية مختلفة ويمكن الوصول إليها من خلال واجهة AIDL ثابتة.
خدمات IP:
IpClient
(المعروف سابقًا باسمIpManager
) هو أحد المكوّنات المسؤولة عن توفير طبقة IP وصيانتها. في نظام التشغيل Android 9، كان يتم استخدامها في عمليات متعددة من خلال مكوّنات مثل البلوتوث، وفي عمليات فردية من خلال مكوّنات مثل شبكة Wi-Fi. يحصلDhcpClient
على عناوين IP من خوادم DHCP حتى يمكن تعيينها للواجهات.NetworkMonitor. يختبر المكوّن
NetworkMonitor
إمكانية الوصول إلى الإنترنت عند الاتصال بشبكة جديدة أو عند حدوث أعطال في الشبكة، وعند رصد مداخل مشروطة الوصول إليها، وعند التحقّق من صحة الشبكات.تطبيق تسجيل الدخول إلى المدخل المشروط الوصول إليه: هو تطبيق مثبَّت مسبقًا ومسؤول عن إدارة تسجيل الدخول إلى المداخل المشروطة الوصول إليها. كان هذا التطبيق منفصلاً منذ الإصدار 5.0 من نظام التشغيل Android، ولكنّه يتفاعل مع
NetworkMonitor
لإعادة توجيه بعض خيارات المستخدم إلى النظام.
المسارات المتأثرة
في ما يلي المسارات التي تم نقلها إلى وحدة Network Stack النمطية من خلال إعادة البناء.
خدمات 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:
- خدمات الملكية الفكرية
- تسجيل الدخول إلى مدخل مشروط الوصول إليه (
com.google.android.captiveportallogin
)
تتضمّن هذه الوحدة أيضًا وحدة Network Stack Permission Config، وهي ملف APK مثبَّت مسبقًا يحدّد الأذونات اللازمة لمكوّنات Network Stack.
التبعيات
يعتمد وحدة Network Stack على ما يلي:
طُرق hide ذات الامتيازات في خادم النظام (على سبيل المثال، في
IConnectivityManager.aidl
). تم إعداد واجهات برمجة التطبيقات هذه على أنّها@SystemApi
وتمت حمايتها بشكل مناسب لكي يتمكّن نموذج Mainline من الوصول إليها، ولكن ليس التطبيقات الأخرى ذات الامتيازات (على سبيل المثال، باستخدام إذن توقيع جديد).عمليات Binder IPCs إلى
netd
محدّدة فيINetd.aidl
. تم تحويل هذه الواجهة إلى AIDL ثابتة وتخضع لاختبارات التوافق.