扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
本篇内容主要目的在从整体上了解Android 庞大的系统架构,根据系统架构中的不同模块和分层找到和梳理一条学习路径,这样能更好的切入到不同的模块学习,直到最后全部打通。
创新互联公司专业为企业提供正阳网站建设、正阳做网站、正阳网站设计、正阳网站制作等企业网站建设、网页设计与制作、正阳企业网站模板建站服务,十年正阳做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。
接下来我们从两个角度来分析
下面这张图是Android官方提供的一张Android系统的预览图。
从上面这个图中我们可以知道,Android系统一共有5部分组成,他们分别是
从纵向层级架构的角度来看,我们了解了android系统经典5层结构,他们如垒砖一般纵向堆叠在一起。但是其实每一层都包含了大量的子模块子系统,并不能体现出Android整个系统的内部架构、运行机理,以及各个模块之间是如何衔接与配合工作的。接下来借鉴了gityuan总结的一张系统进程图,从系统进程的角度来看Android系统的工作原理。
Loader层: 引导kernel启动
Kernel层: Android内核空间
Native层: 进入用户空间
Framework层: 给app层提供api以及系统服务,
App层: 各种各样的应用程序apk
参考文献:
首先Android开发主要是有三个层次的技术:
1、第一个层次和传统的嵌入式Linux最接近,主要涉及的是CPU、GPU以及外设的驱动以及使能方面。需要熟悉Linux内核,Android框架定义中驱动的接口规范等等,这部分开源社区的力量最大。
2、第二个层次主要是涉及Android框架中间件部分,如多媒体/3D框架,Java虚拟机等等,这部分Google控制的是最严格的,因为他要控制Android各种feature以及捆绑自己的移动互联网应用,必须规范中间件。这部分所涉及的软件技术也最多,从各种C/C++库,Java虚拟机性 能,用户体验抽象到数据库设计等等很大的内涵。
3、第三个层次就是App开发层次,这个层次主要就是利用Android SDK开发了。很多C/C++出身的觉得是用Java开发,其实Java就是啥都是指针的C++,外带try/catch以及垃圾收集,上手其实是很快的。
4、如果你是个新手的话建议你多掌握些技术知识,不管是自学还是去其他地方学习,教学联盟也许会帮助到你,暂且说到这里。
在App运行过程中,我们的视图层级可能会由于用户的操作一直在发生改变,甚至可能会有一些出乎预料的变化,本文将会介绍 如何进行Android视图实时分析,分析View的视图层级及属性变化。
首先,笔者先来一个简单的Demo实例。我们使用Android Studio新建一个Empty Android工程,跑一下程序,界面如下图所示:
接下来,我们要对视图层级进行分析,但分析之前先给各位介绍两个视图分析工具。
1. Android SDK 中 tools 包下的 hierarchyviewer ,最终展现的视图效果如下:
2. Android Studio 也有自带的视图分析工具 Layout Inspector(布局检查器) ,打开方式如下图所示:
可以看到Layout Inspector最右侧的属性栏可以查看 每一个View的所附带的属性及属性值 。
从根视图开始分析视图层级,如下图所示:
DecorView的第一个子View(LinearLayout), 如下图所示:
DecorView的第二个子View(View),如下图所示:
DecorView的第三个子View(View),如下图所示:
至此,DecorView的最外层View全部分析完毕。
接下来,分析DecorView的第一个子View(LinearLayout),如下图所示:
ViewStub的属性信息,如下图所示:
FrameLayout的属性信息,如下图所示:
接下来,继续分析FrameLayout的子View,如下图所示:
ContentFrameLayout的视图属性,如下图所示:
ActionBarContainer的视图属性,如下图所示:
不过,还有个问题需要提醒一下, 不同机型,不同系统主题设置 生成的视图结构可能会不一样,举两个例子:
例一:笔者把使用的模拟器换成自己的手机(360N5 Android 6.0.1) ,运行后视图布局如下:
可以看到 笔者的手机是没有NavigationBar(底部导航栏)的 。
例二:笔者把Activity的主题"Theme.AppCompat.Light.DarkActionBar"换成无标题栏主题"Theme.AppCompat.Light.NoActionBar" ,运行后视图布局如下:
可以看到视图结构与我们之前分析的相比,发生了一些变化。
最后,还有个细节给各位补充下: Layout Inspector 只能分析出Android Studio当前 “正在运行的APP” 的视图布局结构,其他应用的视图布局结构是无法显示的。
如果我们想要分析一个第三方应用(如:微信、QQ)的视图结构可以使用 Android Device Monitor(安卓设备监视器) ,具体打开步骤如下图所示:
以QQ为例,我们先打开手机QQ,显示出QQ主界面,然后按照下图的 "红色圈选" ,依次点击,当前的视图结构就出来了,但是相比于 Layout Inspector 工具,视图属性信息提供的较少...
视图层级分析 到此结束,有时间再补篇源码,分析一下布局加载的流程。
写这篇文章的时候被IOS同事嘲讽了,它们吐槽Android的视图分析工具太渣,最后对比看了下,Android的视图分析工具确实没有IOS的高大上......╮(╯▽╰)╭
最后,秀一下IOS的视图分析工具 Reveal ,如下图所示:
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流