幼敏悟过人,读书辄成诵。这篇文章主要讲述Android 5.0 源代码结构相关的知识,希望能为你提供帮助。
android 5.0 源代码结构本节书摘来自异步社区《深入理解Android 5 源代码》一书中的第2章,第2.2节分析Android源代码结构,作者 李骏。
网址:https://yq.aliyun.com/articles/93279?spm=5176.100239.blogcont93310.17.gtBsUg
2.2 分析Android源代码结构
获得Android 5.0源代码后,源代码的全部工程分为以下3个部分。
Core Project:核心工程部分,这是建立Android系统的基础,被保存在根目录的各个文件夹中。
External Project:扩展工程部分,可以使其他开源项目具有扩展功能,被保存在“external”文件夹中。
Package:包部分,提供了Android的应用程序、内容提供者、输入法和服务,被保存在“package”文件夹中。
在本节的内容中,将详细讲解Android 5.0源代码的目录结构。
2.2.1 总体结构
无论是Android 1.5还是Android 5.0,各个版本的源代码目录基本类似。在里面包含了原始Android的目标机代码、主机编译工具和仿真环境。解压缩下载的Android 5.0源代码包后,可以看到第一级目录有多个文件夹和一个Makefile文件,如图2-14所示。
【Android 5.0 源代码结构】
文章图片
文章图片
文章图片
由此可见,通过对源代码中根目录的每个文件夹的功能的介绍,可以看出源代码按功能分类还是非常清晰的,可以分为系统代码、工具、文档、开发环境、虚拟机、配置脚本和编译脚本等类别。并且也可以看出涉及的内容比较庞大和复杂,源代码分析工作需要多方面的理论和实践知识。
2.2.2 应用程序部分
应用程序主要是UI界面的实现,广大开发者基于SDK上开发的一个个独立的APK包,都是属于应用程序这一层的,应用程序在Android系统中处于最上层的位置。源代码结构中的packages目录用来实现系统的应用程序,packages的目录结构如下所示。
packages/
├── apps //应用程序库
│ ├── BasicSmsReceiver //基础短信接收
│ ├── Bluetooth //蓝牙
│ ├── Browser //浏览器
│ ├── Calculator //计算器
│ ├── Calendar //日历
│ ├── Camera //照相机
│ ├── CellBroadcastReceiver //单元广播接收
│ ├── CertInstaller //被调用的包,在Android中安装数字签名
│ ├── Contacts //联系人
│ ├── DeskClock //桌面时钟
│ ├── Email //电子邮件
│ ├── Exchange //Exchange服务
│ ├── Gallery //图库
│ ├── Gallery2 //图库2
│ ├── htmlViewer //HTML查看器
│ ├── KeyChain //密码管理
│ ├── Launcher2 //启动器2
│ ├── Mms //彩信
│ ├── Music //音乐
│ ├── MusicFX //音频增强
│ ├── Nfc //近场通信
│ ├── PackageInstaller //包安装器
│ ├── Phone //电话
│ ├── Protips //主屏幕提示
│ ├── Provision //引导设置
│ ├── QuickSearchBox //快速搜索框
│ ├── Settings //设置
│ ├── SoundRecorder //录音机
│ ├── SpareParts //系统设置
│ ├── SpeechRecorder //录音程序
│ ├── Stk //sim卡相关
│ ├── Tag //标签
│ ├── VideoEditor //视频编辑
│ └── VoiceDialer //语音编号
├── experimental //非官方的应用程序
│ ├── BugReportSender //Bug的报告程序
│ ├── Bummer
│ ├── CameraPreviewTest //照相机预览测试程序
│ ├── DreamTheater
│ ├── ExampleImsFramework
│ ├── LoaderApp
│ ├── NotificationLog
│ ├── NotificationShowcase
│ ├── procstatlog
│ ├── RpcPerformance
│ └── StrictModeTest
├── inputmethods //输入法
│ ├── LatinIME //拉丁文输入法
│ ├── OpenWnn //OpenWnn输入法
│ └── PinyinIME //拼音输入法
├── providers //提供器
│ ├── ApplicationsProvider //应用程序提供器,提供应用程序所需的界面
│ ├── CalendarProvider //日历提供器
│ ├── ContactsProvider //联系人提供器
│ ├── DownloadProvider //下载管理提供器
│ ├── DrmProvider //数据库相关
│ ├── GoogleContactsProvider //Google联系人提供器
│ ├── MediaProvider //媒体提供器
│ ├── TelephonyProvider //彩信提供器
│ └── UserDictionaryProvider //用户字典提供器
├── screensavers //屏幕保护
│ ├── Basic //基本屏幕保护
│ ├── PhotoTable //照片方格
│ ├── WebView //网页
└── wallpapers //墙纸
├── Basic //系统内置墙纸
├── Galaxy4 //S4内置墙纸
├── HoloSpiral //手枪皮套墙纸
├── LivePicker
├── MagicSmoke
├── MusicVisualization
├── NoiseField
└── PhaseBeam
通过上面的目录结构可以看出,package目录主要存放的是与Android系统应用层相关的内容,包括应用程序相关的包或者资源文件,其中包括系统自带的应用程序,及第三方开发的应用程序,还有屏幕保护和墙纸等应用,所以源代码中package目录对应着系统的应用层。
2.2.3 应用程序框架部分
应用程序框架是Android系统中的核心部分,也就是SDK部分,它会提供接口给应用程序使用,同时应用程序框架又会和系统服务、系统程序库、硬件抽象层有关联,所以其作用十分重大,应用程序框架的实现代码大部分都在/frameworks/base和/framwworks/av目录下,/frameworks/base的目录结构如下所示。
frameworks/base
├── api //全是XML文件,定义了API
├── cmds //Android<
推荐阅读
- 手把手教你_怎么找android应用的包名和启动activity
- 圣熙女鞋APP原型图纸
- 自己动手写Android数据库框架
- aws实例部署flask报错script-timed-out-before-returning-headers-application-py
- 安卓权威编程 挑战练习 13.8 用于RecyclerView的空视图
- LoaderManager使用具体解释---实例(AppListLoader)
- android开发之merge结合include优化布局
- HTML5 开发APP(打开相册以及图片上传)
- GetPathFromUri4kitkatAndroid 4.4 kitkat以上及以下根据uri获取路径的方法