原生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 ...
随机推荐
- centos7.4之zabbix4.0的fping监控
参考博文: https://www.cnblogs.com/lei0213/p/8859326.html 注释:他是额外安装fping的:因为我yum安装的zabbix,fping就已经自带了:安装步 ...
- 深入浅出TFS——创建WorkItem
使用场景:在项目交付流程当中,我们在准备部署项目的时候,比如需要依次部署到DEV.QA和PROD共3个不同的环境.我们需要由专门负责部署的部门Integration Team的人员来操作.这个时候我们 ...
- npm install --save 和 --save-dev的区别
--save 会把依赖包名称添加到 package.json 文件 "dependencies" 键下--save-dev 则添加到 package.json 文件 "d ...
- Hadoop HA 高可用集群的搭建
hadoop部署服务器 系统 主机名 IP centos6.9 hadoop01 192.168.72.21 centos6.9 hadoop02 192.168.72.22 centos6.9 ha ...
- mysql大数据量使用limit分页,随着页码的增大,查询效率越低下
1. 直接用limit start, count分页语句, 也是我程序中用的方法: select * from product limit start, count当起始页较小时,查询没有性能问题 ...
- C. Serval and Parenthesis Sequence 【括号匹配】 Codeforces Round #551 (Div. 2)
冲鸭,去刷题:http://codeforces.com/contest/1153/problem/C C. Serval and Parenthesis Sequence time limit pe ...
- openssl生成证书
数字证书: 第三方机构使用一种安全的方式把公钥分发出去 证书格式:x509,pkcs家族 x509格式: 公钥和有效期限: 持有者的个人合法身份信息:(主机名,域名) 证书的使用方式 CA的信息 CA ...
- Windows启动控制台登录模式
效果如下: 实现代码: Set-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Authentication\Lo ...
- access数据库及其分页的方法
首先access数据库的话,感觉针对比较小型的网站比较适合.携带方便,不需要按照特定的sql环境. 当然如果使用access数据库的话 1.首先你先要下载办公五合一(access也是其中之一) 2.w ...
- Cannot find module 'webpack/lib/node/NodeTemplatePlugin' 问题原因和解决方案
当我配置了html-webpack-plugin 打包时报了这个错,查看了一下package.json发现没有webpack,说明使用了全局安装的webapck,导致的版本差异. 这里在本地安装web ...