Android以太网框架情景分析之启动简介

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

        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 §系统启

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值