สแต็กเครือข่ายคือโมดูล Mainline ที่อัปเดตได้ ซึ่งช่วยให้ Android สามารถปรับตัวตามมาตรฐานเครือข่ายที่พัฒนาขึ้นและช่วยให้สามารถทำงานร่วมกันกับการใช้งานใหม่ๆ ได้ ตัวอย่างเช่น การอัปเดตการตรวจหาพอร์ทัลที่กำหนดให้ผู้ใช้ต้องลงชื่อเข้าใช้และรหัสการเข้าสู่ระบบช่วยให้ Android ทันสมัยอยู่เสมอกับรูปแบบพอร์ทัลที่กำหนดให้ผู้ใช้ต้องลงชื่อเข้าใช้ที่เปลี่ยนแปลงไป และการอัปเดต APF ช่วยให้ Android ประหยัดพลังงานใน Wi-Fi ได้เมื่อแพ็กเก็ตประเภทใหม่ๆ กลายเป็นเรื่องปกติ
คอมโพเนนต์ที่รวมอยู่
โมดูล Network Stack ประกอบด้วยคอมโพเนนต์ต่อไปนี้ ในอุปกรณ์ที่ใช้ข้อบังคับนี้ บริการเหล่านี้จะย้ายไปยังกระบวนการอื่นและเข้าถึงผ่านอินเทอร์เฟซ AIDL ที่เสถียร
บริการ IP
IpClient
(เดิมคือIpManager
) คือคอมโพเนนต์ที่รับผิดชอบในการเตรียมการและการบำรุงรักษาเลเยอร์ IP ใน Android 9 คอมโพเนนต์ต่างๆ เช่น บลูทูธ ได้ใช้การแชร์ข้ามกระบวนการอยู่แล้ว และคอมโพเนนต์ต่างๆ เช่น Wi-Fi ได้ใช้การแชร์ในกระบวนการอยู่แล้วDhcpClient
รับที่อยู่ IP จากเซิร์ฟเวอร์ DHCP เพื่อให้กำหนดให้กับอินเทอร์เฟซได้NetworkMonitor คอมโพเนนต์
NetworkMonitor
จะทดสอบการเข้าถึงอินเทอร์เน็ตเมื่อเชื่อมต่อกับเครือข่ายใหม่หรือเมื่อเครือข่ายไม่ทำงาน เมื่อตรวจหาแคพทีฟพอร์ทัล และเมื่อตรวจสอบเครือข่ายแอปการเข้าสู่ระบบแคพทีฟพอร์ทัล แอปที่ติดตั้งล่วงหน้าซึ่งมีหน้าที่จัดการการเข้าสู่ระบบบนแคพทีฟพอร์ทัล ซึ่งเป็นแอปแยกต่างหากตั้งแต่ Android 5.0 แต่โต้ตอบกับ
NetworkMonitor
เพื่อส่งต่อตัวเลือกบางอย่างของผู้ใช้ไปยังระบบ
เส้นทางที่ได้รับผลกระทบ
เส้นทางที่ย้ายไปยังโมดูลสแต็กเครือข่ายจากการแยกส่วนมีดังนี้
บริการ 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
เป็นส่วนหนึ่งของโมดูลเมนไลน์และจะแก้ไขไม่ได้
รูปแบบแพ็กเกจ
โมดูลสแต็กเครือข่ายประกอบด้วยคอมโพเนนต์ต่อไปนี้ในรูปแบบ APK
- บริการ IP
- การเข้าสู่ระบบแคพทีฟพอร์ทัล (
com.google.android.captiveportallogin
)
โมดูลนี้มาพร้อมกับโมดูลการกําหนดค่าสิทธิ์สแต็กเครือข่าย ซึ่งเป็นไฟล์ APK ที่ติดตั้งไว้ล่วงหน้าซึ่งกําหนดสิทธิ์ที่จําเป็นสําหรับคอมโพเนนต์สแต็กเครือข่าย
ทรัพยากร Dependency
โมดูลสแต็กเครือข่ายจะขึ้นอยู่กับปัจจัยต่อไปนี้
เมธอด @hide ที่มีสิทธิ์ในเซิร์ฟเวอร์ระบบ (เช่น ใน
IConnectivityManager.aidl
) API เหล่านี้ได้รับการทำให้เป็น@SystemApi
และได้รับการปกป้องอย่างเหมาะสมเพื่อให้โมดูล Mainline เข้าถึงได้ แต่แอปอื่นๆ ที่มีสิทธิ์เข้าถึงไม่ได้ (เช่น การใช้สิทธิ์ลายเซ็นใหม่)Binder IPC ไปยัง
netd
ที่กําหนดไว้ในINetd.aidl
อินเทอร์เฟซนี้ได้แปลงเป็น AIDL แบบเสถียรแล้วและต้องอยู่ภายใต้การทดสอบความสอดคล้อง