Network Stack は更新可能な Mainline モジュールです。Android が進化するネットワーク標準に適応できるようにして、新しい実装との相互運用を可能にします。たとえば、Android はキャプティブ ポータル検出とログインコードの更新を通じて、キャプティブ ポータルモデルの変化に対応できます。また、新しいタイプのパケットが一般的になったときに、APF の更新を通じて Wi-Fi の電力を節約できます。
含まれるコンポーネント
Network Stack モジュールには、次のコンポーネントが含まれています。このモジュールを使用するデバイスでは、これらのサービスは別のプロセスに移行され、安定版の AIDL インターフェースを介してアクセスされます。
IP サービス。
IpClient
(旧IpManager
)は、IP レイヤのプロビジョニングとメンテナンスを担うコンポーネントです。Android 9 では、Bluetooth などのコンポーネントによってクロスプロセスで、Wi-Fi などのコンポーネントによってインプロセスで使用されていました。DhcpClient
は、DHCP サーバーから IP アドレスを取得してインターフェースに割り当てます。NetworkMonitor。
NetworkMonitor
コンポーネントは、ネットワークの新規接続時や障害発生時、キャプティブ ポータルの検出時、ネットワークの検証時に、インターネットへの到達性をテストします。キャプティブ ポータル ログインアプリ。キャプティブ ポータルのログイン操作を管理するプリインストール アプリ。Android 5.0 以降は独立したアプリですが、
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 形式の次のコンポーネントが含まれています。
- IP サービス
- Captive Portal Login(
com.google.android.captiveportallogin
)
このモジュールには、Network Stack Permission Config モジュールが付属しています。これは、Network Stack コンポーネントに必要な権限を定義するプリインストール APK ファイルです。
依存関係
Network Stack モジュールは以下に依存します。
システム サーバー内の特権 @hide メソッド(
IConnectivityManager.aidl
内など)。これらの API は@SystemApi
になり、適切に保護されるため、Mainline モジュールからはアクセスできますが、他の特権アプリからはアクセスできません(新しい署名権限を使用するなど)。INetd.aidl
で定義されるnetd
を指す Binder IPC。このインターフェースは安定版の AIDL に変換されており、適合性テストの対象となります。