您的位置:首页 > 运维架构 > 网站架构

android入门之系统架构和环境搭建

2016-10-12 15:59 337 查看

1.android背景

android起源

android系统是由安迪鲁宾团队开发的,最初用于数码相机,2005.08被google收购。(真是抱了一个好大腿)在接下来的几年中,android的发展简直是如日中天。

android命名来源

android名字是因为安迪鲁宾喜欢一个游戏的人物–大瓢虫,感觉很搞笑。不过我想在现在的这个时代,android小机器人的名字也应该已经深入人心了吧。

android图标来源

安迪鲁宾在上厕所的灵感。牛逼的人就是不一样,上厕所都能够构思出一个和名字一样深入人心的图标。在下佩服,实在是佩服。

android应用范围

现如今的android系统可以应用在很多平台上,例如手机,平板,智能家居,穿戴设备等都是比较常用的平台设施。

android版本号

android每一代系统都是以食物来进行命名的,包括后来被google收购了的时候也同样沿袭了这个规定,这不是从侧面表达了google的人都比较好吃呢?哈哈。。又说偏了。


版本号以及出版时间分别如下



各大版本对应的新特性这个实在是太多,各位不需要具体了解,大致了解一下新版本的新特性就好了,比如5.0, 6.0, 7.0都有哪些新特性。做个表格出来主要是笔者曾经去某司面试,面试题中就有这种类型的题目,给你一个名字,选择版本号。真是醉了。

android进化历史

2.3 比较稳定的一个版本,NFC 近场通信技术

3.0 专为平板设计 (出了fragment这么个玩意,主要为了适配平板)

4.0后比较稳定的版本,4.*同时支持平板和手机

笔者不才,android版本更新的很快,说实在的我只是对5.0了解的多一点,毕竟市面上还是大部分手机都是4.x的系统和5.0的系统,6.0和7.0由于市面上占比不多,所以就没有去做具体的了解,各位看官如果有兴趣的话,可以自己去google官网了解一下(备注:请自备梯子,质量好点的,还要够长,保不准梯子质量不够好或者不够长,摔下来了- -)。

最后粘贴一张友盟统计的市面上android系统占比图

8月份的android系统占比图


9月份的android系统占比图


看了自行体会,哈哈。

2. 初识android体系结构

整个android生态系统从上至下主要包括四层关系,分别是程序层,应用框架层,系统库和Android 运行时以及Linux内核。如下图所示



底层通过C语言保证了高效率,最上层使用的却是简单能快速进行开发的java语言,,一般android开发程序员都是基于最上层,也就是applications来进行开发,当然也有很多牛B的大神是从事android底层开发的,笔者也渴望着有一天能成为一个Android高级工程师,迎娶白富美,从此走上人生巅峰。虽然笔者现在还只是一个咸鱼级别的“初级工程师”,不过咸鱼也有梦想嘛(呸,咸鱼有梦想它也还是一只咸鱼)。接下来我们来一起了解一下Android的四个层次,我们初学者开法也着重围绕最上层来进行开发。

3. android四层体系结构

在上一节我们说了,android体系结构主要包含四层。下面我们一一来了解一下这四层关系。

Linux层 (C)

Linux内核驱动层是Android系统最核心的一个部分。主要包含了Android系统的核心服务,包括硬件驱动,进程管理,安全系统等等组多核心业务。我们也可以打开手机的设置选项,在设置选项中最下面一栏就有关于手机这个选项,点进去就可以看到我们手机的Android系统使用的内核版本,也就是我们手机所用的Linux内核版本。

android虚拟机和java虚拟机的区别

android虚拟机有两种,主要是dalvik和art。

java虚拟机主要是jvm。

区别:

基于的架构不同,jvm 基于栈架构,栈是位于内存上的一个空间,执行指令操作,需要向cpu寻址; dvm 基于寄存器架构,寄存器是cpu的一个组成部分,执行指令操作无需寻址直接执行。

执行文件的格式不同,jvm执行的是多个.class文件。 dvm执行的是一个.dex文件

两种android虚拟机的区别

art 实际上就是android runtime,说白了就是以时间换空间的概念。art:程序在安装时需要预编译读取,将代码转换为机器码,好处:程序运行时,无需时时转换,运行速度快 ; 缺点:安装时间稍长,由于转换机器码,所以占用略高的存储空间。

dalvik 就是在运行的时候编译。而不像art那样,在安装的时候编译。

在android 5.x版本后,dvm都换成了art模式的虚拟机,取代了原来的dalvik。

libraries 和 dalvik(c/c++)

系统库包括九个子系统,分别是图层管理、媒体库、SQLite、OpenGLEState、FreeType、WebKit、SGL、SSL和libc。Android运行时包括核心库和Dalvik虚拟机,前者既兼容了大多数Java语言所需要调用的功能函数,又包括了Android的核心库,比如android.os、android.NET、android.media等等。后者是一种基于寄存器的java虚拟机,Dalvik虚拟机主要是完成对生命周期的管理、堆栈的管理、线程的管理、安全和异常的管理以及垃圾回收等重要功能。

应用程序框架层(application framework ) (Java + JNI)

android app framework包含了整个Android FrameWork的重点,该层是应用开发框架的基础,如果你需要研究FrameWork具体流程,基本上都是和它在打交道。应用程序框架层包括活动管理器、窗口管理器、内容提供者、视图系统、包管理器、电话管理器、资源管理器、位置管理器、通知管理器和XMPP服务十个部分,在Android平台上,开发人员可以完全访问核心应用程序所使用的API框架。就像如果我们想要调用打电话的功能,就必须使用应用程序框架层的电话管理器(TelephonyManager)。

应用层(application) (java)

该层提供一些核心应用程序包,例如电子邮件、短信、日历、地图、浏览器和联系人管理等。同时,开发者可以利用Java语言设计和编写属于自己的应用程序。

4. 环境搭建

这个好像没什么可说的,既然都是android初学者入门,我想对于java应该不会陌生吧,说一下大致的步骤:

安装jdk,去oracle官网下载jdk版本,选择对应的版本与系统对应的位数(32位或者64位),windows下载下来是一个.exe(可执行的文件),双击直接点击下一步下一步就可以了。傻瓜式安装。

配置java环境变量。这个自行百度。主要配置java安装目录的bin目录。笔者的java安装目录是
D:\Java\jdk1.7.0_79\bin
,将这个目录添加到你的电脑的环境变量中即可。

开发工具,也就是我们熟称的IDE,全名是集成开发环境。市面上的主要有两种,分别是eclipse和AndroidStudio。推荐用AndroidStudio(一下简称as),现在as的性能已经很稳定了。再就是google工程师现在已经不对eclipse的adt插件进行维护了,也就意味着google不再推荐使用eclipse来进行开发,最后一个原因,你可以打开github网站,在网站上随便搜索一个android相关的开源项目,你会发现,几乎百分之90以上的android开源项目都是使用as来进行开发的,为了方便引入别人写好的库文件,我们也得使用as来进行开发!友情提醒:as对电脑配置有点要求,量力而行。笔者曾经笔记本没有换硬盘和内存的时候,打开as就卡死。自从换了ssd以及换上8G内存条后,才有了一点好转,但是对于开发还是明显不够,反应速度跟不上码代码的速度,等mac出新款了,忍痛入手一款mac,将近2w,泪崩 %>_<%

有了以上三个,最后还差一个android sdk(全称 soft developer kit)就可以做开发了,这个不需要单独去下载,我们安装as的时候,as会自动帮你下载sdk。

5. 总结

本节对Android的起源以及历史背景进行了一点简单的了解,然后简单分析了Android的系统特性以及系统架构,这些概念性的东西,我们了解了解即可。不需要过多的去深入,上面说的下载sdk的事情,笔者将会在下篇文章中讲述如何使用as来做开发以及讲述as的一些常用配置信息。笔者能力有限,在写作过程中,难免会出现疏漏,如有错误之处,请各位大神不吝指正。谢谢!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息