प्रसार का ढेर

नेटवर्क स्टैक एक अद्यतन करने योग्य मेनलाइन मॉड्यूल है जो यह सुनिश्चित करता है कि एंड्रॉइड विकसित नेटवर्क मानकों के अनुकूल हो सकता है और नए कार्यान्वयन के साथ इंटरऑपरेबिलिटी की अनुमति देता है। उदाहरण के लिए, कैप्टिव पोर्टल डिटेक्शन और लॉगिन कोड के अपडेट एंड्रॉइड को बदलते कैप्टिव पोर्टल मॉडल के साथ अपडेट रहने की अनुमति देते हैं, और एपीएफ के अपडेट एंड्रॉइड को वाई-फाई पर बिजली बचाने की अनुमति देते हैं क्योंकि नए प्रकार के पैकेट आम हो जाते हैं।

शामिल घटक

नेटवर्क स्टैक मॉड्यूल में निम्नलिखित घटक शामिल हैं। मॉड्यूल का उपयोग करने वाले उपकरणों पर, इन सेवाओं को एक अलग प्रक्रिया में ले जाया गया और एक स्थिर एआईडीएल इंटरफ़ेस के माध्यम से एक्सेस किया गया।

  • आईपी ​​सेवाएँ. IpClient (पूर्व में IpManager ) आईपी परत प्रावधान और रखरखाव का प्रभारी एक घटक है। एंड्रॉइड 9 में, यह पहले से ही ब्लूटूथ जैसे घटकों द्वारा क्रॉस-प्रोसेस और वाई-फाई जैसे घटकों द्वारा इन-प्रोसेस का उपयोग किया गया था। DhcpClient DHCP सर्वर से आईपी पते प्राप्त करता है ताकि उन्हें इंटरफेस को सौंपा जा सके।

  • नेटवर्क मॉनिटर। किसी नए नेटवर्क से कनेक्ट होने पर या नेटवर्क विफलताओं पर, कैप्टिव पोर्टल्स का पता लगाने पर, और नेटवर्क को मान्य करते समय NetworkMonitor घटक इंटरनेट रीचैबिलिटी के लिए परीक्षण करता है।

  • कैप्टिव पोर्टल लॉगिन ऐप। कैप्टिव पोर्टल पर लॉगिन प्रबंधित करने का प्रभारी एक पूर्व-स्थापित ऐप। एंड्रॉइड 5.0 के बाद से यह एक अलग ऐप रहा है, लेकिन यह सिस्टम में कुछ उपयोगकर्ता विकल्पों को अग्रेषित करने के लिए NetworkMonitor के साथ इंटरैक्ट करता है।

प्रभावित पथ

रिफैक्टर द्वारा नेटवर्क स्टैक मॉड्यूल में ले जाए गए पथ नीचे सूचीबद्ध हैं।

  • आईपी ​​सेवाएँ. 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 और कुछ अन्य साझा स्थानों में है। उपरोक्त पथ मेनलाइन के लिए वहां ले जाने से पहले फ़ाइलों के स्थान को संदर्भित करते हैं। packages/modules/NetworkStack और packages/modules/CaptivePortalLogin में फ़ाइलें मेनलाइन मॉड्यूल का हिस्सा हैं और इन्हें संशोधित नहीं किया जा सकता है।

पैकेज प्रारूप

नेटवर्क स्टैक मॉड्यूल में एपीके प्रारूप में निम्नलिखित घटक शामिल हैं:

  • आईपी ​​सेवाएँ
  • कैप्टिव पोर्टल लॉगिन ( com.google.android.captiveportallogin )

यह मॉड्यूल नेटवर्क स्टैक परमिशन कॉन्फिग मॉड्यूल के साथ है, जो एक पूर्व-स्थापित एपीके फ़ाइल है जो नेटवर्क स्टैक घटकों के लिए आवश्यक अनुमतियों को परिभाषित करती है।

निर्भरताएँ

नेटवर्क स्टैक मॉड्यूल निम्नलिखित पर निर्भर करता है:

  • सिस्टम सर्वर में विशेषाधिकार प्राप्त @hide तरीके (उदाहरण के लिए, IConnectivityManager.aidl में)। इन एपीआई को @SystemApi बनाया गया है और उचित रूप से संरक्षित किया गया है ताकि वे मेनलाइन मॉड्यूल तक पहुंच योग्य हों लेकिन अन्य विशेषाधिकार प्राप्त ऐप्स तक नहीं (उदाहरण के लिए, एक नई हस्ताक्षर अनुमति का उपयोग करके)।

  • INetd.aidl में परिभाषित आईपीसी को netd से बांधने की मशीन। इस इंटरफ़ेस को स्थिर एआईडीएल में परिवर्तित कर दिया गया है और यह अनुरूपता परीक्षणों के अधीन है।