Android以太网框架情景分析之启动简介
Android网络框架分析系列文章目录:
Android P适配以太网功能开发指南
Android以太网框架情景分析之启动简介
Android以太网框架情景分析之EthernetServiceImpl和NetworkManagementService交互深入分析
Android以太网框架情景分析之NetworkManagementService和netd交互深入分析二
Android以太网框架情景分析之NetworkManagementService和netd交互深入分析一
Android以太网框架情景分析之NetworkFactory与NetworkAgent深入分析
AsyncChannel原理分析以及实操演练
引言
以太网在Android各种终端设备形态中是一个小众化的东西,通常出现在各种多媒体,机顶盒等特殊设备形态下,既然有需求,并且正好最近这阵子我也在调试以太网相关的东西,所以就分析分析以太网的框架结构。如果仅仅是添加以太网的相关功能,还是比较简单的,但是如果想真的搞懂以太网及其涉及到的Android网络框架还是比较复杂的。
本篇章演示的源码是在Android 7.1 msm8953平台上,其中涉及的源码路径如下所示:
frameworks/base/services/java/com/android/server/
---ConnectivityService.java
---INativeDaemonConnectorCallbacks.java
---NativeDaemonConnector.java
---NetworkManagementService.java
---SystemServer.java
---SystemServiceManager.java
frameworks/base/core/java/android/net/
---ConnectivityManager.java
---EthernetManager.java
---IConnectivityManager.aidl
---IEthernetManager.aidl
---LinkProperties.java
---NetworkPolicy.java
---NetworkAgent.java
---NetworkFactory.java
---NetworkInfo.java
---ProxyInfo.java
frameworks/opt/net/ethernet/java/com/android/server/ethernet/
---EthernetConfigStore.java
---EthernetNetworkFactory.java
---EthernetServiceImpl.java
---EthernetService.java
开篇
对于Android以太网框架情景分析这个篇章,我将会从三个维度来进行分析分别如下,本来是打算将以太网框架情景分析的放在一个篇章中,但是发现由于涉及的知识点太多了,真的搞不下,所以只能做成一个系列了。
- 以太网服务(EthernetService)启动及注册流程
- 应用层面添加和使用以太网服务相关功能接口层面
- 以太网服务和ConnectivityService,Netd交互层面,这个也是最复杂的,最难的
我们已经从整体上概括了我们本篇章要讲解的维度了,我们先从整体流程图来看下这个三个维度,流程图如下所示:

整体的关系类图如下:

一.前期知识储备
在正式开始分析以太网服务启动流程之前,我们得先储备一些基本的关于以太网以及Android Framework及Native层的网络框架知识点,这样才能做到磨刀不误砍柴工。
1.1 Android Framework中网络相关的4大Service
这四个服务涉及的内容非常多,这个不影响本篇的分析,这个会在后续有时间需要专门的篇章来分析,虽然整理了一些资料,并且详尽的分析了,但是总感觉还不到位,所以这个还需要时日。
1.1.1 ConnectivityService
ConnectivityService是系统网络连接管理服务,也是整个整个Android Framework层网络框架的核心类。主要处理APP网络监听和请求,通知网络变化;处理WiFi/Telephony/Ethernet等各个链路的网络注册,更新链路信息;网络检测/评分与网络选择。
1.1.2 NetworkPolicyManagerService
NetworkPolicyManagerService是网络策略管理服务,这些策略一般指对APP的网络和限制和放行,通过netfilter来实现。
1.1.3 NetworkManagementService
NetworkManagementService是网络管理服务。NetworkManagementService为ConnectivityService和其他Framework中的服务建立了与Netd之间通信的渠道,NetworkPolicyManagerService对各个UID的策略最终都会通过 NetworkManagementService向Netd发送;另外,NetworkManagementService还会监听Netd服务的状态,处理Socket返回的消息,如 Bandwidth/Iface/Route/Address/Dns Server等的变化,同时将这些变化通知“感兴趣”的模块。
1.1.4 NetworkStatsService
这个服务主要收集网络数据,如各个Iface上下行网络流量的字节数等。APP或者其他服务可以通过该服务获取网络流量信息等。
1.2 Netd守护进程
Netd 负责Android网络的管理和控制。监听Kernel消息并通知NMPS;防火墙设置(Firewall);处理网络地址转换(NAT);进行网络共享配置(Tethering,如softap,usb网络共享)等。这个只先做简单介绍,后续会有专门章节讲解。
二. 以太网服务(EthernetService)启动流程
在前面的篇章中Android 9 §系统启

本文详细解析了Android以太网服务启动流程,涵盖SystemServer如何启动EthernetService,EthernetService内部构造,以及EthernetServiceImpl与EthernetNetworkFactory的交互。深入探讨了以太网配置读取与状态持久化。
最低0.47元/天 解锁文章
1533

被折叠的 条评论
为什么被折叠?



