android三层架构
1. 什么是android系统,android的发展以及android的平台架构和特性
Android平台采用了整合的策略思想,包括底层linux操作系统、中间层的中间件和上层的java应用程序。下面我把Android的特性及其架构体系结构总结一下。
一、Android的平台特性
Android平台有如下特性:
1. 应用程序框架支持组件的重用与替换。
这样我们可以把系统中不喜欢的应用程序删除,安装我们喜欢的应用程序。
2. Dalvik虚拟机专门为移动设备进行了优化。
Android应用程序将由Java编写、编译的类文件通过DX工具转换成一种后缀名为.dex的文件来执行。Dalvik虚拟机是基于寄存器的,相对于Java虚拟机速度要快很多。
3. 内部集成浏览器基于开源的WebKit引擎。
有了内置的浏览器,这将意味着WAP应用的时代即将结束,真正的移动互联网时代已经来临,手机就是一台“小电脑”,可以在网上随意遨游。
4. 优化的图形库包括2D和3D图形库,3D图形库基于OpenGL ES 1.0。
强大的图形库给游戏开发带来福音。在3G最为重要的的应用莫过于手机上网和手机游戏。
6. 多媒体支持包括常见的音频、视频和静态印象文件格式
如MPEG4、H.264、MP3、AAC、AMR、JGP、PNG、GIF。
7. GSM电话(依赖于硬件)。
8. 蓝牙(Bluetooth)、EDGE、3G、WiFi(依赖于硬件)。
9. 照相机、GPS、指南针和加速度计(依赖于硬件)。
10. 丰富的开发环境包括设备模拟器、调试工具、内存及性能分析图表和Eclipse集成的开发环境插件。
Google提供了Android开发包SDK,其中包含了大量的类库和开发工具,并且针对Eclipse的可视化开发插件ADT。
二、Android平台架构
从上图我们可以看出,Android操作系统的体系结构可分为4层,由上到下依次是应用程序、应用程序框架、核心类库和Linux内核,其中第三层还包括Android运行时的环境。下面分别来讲解各个部分。
1. 程序应用
Android
连同一个核心应用程序包一起发布,该应用程序包包括E-mail客户端、SMS短消息程序、日历、地图、浏览器、联系人管理程序等。所有的应用程序都是用Java编写的。
2. 应用程序框架
开发者完全可以访问核心应用程序所使用的API框架。该应用程序框架架构用来简化组件软件的重用,任何一个应用程序都可以发布它的功能块并且任何其他的应用程序都可以使用其所发布的功能块(不过得遵循框架的安全性限制)。该应用程序重用机制使得组件可以被用户替换。
以下所有的应用程序都由一系列的服务和系统组成,包括:
1)一个可扩展的视图(Views)可以用来创建应用程序,包括列表(lists)、网络(grids)、文本框(text
boxes)、按钮(buttons),甚至是一个可嵌入的Web浏览器。
2)内容管理器(Content Providers)使得应用程序可以访问另一个应用程序的数据(如联系人数据库),或者共享它们自己的数据。
3)一个资源管理器(Resource Manager)提供非代码资源的访问,如本地字符串、图形和分层文件(layout files)。
4)一个通知管理器(Notification Manager)使得应用程序可以在状态栏中显示客户通知信息。
5)一个活动类管理器(Activity Manager)用来管理应用程序生命周期并提供常用的导航回退功能。
3. Android程序库
Android包括一个被Android系统中各种不同组件所使用的C/C++集库。该库通过Android应用程序框架为开发者提供服务。
以下是一些主要的核心库:
1)系统C库:一个从BSD继承来的标准C系统函数库(libc),专门为基于Embedded Linux的设备定制。
2)媒体库:基于PacketVideo
OpenCORE;该库支持录放,并且可以录制许多流行的音频视频格式,还有静态映像文件包括MPEG4、H.264、MP3、AAC、JPG、PNG。
3)Surface Manager:对显示子系统的管理,并且为多个应用程序提供2D和3D图层的无缝融合。
4)LibWebCore:一个最新的Web浏览器引擎,用来支持Android浏览器和一个可嵌入的Web视图。
5)SGL:一个内置的2D图形引擎。
6)3D libraries:基于OpenGL ES 1.0 APIs实现;该库可以使用硬件3D加速(如果可用)或者使用高度优化的3D软加速。
7)FreeType:位图(bitmap)和向量(vector)字体显示。
8)SQLite:一个对于所以应用程序可用、功能强劲的轻型关系型数据库引擎。
4. Android运行库
Android包括了一个核心库,该核心库提供了Java编程语言核心库的大多数功能。
每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例。Dalvik是针对同时高效地运行多个VMs实现的。Dalvik虚拟机执行.dex的Dalvik可执行文件,该格式文件针对最小内存使用做了优化。该虚拟机是基于寄存器的,所有的类都是经由Java汇编器编译,然后通过SDK中的DX工具转化成.dex格式由虚拟机执行。
Dalvik虚拟机依赖于Linux的一些功能,比如线程机制和底层内存管理机制。
5. Linux内核
Android的核心系统服务依赖于Linux内核,如安全性、内存管理、进程管理、网络协议栈和驱动模型。Linux内核也同时作为硬件和软件栈之间的硬件抽象层。
2. 为什么手机安卓系统优化不好
第一系统的架构层次决定的,
第二安卓是开源的,
第三安卓开源后优化厂家的能力参差不齐。
第一个问题,架构层次从下到上依次是
第一层:
Linux操作系统和驱动(Linux kernel):由C语言实现
第二层:本地框架和Java运行环境(LIBRARIES 和ANDROID RUNTIME)
第三层:Android应用框架(ANDROIDFRAMEWORK)
第四层:Android应用程序(APPLICATIONS) 。
第二个问题。安卓开源,好处就是可以快速普及,拉拢大部分厂家。坏处就是碎片化严重。
第三个问题。一个版本出来后,大部分厂家都只是在第四层修改,少部分能够在第三层修改,极少部分能够在第一层修改。
最后重要的一点就是安卓的内存回收机制不一样。安卓是每个程序都可以用一点。如果不够用了,停止最先的程序,空出的内存给最新的用。ios的就是退出程序立马回收内存。
3. 鸿蒙系统和安卓有什么不同哪个好
一、什么是鸿蒙系统
华为鸿蒙系统(英文:huaweiHarmonyOS,HongmengOS)。在2019年8月9日,华为在东莞举行华为开发者大会,正式发布操作系统鸿蒙OS。
鸿蒙OS是一款“面向未来”的操作系统,一款基于微内核的面向全场景(移动办公、运动 健康 、社交通信、媒体 娱乐 等)分布式操作系统,可按需扩展,实现更广泛的系统安全,主要用于物联网,特点是低时延,甚至可到毫秒级乃至亚毫秒级。其实现模块化耦合,对应不同设备可弹性部署,鸿蒙OS有三层架构,第一层是内核,第二层是基础服务,第三层是程序框架。现已适配智慧屏,未来它将适配手机、平板、电脑、智能 汽车 、可穿戴设备等多终端设备。
鸿蒙OS 2020年9月10日,华为鸿蒙系统升级至华为鸿蒙系统2.0版本。这个月16日华为将举行鸿蒙2.0系统手机开发者beta活动(上一篇文章有详细介绍,想了解的可以点击下面的文章链接查阅)
爱生活:见证 历史 时刻:华为鸿蒙系统来了!
鸿蒙系统和安卓系统哪个好? 二、鸿蒙系统与安卓系统的区别在哪,是不是也是和安卓一样基于虚拟机创建的。
1、安卓与鸿蒙手机操作系统基本都是基于Linux开发的,但两者的构架是不同的:
安卓系统是基于linux的宏内核设计:宏内核包含了操作系统绝大多数的功能和模块,而且这些功能和模块都具有最高的权限,只要一个模块出错,整个系统就会崩溃,这也是安卓系统容易崩溃的原因。好处就是系统开发难度低。 (而现在,华为新研发的方舟编译器就是为了解决这个问题的,任何由编译器编译的android软件都可以直接与系统底层进行通信,鸿蒙系统加编译器将取代虚拟机。) Android是用Java语言编写的,很容易学习。但它有一个缺点:不能与系统底层直接进行通信活动,必须通过虚拟机来运行。说直接点就是虚拟机相当于传递者:首先Android应用程序安装在虚拟机上,然后从虚拟机传输到机器的底部,如果虚拟机出了问题话的那系统就是卡住。而且鸿蒙系统中的方舟编译器就是为了解决这个问题的,任何由编译器编译的android软件都可以直接与系统底层进行通信, 鸿蒙系统加编译器将取代虚拟机 。
鸿蒙操作系统是微内核设计:微内核仅包括了操作系统必要的功能模块(任务管理、内存分配等)处在核心地位具有最高权限,其他模块不具有最高权限,也就是说其他模块出现问题,对于整个系统的运行是没有阻碍的。微内核的开发难度很大,但是系统的稳定性很高。根据目前华为公布的一些资料信息,我们可以推断出鸿蒙系统是用C、C++语言编写即直接使用机器语言编写app,取消安卓系统的ART虚拟机,直接编译为二进制机器码,这样做的好处就是不需要中转,执行速度快;但这样的操作也有一些缺点就是必须要有大量的静态方案且内存空间要求更高。
有报道说鸿蒙系统比谷歌的安卓系统快运行速度快了60%,为什么会快这么多呢?原因有以下两点:
其一;谷歌的安卓系统是基于Linux开发,华为的“鸿蒙”系统也是基于Linux开发,并对Linux进行大量优化,此前,华为推出自研EROFS超级文件系统、仅是基于华为方舟编译器开发的应用,就能够让安卓系统性能提升数倍来看,底层整合了EROFS和方舟编译器的华为鸿蒙系统,自然要比安卓系统快很多
其二:安卓系统程序员写APP使用的是JAVA高级语言,打包成APK到安卓系统后。由于安卓系统读不懂JAVA高级语言,必须借助实时翻译(JAVA虚拟机)进行理解(转换成机器语言)。因为多了"翻译"这个步骤,所以安卓系统的流畅度一直以来都比不过苹果iOS。而方舟编译器,则是让APK打包之前,统一把指令换成安卓系统能读懂的机器语言,也就是省去了"翻译"这个步骤,效率自然就更高。
2、鸿蒙系统与安卓系统的使用范围不同:
第一:安卓系统适用于手机,而鸿蒙系统对设备兼容性更强,同时支持智能手机、智能穿戴设备、电脑、电视等智能家居设备,形成一个无缝的、统一的操作系统,并且兼容所有的安卓应用,适应当下的5G和物联网时代。
3、安卓系统经过多年发展,软件生态非常完善,鸿蒙系统目前来说还谈不上生态。华为推出鸿蒙操作系统并不困难,相对于推出操作系统而言,更难的是如何聚拢开发者为这款操作系统持续开发各类优质应用,让这款操作系统得以具备真正价值,继而发展壮大,在系统开发商、硬件厂商、开发者与用户之间形成良性正循环。要让开发者为鸿蒙操作系统开发应用,需要的是实实在在的政策激励,利益引导,依靠情怀等是无法解决也是不可持续的,这就是华为推出鸿蒙系统之后需要解决的一大难题!
三、鸿蒙系统的安全性怎么样,能否一改国内安卓软件的隐私问题。
上面我们聊到鸿蒙与安卓系统的区别中说到两个概念:微内核(鸿蒙),宏内核(安卓)。鸿蒙操作系统采用微内核,天然无Root,细粒度权限控制从源头提升系统安全。而安卓系统有Root权限,用户可以完全掌控经过Root之后的安卓系统。而鸿蒙则没有Root这一选项。同时据华为终端公司官微消息,鸿蒙基于微内核技术的可信执行环境,通过形式化方法显着提升了内核安全等级,全面提升全场景终端设备的安全能力。对此余承东曾表示过:微内核可以把每一个单独加锁,不可能一个钥匙攻破所有地方。而外核的相互隔离更加安全也更加高效。从全球最权威的安全机构评测看,现在外面的操作系统只能达到二三级,而我们的系统能达到5和5+最高级别。这是最高级别的安全OS。所以鸿蒙系统的安全性远高于安卓系统。
写在最后:
2018年12月1日,加拿大在美国的授意下逮捕了华为CFO孟晚舟。
2019年5月16日,美国总统特朗普签署了行政命令,华为被美国商务部工业与安全局(BIS)列入“实体名单”。
2019年5月20日,美国公司谷歌宣布遵守美国禁令暂停支持华为部分业务;
随后,美国公司英特尔、高通等芯片制造商也宣布停止对华为供货,德国芯片厂商英飞凌也宣布暂停对华为供货。
2019年5月23日,英国两大主流通讯商宣布暂停销售华为手机。
在这种时候华为能够拿出自己的操作系统顶住美国的封杀,展现出了超强的实力以及超前的忧患意识。这也使我们无论从何种角度来看,都是值得为华为点赞的。华为目前面对的是机遇也是挑战!
时代在变化,人类 社会 在进步,更先进的新系统必定取代落后的旧系统!!华为加油!!
来自电子发烧友网站!
4. 想用Java开发一款android软件,三层架构应该怎么写类似图片这样的
首先你的表现层用到了HTML这样的页面元素,那么可以使用Android的WebView组件,这个WebView可以当做一个系统内置的浏览器。
然后业务层对应Android的Java后台业务程序,Android不像企业级的J2EE项目那样,一定要有接口、一定要接口注入,为了运行快速、减少手机压力,一般都是用class类直接写业务代码。
数据层如果用database的话就用Sqlite,这是android内置支持的轻量级数据库。
说多点,表现层的文件如果是部署在手机上就不能用JSP,只能用纯HTML。使用JSP的话,就需要部署一个j2ee项目到服务器,然后WebView用http请求去获取页面元素。而使用HTML的话则不依赖服务器,只是说要让页面数据动态化,就需要用到AJAX或者Android的javaScriptInterface。
要写这样的程序需要学几个关键功能:WebView、HTML5/Jquery mobile、sqlite,挨个去学习吧,两周内就熟练了。