安卓开发—Android基础_安卓系统开发-程序员宅基地

技术标签: java  

安卓开发—Android基础

移动开发

移动开发也叫做移动互联网开发。是指以手机、PDA、UMPC等便携终端为基础,进行相应的开发工作,由于这些随身设备基本都采用无线上网的方式,业内也称作为无线开发。

移动应用包括早期的WM掌上助理设备,Web os设备、java设备、塞班设备,以及现在现在火热的安卓和苹果设备等移动应用的开发。

谷歌提供安卓平台,要开发,只需要掌握java语言,就可以在安卓平台上进行开发。

三大主流移动开发平台

以下是Android、IOS、Windows phone三大主流移动开发平台的分析对比:

 

Android是一种基于Linux内核的自由及开放源代码的操作系统。做安卓开发可以不买手机,在电脑上搭建一个模拟器就可以进行开发。

选择安卓开发是因为安卓系统是开源的,是采用java语言的。

SDK

软件开发工具包一般都是一些软件工程师为特定的软件包软件框架硬件平台、操作系统等建立应用软件时的开发工具的集合。

安卓的系统架构

Android 系统架构共分为五层 应用层 应用框架层 系统运行库层 硬件抽象层和Linux内核层

 

一、应用层:

系统内置的应用层序以及非系统的应用程序都是属于应用层的,负责与用户直接交互。

二、应用框架层(Framework层)

应用框架层为开发人员提供开发应用层序所需要的API。我们平时开发用到的API都是应用层框架层提供的,当然也包括系统的应用,

这一层是用Java 语言编写的。下图是应用框架层所提共的主要组件

 

三、系统运行库层

1、系统运行库层分为两部分:分别是C/C++程序库和Android运行时库,

C/C++程序库能被Android系统中不同组件使用,并通过应用框架层向开发者提供服务,主要的C/C++程序库如图所示:

 

2、Android运行时库

运行时库又分为核心库和ART(5.0系统之后,Dalvik虚拟机被ART取代)。核心库提供了Java语言核心库的大多数功能,这样开发者可以使用Java语言来编写Android应用。相较于JVM,Dalvik虚拟机是专门为移动设备定制的,允许在有限的内存中同时运行多个虚拟机的实例,并且每一个Dalvik 应用作为一个独立的Linux 进程执行。独立的进程可以防止在虚拟机崩溃的时候所有程序都被关闭。而替代Dalvik虚拟机的ART 的机制与Dalvik 不同。在Dalvik下,应用每次运行的时候,字节码都需要通过即时编译器转换为机器码,这会拖慢应用的运行效率,而在ART 环境中,应用在第一次安装的时候,字节码就会预先编译成机器码,使其成为真正的本地应用。

四、硬件抽象库

硬件抽象层是位于操作系统内核与硬件电路之间的接口层,其目的在于将硬件抽象化,为了保护硬件厂商的知识产权,它隐藏了特定平台的硬件接口细节,为操作系统提供虚拟硬件平台,使其具有硬件无关性,可在多种平台上进行移植。 从软硬件测试的角度来看,软硬件的测试工作都可分别基于硬件抽象层来完成,使得软硬件测试工作的并行进行成为可能。通俗来讲,就是将控制硬件的动作放在硬件抽象层中。

五、Linux层

Android 的核心系统服务基于Linux 内核,在此基础上添加了部分Android专用的驱动。系统的安全性、内存管理、进程管理、网络协议栈和驱动模型等都依赖于该内核。这一层和手机硬件进行交互,内存管理、进程、驱动管理。

Dalvik虚拟机与JVM虚拟机的不同

安卓应用是运行在Dalvik虚拟机上的,安卓系统是面向移动设备的,移动设备大多CPU比较弱,内存比较小。在Dalvik虚拟机上运行,可以对程序的执行进一步的优化。

Dalvik和标准Java虚拟机(JVM)之间的首要差别之一,就是Dalvik基于寄存器,而JVM基于栈。

java虚拟机 Dalvik虚拟机
java虚拟机基于。 基于栈的机器必须使用指令来载入和操作栈上数据,所需指令更多更多 dalvik虚拟机是基于寄存器
java虚拟机运行的是java字节码。(java类会被编译成一个或多个字节码.class文件,打包到.jar文件中,java虚拟机从相应的.class文件和.jar文件中获取相应的字节码) Dalvik运行的是自定义的.dex字节码格式。(java类被编译成.class文件后,会通过一个dx工具将所有的.class文件转换成一个.dex文件,然后dalvik虚拟机会从其中读取指令和数据)
常量池已被修改为只使用32位的索引,以 简化解释器。dalvik的堆和栈的参数可以通过-Xms和-Xmx更改
一个应用,一个虚拟机实例,一个进程(所有android应用的线程都是对应一个linux线程,都运行在自己的沙盒中,不同的应用在不同的进程中运行。每个android dalvik应用程序都被赋予了一个独立的linux PID(app_*))

.java—>.class—>可执行文件 .java—>.class—>.dex(把成百上千的.class文件变成一个.dex文件)

Dalvik虚拟机运行的是.dex文件

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/cs_loser/article/details/119090087

智能推荐

【云原生 | 01】docker容器引擎_docker cpuset.cpu_exclusive-程序员宅基地

文章浏览阅读6.4w次,点赞161次,收藏305次。容器技术显然不是什么新概念,最早的容器技术可以追溯到 1979 年诞生的 chroot 技术 ,容器技术又称为容器虚拟化,这是虚拟化技术中的一种 ,目前虚拟化技术主要有硬件虚拟化、半虚拟化和操作系统虚拟化等 。本系列文章讲述的容器虚拟化属于操作系统虚拟化,其相较于其他主流虚拟化技术更为轻量。............_docker cpuset.cpu_exclusive

《剑指offer》第7题:斐波那契数列_for 1071:菲波那契数 【题目描述1071:菲波那契数 【题目描述】 菲波那契数列是指-程序员宅基地

文章浏览阅读291次。斐波那契数列1 题目描述2 分析及题解2.1 方法一:递归2.2 方法二:递归2.3 方法三:循环迭代1 题目描述  大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0,第1项是1)。n<=392 分析及题解2.1 方法一:递归之前写过一题是需要返回整个斐波那契数列的,所以此次递归借助一个初始化列表class Solution1: def __init__(self): self.fibList = [0, 1] #_for 1071:菲波那契数 【题目描述1071:菲波那契数 【题目描述】 菲波那契数列是指

Tex Live & TeXstudio安装及配置_texstudio下载-程序员宅基地

文章浏览阅读2.8w次,点赞8次,收藏42次。目录1 TeXlive下载2 TeXstudio下载3 TeXstudio配置3.1 命令设置3.2 测试生成pdf设置中文可以这样说,TeXlive是TeX的一个发行版,适用于Windows和Linux系统,给TeX的使用提供了工作环境,大概可以理解为Java的JDK?TeXstudio则优于TeXlive自带的TeXwork editor编辑器,大概可以理解为Java的各种编译器?1 TeXlive下载https://www.tug.org/texlive/也可以在镜像网站下载,更加快,挑一个_texstudio下载

前端开发:JS的解构_前端解构-程序员宅基地

文章浏览阅读2k次,点赞7次,收藏8次。在前端开发过程中,关于数据处理是一个非常重要的操作,尤其是遇到一些复杂的业务场景情况,涉及到数据的处理也是非常麻烦的事情。从后台拿到的数据源,处理成前端需要的格式或者形式,这就需要前端开发者做中转的一系列逻辑处理,甚至涉及到算法处理,所以不要单纯的觉得数据处理就是从后台拿数据然后展示渲染处理即可,其实远不止这些,尤其是在ES6之后,新增了一种从数组或者对象中获取指定元素的方式,也就是本篇博文所要介绍的内容:解构。..._前端解构

倒置函数reverse的用法_reverse ( char *s )在c语言中代表什么-程序员宅基地

文章浏览阅读3k次。倒置字符串函数reverse:用于倒置字符串s中的各个字符的位置,如原来字符串中如果初始值为123456,则通过reverse函数可将其倒置为654321,程序如下:#include#includevoid reverse(char s[]){ int c,j,i; for(i=0,j=strlen(s)-1;i

配置vue-router报错_error in setup: "error: [vue-router]: missing curr-程序员宅基地

文章浏览阅读95次。配置vue-router报错_error in setup: "error: [vue-router]: missing current instance. userouter()

随便推点

Android findViewById与findViewWithTag()-程序员宅基地

文章浏览阅读1.1k次。2019独角兽企业重金招聘Python工程师标准>>> ..._findviewwithtag

QT关于回调函数_qt 回调函数-程序员宅基地

文章浏览阅读5.5k次。.h文件#ifndef CALLBACK_H#define CALLBACK_Htypedef void (* Callback )( void *n_obj, void *user_data );//callbackstruct Timer{ void *user_data; void *user_obj; Callback n_cb;};cla_qt 回调函数

splice和slice的差别_splice改变原数组-程序员宅基地

文章浏览阅读502次。前端js基础:splice和slice的差别_splice改变原数组

实验6:6-5_write(str(i))-程序员宅基地

文章浏览阅读71次。f=open('sy6-5.txt','w')n=0for i in range(20): for j in range(0,2): n+=1 if n%5==0: f.write(str(i)+'\n') else: f.write(str(i)+' ')f.close()_write(str(i))

安装Anaconda_anaconda安装pytorch环境 environment location: c:\users-程序员宅基地

文章浏览阅读1.2k次。遗留问题:环境目录 Anaconda安装路径默认了,装在了C盘,环境目录也默认在了C:\Users\dell\.conda\envs配置库的时候,该环境占用空间接近1G,会对后续计算有什么影响?一、Anaconda安装时出现的问题和目前解决方式Anaconda自带Python 3.7.61.1 CMD中Warning,环境未激活暂时解决:CMD中输入 conda info --envs,enter,activate base就正常了但是,不影响Jupyter和Sp..._anaconda安装pytorch环境 environment location: c:\users\dell\.conda\envs\

HTML富文本编辑器wangEditor的使用_wangeditor html本地引用-程序员宅基地

文章浏览阅读4.6k次,点赞3次,收藏10次。HTML富文本编辑器wangEditor的使用官网http://www.wangeditor.com/用法官方文档已经讲得很清楚了,我这里只贴出代码,方便以后自己粘贴复制用用到的CSSwangEditor-fullscreen-plugin.css@CHARSET "UTF-8";.w-e-toolbar { flex-wrap: wrap; -webkit-box-lin..._wangeditor html本地引用

推荐文章

热门文章

相关标签