Android 5.0 源代码结构

Posted LoTGu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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所示。

clip_image002

clip_image004

clip_image006

由此可见,通过对源代码中根目录的每个文件夹的功能的介绍,可以看出源代码按功能分类还是非常清晰的,可以分为系统代码、工具、文档、开发环境、虚拟机、配置脚本和编译脚本等类别。并且也可以看出涉及的内容比较庞大和复杂,源代码分析工作需要多方面的理论和实践知识。

 

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 5.0 源代码结构的主要内容,如果未能解决你的问题,请参考以下文章

android 用代码打开 gprs(流量开关) android 5.0 ROOT

android 用代码打开 gprs(流量开关) android 5.0 ROOT

android WIFI 设置代理代码 4.4.3——5.0

Android 进程常驻----native保活5.0以上方案推演过程以及代码

如何在带有 Android 5.0 Lollipop 的代码(不是 xml)中以编程方式使用 RippleDrawable?

android自己定义之 5.0 风格progressBar