文档章节

Android进阶学习-Android体系与系统架构

August1996_
 August1996_
发布于 2016/04/17 18:49
字数 1167
阅读 39
收藏 0

1.一张安卓系统架构的经典示意图:

        Linux层:包含Android系统的核心服务,包括硬件驱动,进程管理,安全系统,等等

        Dalvik与ART:Dalvik包含一整套的Android运行环境虚拟机,每个APP都会分配Dalvik虚拟机来保证互相之间不受干扰,并保持独立.从Android5.X开始,就用ART模式取代Dalvik了,其中Dalvik是运行时编译,而ART是 安装时编译.当然,对在其虚拟机环境运行的大部分APP来说,它们都运行着同样的代码,只是编译时机不同.

        Framework层:书上没怎么说,那我也不会怎么说...就知道深入研究安卓设计的时候,就是跟这堆东西打交道

        Standard libraries:这里包含的是Android中的一些标准库,所谓标准,就是开源环境中可以被开发者使用的开发库

        Application:其中Application主要由NDK开发和Java开发的APP构成.所有的APP都必须有Android Manifest,Dalvik Classes,Resource Bundle几个文件.

2.Android App组件架构

    四大组件:Activity,BroadCastReceiver,ContentProvider,Service.

        Activity:作为人机交互的第一界面,用来向用户展示信息和处理结果.

        BroadCastReceiver:可通过广播形式给Activity,Service传递数据

        ContentProvider:从其他应用获取数据,交给该App自己处理

        Service:处理一些后台的业务逻辑,例如下载,计算,处理等

    还要说的就是Intent,它是一个数据的载体,使数据可以在各个组件,各种组件之间传递信息,交换数据.在各个组件通信中起着必不可少的作用.

3.上下文对象Context:什么是上下文?以前我们老师常说的请联系上下文,大概就是一个语境的意思.那么Android的上下文可以理解为对象所处的一个环境,一个与系统较好的过程.其中Activity,Service,Application都是继承自Context.Android会在下面的时机创建一个Context:

    1.创建Application

    2.创建Activity

    3.创建Service

    其实,每当创建Context的实现类的时候就会创建Context...每个程序都会有一个Application对象,即是有一个Application Context.所有的Activity和Service都会共用这个Context,这个Context贯穿整个应用的生命周期.为全局提供了功能和环境支持.而当创建Activity和Service的时候,系统也会创建Context.在Activity获取Context的时候可以传入this参数,因为Activity本身就是继承自Context,但是在内部类需要使用XXX.this来指定对象.很多时候也可以使用getApplicationContext()获取全局ApplicationContext去作为传输传递.但是Application Context和某个组件的Context在一些时候还是有区别的.

4.Android系统源代码目录与系统目录:

    1.Android源代码目录:(AOSP的为例子,一些芯片厂商的另当别论)

|-- Makefile

|-- bionic                        (bionic C库)

|-- bootable                (启动引导相关代码)

|-- build                        (存放系统编译规则及generic等基础开发包配置)

|-- cts                        (Android兼容性测试套件标准)

|-- dalvik                        (dalvik JAVA虚拟机)

|-- development        (应用程序开发相关)

|-- external                (android使用的一些开源的模组)

|-- frameworks                (核心框架——java及C++语言)

|-- hardware                (部分厂家开源的硬解适配层HAL代码)

|-- out                        (编译完成后的代码输出与此目录)

|-- packages                (应用程序包)

|-- prebuilt                (x86和arm架构下预编译的一些资源)

|-- sdk                        (sdk及模拟器)

|-- system                        (底层文件系统库、应用及组件——C语言)

`-- vendor                (厂商定制代码)        

    可以看出,Android源代码编译是使用Makefile来管理的

    2.Android系统目录:(主要是/system和/data)

        /system/app:存放App

        /system/bin:Linux自带的组件,一些基础命令

        /system/build.prop:记录系统的属性信息

        /system/fonts:存放系统字体,root后下载TTF格式字体替换原字体就达到修改系统字体效果

        /system/framework:系统的核心文件 框架层

        /system/lib:存放几乎所有的共享库(.so)

        /system/media:存放系统默认的媒体文件

            alarms:闹铃声音

            notification:短信或提示音

            ringtones:来对待你铃声

            ui:存放界面的声音

        /system/usr:存放用户配置文件,如键盘布局 共享 时区文件等

        /data/app:系统安装或者升级的app

        /data/data:开发者接触最多的,存放一些app的配置 数据 文件等信息.以包名命名

        /data/system:包含手机的系统信息

        /data/misc:存放大部分的WiFi VPN信息

© 著作权归作者所有

August1996_
粉丝 2
博文 51
码字总数 29055
作品 0
湛江
程序员
私信 提问
Android进阶二部曲第二部《Android进阶解密》已出版

Android进阶二部曲第一部《Android进阶之光》介绍 :点击这里 本书源码地址:https://github.com/henrymorgen/android-advanced-decode 为什么写这本书 Android进阶二部曲包括《Android进阶之...

刘望舒
2018/10/23
0
0
破解Android进阶奥秘!《Android进阶解密》已出版

Android进阶二部曲第一部《Android进阶之光》介绍 :点击这里 本书源码地址:github.com/henrymorgen… 为什么写这本书 Android进阶二部曲包括《Android进阶之光》和本书,因此写这本书的原因...

刘望舒
2018/10/23
0
0
Android知识体系总结(全方面覆盖Android知识结构,面试&进阶)

Android知识体系总结(全方面覆盖Android知识结构,面试&进阶 Version-1.0.1 时间:2018.09) 基本内容 : Android基础知识:基本涵盖Android所有知识体系,四大组件,Fragment,WebView,事件分发...

Java高级架构
2018/11/01
0
0
高手问答第 216 期 —— Android 开发应该如何进阶?

OSCHINA 本期高手问答(2018 年 11 月 7 日 — 11 月 13 日)我们请来了@刘望舒 为大家解答关于 Android 开发方面的问题。 刘望舒,资深开发工程师,Android 进阶二部曲《Android进阶之光》和《...

局长
2018/11/07
2.2K
15
WebView内存泄露的解决方案

一、简介: 做Android开发的相信都对webview不会陌生,而且也对系统自带的webview本身存在的问题也是怨念很久了,一方面是本身对js的支持不是很好另外一方面就是经常被人诟病的内存泄露了,网...

北辰丨丶
03/06
41
0

没有更多内容

加载失败,请刷新页面

加载更多

防止流量劫持有效途径-安装SSL证书

  在互联网的世界里,流量就等于金钱。而流量劫持是指,利用各种恶意软件、木马病毒,修改浏览器、锁定主页或不停弹出新窗口等方式,强制用户访问某些网站,从而造成用户流量损失的情形。 ...

安信SSL证书
9分钟前
2
0
关于工作流程数据模版的设置与使用.

关键字:ccbpm数据模版 解释说明:数据模版就是当前工作人员历史发起的历史流程里,把一些具有代表性的设置为模版,下次在启动流程的时候,选择模版里的数据在发起流程,避免重复数据录入的工...

ccflow周朋
23分钟前
4
0
第一个只出现一次的字符

处理字符串中重复或者次数出现等问题,最常用的就是哈希表,用字符串中的字符作为key,字符出现次数作为value,假定只有ASCII码范围内的字符,则可以开辟一个256大小的int数组,将每个字符(...

Garphy
23分钟前
4
0
通过构建区块链来学习区块链-1-Transaction|Block|POW

原文链接:https://medium.com/@vanflymen/learn-blockchains-by-building-one-117428612f46 交易Transaction 区块Block 工作量证明 你来这里是因为,和我一样,你对加密货币的崛起感到兴奋。...

Riverzhou
30分钟前
4
0
大数据最核心的关键技术——32个算法,记得收藏!

奥地利符号计算研究所的Christoph Koutschan博士在自己的页面上发布了一篇文章,提到他做了一个调查,参与者大多数是计算机科学家,他请这些科学家投票选出最重要的算法,以下是这次调查的结...

大数据金罗
今天
12
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部