1 Android 源码根目录介绍
Android源码根目录 | 描述 |
art | Android Runtime,一种App运行模式,区别于传统的Dalvik虚拟机,旨在提高Android系统的流畅性 |
abi | abi 相关代码,abi:application binary interface,应用程序二进制接口 |
bionic | bionic C 库 |
bootable | 启动引导相关代码 |
build | 存放系统编译规则及 generic 等基础开发配置包 |
compatibility | 兼容性的一些资源 |
cts | Android 兼容性测试套件标准 |
dalvik | dalvik Java 虚拟机 |
developers | Android开发者参考文档 |
development | 应用程序开发相关 |
device | 设备相关代码 |
disregard | 清空 Android.mk 内容,以阻止 Android 构建系统更深入地扫描 Android.mk 的子目录。 |
docs | 介绍开源的相关代码 |
external | Android 使用的一些开源的模组 |
frameworks | 核心框架 - Java 及 C++语言,是 Android 应用程序的框架 |
gdk | 即时通信模块 |
hardware | 主要是硬件适配层 HAL 代码 |
kernel | Linux 的内核文件 |
libcore | 核心库相关 |
libnativehelper | 是 Support functions for Android‘s class libraries 的缩写,表示动态库,是实现 JNI 库的基础 |
ndk | ndk 相关代码。Android NDK(Android Native Development Kit)是一系列的开发工具,允许程序开发人员在 Android 应用程序中嵌入 C/C++ 语言编写的非托管代码。 |
out | 编译完成后的代码输出在此目录 |
packages | 应用程序包 |
pdk | Plug Development Kit 的缩写,是本地开发套件 |
platform_testing | Android平台测试程序 |
prebuilts | x86 和 ARM 架构下预编译的一些资源 |
sdk | SDK 及模拟器 |
shortcut-fe | 根据手机平台芯片改变,这里是高通xx加速 |
system | 文件系统和应用及组件,是用 C 语言实现的 |
test | Android Vendor测试框架 |
toolchain | Android工具链 |
tools | 工具文件夹 |
vendor | 厂商定制代码 |
Makefile | 全局的 Makefile |
frameworks目录
|- base (基本内容)
|- api (api android application interface)
|- awt (AWT库)
|- build
|- camera (摄像头服务程序库)
|- cmds (重要命令:am、app_proce等)
|- core (核心库)
|- data (字体和声音等数据文件)
|- docs (文档)
|- graphics (图形相关)
|- include (头文件)
|- keystore (和数据签名证书相关)
|- libs (库)
|- location (地区库)
|- media (媒体相关库)
|- obex (蓝牙传输库)
|- opengl (2D-3D加速库)
|- packages (设置、TTS、VPN程序)
|- sax (XML解析器)
|- services (各种服务程序)
|- telephony (电话通讯管理)
|- test-runner (测试工具相关)
|- tests (各种测试)
|- tools (一些叫不上名的工具)
|- vpn (VPN)
- wifi (无线网络)
|- opt (可选部分)
|- com.google.android (有个framework.jar)
|- com.google.android.googlelogin (有个client.jar)
|- emoji (standard message elements)
|- policies (Product policies are operating system directions aimed at specific uses)
|- base
|- mid (MID设备)
|- phone (手机类设备,一般用这个)
|- av // 多媒体框架
|- camera // 多媒体的相机相关部分
|- cmds // 命令源码
|- drm // 数据保护
|- include // 头文件
|- media // 多媒体部分
|- radio // 无线射频部分
|- services // 服务部分
|- soundtrigger // 语音识别架构
|- tools // 工具包
|- base // base,包括以下几个目录。
|- apct-tests // 性能优化测试
|- api // java的api接口,修改了接口文件请及时更新此目录下的文件(make update-api)
|- cmds // 重要命令:am、app_proce等的源码
|- core // framework层核心库
|- java // java库
|- jni // jni层
|- proto // 协议层
|- res // 资源文件
|- tests // 测试工具
|- data // 字体和声音等数据文件
|- docs // 文档
|- drm // 数据保护
|- graphics // 图形相关
|- keystore // 和数据签名证书相关
|- legacy-test // 安全相关测试
|- libs // lib库
|- androidfw // fw功能库
|- common_time // 常用功能和工具集合,缓存,包括图片缓存、预取缓存、网络缓存;公共 View,即功能封装好的部件,包括下拉获得最新和上拉加载更多 ListView、底部加载更多 ScrollView、滑动一页 Gallery 等等。;常用工具类,包括网络、下载、资源操作、Shell、文件读写、Json、序列化/反序列化、随机数、集合(Array、List、Map)、APK 包等等。
|- hwui // 硬件渲染库
|- incident // 事件驱动机制库
|- input // 输入库
|- services // 服务库
|- storage // 存储库
|- usb // USB库
|- location // 定位功能
|- media // 媒体相关库
|- native // native框架
|- nfc-extras // nfc额外框架
|- obex // 蓝牙传输库
|- opengl // 2D-3D加速库
|- packages // 设置、TTS、VPN程序
|- proto // 协议框架
|- rs // 资源框架
|- samples // 例子程序
|- sax // XML解析器
|- services // 各种服务程序
|- telecomm // Telecom通信框架
|- telephony // 电话通讯框架
|- test-runner // 测试工具相关
|- tests // 各种测试
|- tools // 工具
|- vr // 虚拟现实相关
|- wifi // 无线
|- compile // 编译相关
|- libbcc // 用于Linux性能监视的动态跟踪工具的库
|- bcinfo // 获取硬件设备信息库
|- gdb_plugin // gdb插件
|- include // 头文件
|- lib // 库文件
|- tests // 测试程序
|- tools // 测试工具
|- mclinker // MCLinker链接器
|- include // 头文件
|- lib // 库文件
|- templates // 模板
|- tools // 工具
|- unittests // 单元测试工具
|- slang // 异常框架
|- data-binding // 数据绑定。
|- ex // ex文件解析器
|- camera2 // 相机相关
|- common // 共有的
|- framesequence // GIF图片工具包
|- photoviewer // 图片预览
|- widget // 小部件
|- hardware // 硬件适配接口
|- interfaces // 接口文件
|- current.txt // 接口记录文件
|- displayservice // 显示服务
|- schedulerservice // JobScheduler主要用于在未来某个时间下满足一定条件时触发执行某项任务的情况
|- sensorservice // 传感器服务
|- update-makefiles.sh // 更新makefile文件脚本
|- vr // 虚拟现实硬件接口
|- minikin // Android原生字体,连体字效果
|- ml // 机器学习
|- bordeaux //
|- learning // 学习算法
|- service // 服务
|- multidex // Multi-dex Loader。
|- native // native实现
|- aidl // aidl层,Android 接口定义语言
|- build // 编译配置
|- cmds // 命令行
|- data // 数据文件
|- docs // 文档
|- include // 头文件
|- libs // 库
|- arect // 图形库
|- binder // binder通信库
|- diskusage // 硬盘读取库
|- gui // ui显示库
|- hwc2on1adapter //
|- input // 输入库
|- math // 数学库
|- nativewindow // native窗口库
|- sensor // 传感器库
|- ui // ui库
|- vr // 虚拟现实库
|- opengl // 2D-3D接口框架
|- services // 服务
|- audiomanager // 音频服务
|- batteryservice // 电源服务
|- displayservice // 显示服务
|- inputflinger // 输入框架服务
|- nativeperms // 属性服务
|- powermanager // 电池管理
|- schedulerservice //事件消息服务
|- sensorservice // 传感器服务
|- surfaceflinger // 显示服务
|- vr // 虚拟现实服务
|- vulcan // 隐式框架
|- opt // 一些软件。
|- bitmap // 二进制图
|- bluetooth // 蓝牙
|- calendar // 日历
|- chips // 芯片工具
|- colorpicker // 色彩拾取工具
|- datetimepicker // 时间选择工具
|- emoji // standard message elements 表情
|- inputconnectioncommon // 输入连接工具
|- inputmethodcommon // 输入方法工具
|- net // 网络相关工具
|- ethernet // 有线网络
|- ims // ims
|- voip // 数据网络
|- wifi // 无线网络
|- photoviewer // 照片预览工具
|- setupwizard // 开机向导工具
|- telephony // 通信工具
|- timezonepicker // 时区工具
|- vcard // 芯片卡片工具
|- rs // Render Script,可创建3D接口。
|- support // framework支持文件
|- webview // webview framework层的接口
|- wilhelm // Wilhelm,基于Khronos的OpenSL ES/OpenMAX AL的audio/multimedia实现。
2 Android四大组件
Android四大组件是指Activity(活动)、Service(服务)、Broadcast Receiver(广播接收器)和Content Provider(内容提供器)。它们是构成Android应用程序的基本组成部分,各自负责不同的功能。
2.1. **Activity(活动)**
- Activity是用户界面的基本组件,通常表示一个用户界面屏幕。每个Activity都是一个单独的类,负责处理用户与应用程序之间的交互。
- 它可以包含用户界面元素,如按钮、文本框等,并且可以响应用户的输入事件,如点击、滑动等。
- Android应用程序通常由多个Activity组成,它们之间可以通过Intent进行通信和切换。
2.2. **Service(服务)**
- Service是在后台执行长时间运行操作的组件,它没有用户界面,可以在后台执行一些长时间运行的任务,如播放音乐、下载文件等。
- Service可以被其他组件调用,如Activity或其他Service,它们可以通过startService()和bindService()方法进行交互。
- Service可以在应用程序退出后继续运行,即使用户切换到其他应用程序,也可以保持后台运行。
2.3. **Broadcast Receiver(广播接收器)**
- Broadcast Receiver是用于监听系统广播消息或应用程序间发送的广播消息的组件。
- 它可以接收系统广播事件,如网络状态变化、电池状态变化等,也可以接收应用程序发送的自定义广播消息。
- 广播接收器通过注册监听器来接收广播消息,可以通过静态注册和动态注册两种方式进行。
2.4. **Content Provider(内容提供器)**
- Content Provider是Android平台中用于实现数据共享和数据访问的组件。
- 它可以让一个应用程序的数据被其他应用程序访问和共享,提供了统一的接口来访问数据,可以实现数据的增删改查等操作。
- Content Provider通常用于访问Android系统提供的一些数据,如联系人、媒体文件、数据库等,也可以通过自定义Content Provider来提供应用程序私有的数据访问接口。
这四大组件共同构成了Android应用程序的基本架构,通过它们的协作,可以实现丰富多彩的应用程序功能。
3 Android TIF框架
Android TIF(TV Input Framework,电视输入框架)是 Android 系统中用于支持数字电视应用程序开发的框架。它使开发人员能够创建与数字电视硬件设备(如数字电视调谐器、HDMI 输入设备等)交互的应用程序,并且能够提供丰富的电视观看体验。
3.1. **通道和节目数据模型**:
- Android TIF 框架提供了通道和节目数据模型,用于表示数字电视信号中的频道和节目信息。这些信息包括频道号、频道名称、节目名称、节目描述等。
- 开发人员可以通过 TIF 框架获取并管理这些通道和节目数据,从而实现电视频道的浏览、搜索和收藏等功能。
3.2. **TV Input Service**:
- TV Input Service 是 Android TIF 框架中的核心组件,它负责与数字电视硬件设备进行通信,并提供与硬件设备交互的接口。
- 开发人员可以创建自定义的 TV Input Service,用于与特定类型的数字电视硬件设备进行交互。例如,可以创建一个 TV Input Service 来与数字电视调谐器进行通信,实现对数字电视信号的解码和播放。
3.3. **TV Input Manager**:
- TV Input Manager 是 Android 系统中的一个系统服务,用于管理 TV Input Service。
- 开发人员可以使用 TV Input Manager 来获取 TV Input Service 的列表、连接到指定的 TV Input Service、选择当前的 TV Input Service 等。
3.4. **用户界面**:
- Android TIF 框架提供了用于电视观看的用户界面组件,包括频道列表、节目指南、节目搜索等。
- 开发人员可以使用这些用户界面组件来构建自定义的电视观看界面,以满足不同用户的需求。
3.5. **权限管理**:
- 由于 TV Input Service 可能需要访问敏感的硬件设备,因此 Android TIF 框架提供了权限管理机制,用于控制对 TV Input Service 的访问权限。
- 开发人员需要在应用程序清单文件中声明所需的权限,并在运行时请求用户授予这些权限。