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

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

181732_BSIe_2697209.jpeg

181733_1zDl_2697209.jpg

        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信息

转载于:https://my.oschina.net/august1996/blog/661456

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值