原生android(一)
一、移动APP的几种类型
1、Native APP:基于智能手机操作系统,并使用原生程序编写运行的应用程序,有IOS,Android,Windows Phone8等系统
2、Web APP:运行在智能手机浏览器上的应用程序,主要采用HTML5,CSS和JavaScript开发
3、Hibrid APP:介于Native APP和Web APP之间的混合移动应用,常用开发框架:PhoneGap,AppCan,Rexsee
4、Light APP:在已有手机APP上开发的插件或服务,也叫做微应用或轻应用,例如,百度轻应用,UC网页应用,微信公众号
二、Android平台架构
Android系统的底层建立在Linux系统之上,该平台由操作系统、中间件、用户界面和应用软件4层组成,它采用一种被称为软件叠层(software Stack)的方式进行构建。这种软件叠层结构使得层与层之间相互分离,明确各层的分工。其本质就是在标准的Linux系统上增加了Java虚拟机Dalvik,并在Dalvik虚拟机上搭建一个java application framework,所有的应用程序都是基于java的application framework之上。
Android平台的架构图如下:
从图中可以看出,Android系统是由五大部分组成的:
1、应用程序层(APPLICATIONS)
Android系统将包含系列的核心应用程序,包括电子邮件客户端,SMS程序,日历,地图,浏览器,联系人等。这些应用程序都是用java编写的。
2、应用程序框架(APPLICATION FRAMEWORK)
当开发应用Android应用程序时,就是面向底层的应用框架进行的。从这个意义上来看,Android系统之上的应用程序时完全平等的,不管Android系统提供的程序,还是普通开发者提供的应用程序,都可以访问Android提供的API框架。
3、函数库(LIBRARIES)
Android包含一套被不同组件所使用的C/C++库的集合。一般来说,android应用开发者不能直接调用这套C/C++库,但可以通过上面的应用程序框架来调用这些库。
4、Android运行时(ANDROIDRUNTIME)
Android运行时由两部分组成:Android核心库集合(Core Libraries)和Dalvik虚拟机(Dalvik Virtual Machine)。其中核心库集提供了java语言核心库所能使用的绝大部分功能,而虚拟机则负责运行Android应用程序。每个Android应用程序都运行在单独的dalvik虚拟机内(即每个Android应用程序对应一条Dalvik进程),Dalvik专门针对同事高效运行多个虚拟机进行优化,因此Android系统很方便实现对应用程序进行隔阂。
由于Android应用程序的编程语言是java,因此有些人会把Dalvik虚拟机和JVM搞混,但实际上二者存在区别:Dalvik并不完全遵守JVM规范,两者也不兼容。实际上,JVM虚拟机运行的是Java字节码(通常是.class文件),但dalvik运行的是其专有的dex(Dalvik Executable)文件。JVM直接从.class文件或者JAR包中加载字节码然后运行;而Dalvik则无法直接从.class文件或JAR包中加载字节码,它需要通过DX工具将应用程序的所有.class文件编译成.dex文件,Dalvik则运行的是该.dex文件
Dalvik虚拟机非常适合在移动终端上使用,相对在PC或者服务器上运行的虚拟机而言,Dalvik虚拟机不需要很快的CPU计算速度和大量的内存空间,它主要有如下两个特点:
(1)运行专有的.dex文件。专有的.dex文件减少了.class文件中冗余信息,而且会把所有.class文件整合到一个文件中,从而提高运行性能;而且DX工具还会对.dex文件进行一些性能优化。
(2)基于寄存器实现。大多数虚拟机(包括JVM)都是基于栈的,而Dalvik虚拟机则是基于寄存器的。一般来说,基于寄存器的虚拟机具有更好的性能表现,但硬件通用性上略差。
5、Linux内核(Linux kernel)
Android系统建立在Linux 2.6之上的,Linux内核提供了安全性、内存管理、进程管理、网络协议栈和驱动模型等核心系统服务。除此之外,Linux内核也是系统硬件和软件叠层之间的抽象层。
原生android(一)的更多相关文章
- Unity3D 原生Android结合UnityPlayerActivity开发遇到的问题
需求是原生Android 的Activity启动UnityPlayerActivity,按Back键后返回原来的Activity 1.在AndroidManifest.xml中的UnityPlayer ...
- React Native移植原生Android
(一)前言 之前已经写过了有关React Native移植原生Android项目的文章,不过因为RN版本更新的原因吧,跟着以前的文章可能会出现一些问题,对于初学者来讲还是会有很多疑难的困惑的,而且官方 ...
- 如何消除原生Android网络状态上的惊叹号
喜欢使用原生Android系统的朋友可能会发现自己的状态栏信号图标上经常有一个惊叹号标志. 这是怎么回事呢?原因是Android为了对网络状态进行检测,采用了一种叫做captive detection ...
- Android 原生 Android ActionBar
本文内容 关于 ActionBar 必要条件 项目结构 环境 演示一:Action Bar 显示隐藏 演示二:Action Item 显示菜单选项 演示三:Action Home 启用"返回 ...
- 前端写一个月的原生 Android 是如何一种体验?
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/j01G58UC80251/article/details/79017706 一个前端程序猿的一个月原 ...
- 【React Native开发】React Native移植原生Android项目(4)
),React Native技术交流4群(458982758),请不要反复加群!欢迎各位大牛,React Native技术爱好者加入交流!同一时候博客左側欢迎微信扫描关注订阅号,移动技术干货,精彩文章 ...
- Android H5混合开发(3):原生Android项目里嵌入Cordova
前言 如果安卓项目已经存在了,那么如何使用Cordova做混合开发? 方案1(适用于插件会持续增加或变化的项目): 新建Cordova项目并添加Android平台,把我们的安卓项目导入Android平 ...
- 原生Android项目里嵌入Cordova
Android H5混合开发():原生Android项目里嵌入Cordova 如果安卓项目已经存在了,那么如何使用Cordova做混合开发? 方案1(适用于插件会持续增加或变化的项目): 新建Cord ...
- 腾讯x5Webview取代原生android Webview
一.官方地址: https://x5.tencent.com/tbs/ 二.不需要申请开发者,QQ直接登录,下载即可集成到项目中. 三.与原生的webview对比优势 1) 速度快:相比系统webvi ...
- 使用Chrome开发者工具远程调试原生Android上的H5页面
Android4.4(KitKat)开始,使用Chrome开发者工具可以帮助我们在原生的Android应用中远程调试WebView网页内容.具体步骤如下: (1)设置Webview调试模式 可以在Ac ...
随机推荐
- mysql 批量插入500W 测试
set_time_limit(800);$dsn = 'mysql:host=localhost;dbname=test';$db = new PDO($dsn,'root','',array(PDO ...
- 结合领域驱动设计的SOA分布式软件架构
引言 本文主要是参考Martion Fowler所著的<企业应用架构模式>与Eric Evans所著的<领域驱动设计>这两本泰山之作,加上本人在近年实际的工作过程中开发SOA系 ...
- [EffectiveC++]item46:需要类型转换时请为模板定义非成员函数
- SQLServer创建链接服务器
--SQLServer创建链接服务器----1.访问接口中Oracle接口 属性 选择 允许进程内-- --删除链接服务器EXEC master.dbo.sp_dropserver @server=N ...
- CVE-2014-4210SSRF漏洞分析
直接定位SearchPublicRegistries.jsp文件,47行接受输入的变量. 结果输出位置在120行 SearchPublicRegistries.jsp引入com.bea.uddiexp ...
- php基础学习-sdy
1.php语言结构和函数 exit()和die() exit()相当于把下面的代码都注释了 die()终止脚本 两个差不多 函数有很多种 (1)语言结构 (2)自定义函数 (3)内置函数 functi ...
- TensorFlow Activation Function 1
部分转自:https://blog.csdn.net/caicaiatnbu/article/details/72745156 激活函数(Activation Function)运行时激活神经网络中某 ...
- 404 Note Found 队-Beta7
目录 组员情况 组员1:胡绪佩 组员2:胡青元 组员3:庄卉 组员4:家灿 组员5:恺琳 组员6:翟丹丹 组员7:何家伟 组员8:政演 组员9:黄鸿杰 组员10:何宇恒 组员11:刘一好 展示组内最新 ...
- json和jsonp的问题
本文转载自:http://www.cnblogs.com/dowinning/archive/2012/04/19/json-jsonp-jquery.html 前言: 说到AJAX就会不可避免的面临 ...
- 1《想成为黑客,不知道这些命令行可不行》(Learn Enough Command Line to Be Dangerous)——基础(Basics)
基础 正如著名作者Neal Stephenson所说的那样,'(开发, 译者加)开始是命令行',尽管通过用户图形界面使用计算机及其简单,但是在许多场景中,最有效.最灵活地与计算机交互的方式是使用命令行 ...