定义
Google公司在2007年11月5日正式公布这个操作系统,2008年,Patrick Brady于Google I/O演讲“Anatomy & Physiology of an Android”,并提出的Android HAL架构图。HAL以*.so档的形式存在,可以把Android framework与Linux kernel隔开。Android拥有功能强大的API,出色的文档,茁壮成长的开发人员社区,而且不需要为开发或发布支付费用。随着移动设备的日益普及,不管在怎样的开发背景下,使用Android软件开发新颖的手机应用程序都是一个令人为之振奋的良机。 [1]
特性
应用程序框架支持组件的重用与替换 ·Dalvik虚拟机专门为移动设备做了优化 ·内部集成浏览器该浏览器基于开源的WebKit 引擎 ·优化的图形库 包括2D和3D图形库,
3D图形库基于OpenGL ES 1.0 (硬件加速可选) ·#SQLite 用作结构化的数据存储·多媒体支持 包括常见的音频、视频和静态印象文件格式(如 MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF) ·GSM电话 (依赖于硬件) ·蓝牙Bluetooth, EDGE, 3G, and WiFi (依赖于硬件) ·照相机,GPS,指南针,和加速度计 (依赖于硬件) ·丰富的开发环境 包括设备模拟器,调试工具,内存及性能分析图表,和Eclipse集成开发环境插件。
架构
应用程序
Android以Java为编程语言,使接口到功能,都有层出不穷的变化,其中Activity等同于J2ME的MIDlet,一个 Activity 类(class)负责创建视窗(window),一个活动中的Activity就是在 foreground(前景)模式,背景运行的程序叫做Service。两者之间通过由ServiceConnection和AIDL连结,达到复数程序同时运行的效果。如果运行中的 Activity 全部画面被其他 Activity 取代时,该 Activity 便被停止(stopped),甚至被系统清除(kill)。
View等同于J2ME的Displayable,程序人员可以通过 View 类与“XML layout”档将UI放置在视窗上,Android 1.5的版本可以利用 View 打造出所谓的 Widgets,其实Widget只是View的一种,所以可以使用xml来设计layout,HTC的Android Hero手机即含有大量的widget。至于ViewGroup 是各种layout 的基础抽象类(abstract class),ViewGroup之内还可以有ViewGroup。View的构造函数不需要在Activity中调用,但是Displayable的是必须的,在Activity 中,要通过findViewById()来从XML 中取得View,Android的View类的显示很大程度上是从XML中读取的。View 与事件(event)息息相关,两者之间通过Listener 结合在一起,每一个View都可以注册一个event listener,例如:当View要处理用户触碰(touch)的事件时,就要向Android框架注册View.OnClickListener。另外还有Image等同于J2ME的BitMap。
应用程序的运行
在模拟器上运行
仿真是虚拟设备(AVD),我们需要配置来运行我们的Android应用程序。
步骤1、开放的AVD管理
步骤2、新的按钮,点击添加新设备,并配置您的设备设置。
步骤3、会有一个结果窗口显示所有已配置你上一屏幕选择。
步骤4、按“确定”,你将会看到你的设备列在有你可以关闭此窗口。
步骤5、运行你的Android应用程序项目从Eclipse,如果只有一个AVD配置,它会自动部署的应用程序也会出现一个窗口,选择你的图片。 仿真器将开始。
在设备上运行
Android应用程序可以直接部署在Android设备上,这几个配置所需要的。
步骤1、在调试模式的设置可以设置应用程序:Android的<应用程序>元真可调试属性。ADT 8这是默认的。
步骤2、您的设备上启用USB调试:Android 3.2或以上转至设置>应用程序>开发和启用USB调试。
在Android 4更新,这是开发商选择设置>。
注:在Android 4.2更新,开发者选项是默认隐藏。可以,去设定>android的版本号。返回先前屏幕找到开发商选择。
步骤3、安装USB驱动程序为您的设备,计算机识别你的设备。
步骤4、一旦设置和您的设备通过USB连接,从Eclipse菜单栏安装您的应用程序在设备上选择运行>运行(或运行>调试)。
中介软件
操作系统与应用程序的沟通桥梁,并用分为两层:函数层(Library)和虚拟机(Virtual Machine)。 Bionic是 Android 改良libc的版本。Android 同时包含了Webkit,所谓的Webkit 就是Apple Safari浏览器背后的引擎。Surface flinger 是就2D或3D的内容显示到屏幕上。Android使用工具链(Toolchain)为Google自制的Bionic Libc。
Android采用OpenCORE作为基础多媒体框架。OpenCORE可分7大块:PVPlayer、PVAuthor、Codec、PacketVideo Multimedia Framework(PVMF)、Operating System Compatibility Library(OSCL)、Common、OpenMAX。
Android 使用skia 为核心图形引擎,搭配OpenGL/ES。skia与Linux Cairo功能相当,但相较于Linux Cairo, skia 功能还只是阳春型的。2005年Skia公司被Google收购,2007年初,Skia GL源码被公开,Skia 也是Google Chrome 的图形引擎。
Android的多媒体数据库采用SQLite数据库系统。数据库又分为共用数据库及私用数据库。用户可通过ContentResolver类(Column)取得共用数据库。
Android的中间层多以Java 实现,并且采用特殊的Dalvik虚拟机(Dalvik Virtual Machine)。Dalvik虚拟机是一种“暂存器型态”(Register Based)的Java虚拟机,变量皆存放于暂存器中,虚拟机的指令相对减少。
Dalvik虚拟机可以有多个实例(instance), 每个Android应用程序都用一个自属的Dalvik虚拟机来运行,让系统在运行程序时可达到优化。Dalvik虚拟机并非运行Java字节码(Bytecode),而是运行一种称为.dex格式的文件。
硬件抽像层
Android 的 HAL(硬件抽像层)是能以封闭源码形式提供硬件驱动模块。HAL 的目的是为了把 Android framework 与 Linux kernel 隔开,让 Android 不至过度依赖 Linux kernel,以达成 kernel independent 的概念,也让 Android framework 的开发能在不考虑驱动程序实现的前提下进行发展。
HAL stub 是一种代理人(proxy)的概念,stub 是以 *.so 档的形式存在。Stub 向 HAL“提供”操作函数(operations),并由 Android runtime 向 HAL 取得 stub 的 operations,再 callback 这些操作函数。HAL 里包含了许多的 stub(代理人)。Runtime 只要说明“类型”,即 module ID,就可以取得操作函数。
编程语言
Android 是运行于 Linux kernel之上,但并不是GNU/Linux。因为在一般GNU/Linux 里支持的功能,Android 大都没有支持,包括Cairo、X11、Alsa、FFmpeg、GTK、Pango及Glibc等都被移除掉了。Android又以bionic 取代Glibc、以Skia 取代Cairo、再以opencore 取代FFmpeg 等等。Android 为了达到商业应用,必须移除被GNU GPL授权证所约束的部份,例如Android将驱动程序移到 userspace,使得Linux driver 与 Linux kernel彻底分开。bionic/libc/kernel/ 并非标准的kernel header files。Android 的 kernel header 是利用工具由 Linux kernel header 所产生的,这样做是为了保留常数、数据结构与宏。
Android 的 Linux kernel控制包括安全(Security),存储器管理(Memory Managemeat),程序管理(Process Management),网络堆栈(Network Stack),驱动程序模型(Driver Model)等。下载Android源码之前,先要安装其构建工具Repo来初始化源码。Repo 是 Android 用来辅助Git工作的一个工具。
就业前景
发展
Android在中国的前景十分广阔,首先是有成熟的消费者,在国内,Android社区十分红火,这些社区为Android在中国的普及做了很好的推广作用。国内厂商和运营商也纷纷加入了Android阵营,包括中国移动,中国联通,中兴通讯,华为通讯,联想等大企业,同时不仅仅局限于手机,国内厂家也陆续推出了采用Android系统的MID产品,比较著名的包括由Rockchip和蓝魔推出的同时具备高清播放和智能系统的音悦汇W7和2010年推出的原道N5,我们可以预见Android也将会被广泛应用在国产智能上网设备上,将进一步扩大Andorid系统的应用范围。另一方面,由于国内政策的限制,导致Android的部分功能(如Android market)在国内无法正常使用,常用的解决方法是使用VPN服务来访问。
Gartner预计,到2016年底,将有23亿部计算机、平板电脑和智能手机使用Android,而Windows设备数量为22.8亿部。相比之下,到年底,Windows设备数量将达到15亿部,而Android设备数量为6.08亿部。
Android操作系统2008年才上市,随后迅速成为主导性的智能手机平台,市场份额达到了2/3。与此同时,在快速发展的平板电脑市场,Android份额也位居第二。虽然Android是一款免费软件,但它却推动了谷歌核心的搜索业务增长。
由于越来越多的用户转向平板电脑和智能手机,第三季度全球PC出货量同比下滑8%,为2001年来的最大降幅。虽然微软Windows长期统治PC市场,但在智能手机市场,微软的份额仅约为3%。
就业前景和行业需求
随着移动互联网的到来和迅猛发展,移动互联网开发人员的需求也是与日俱增。比如说android市场,国外Android市场正在如日中天的扩展,据市场研究公司IDC发布研究报告称,预计中国智能手机市场在全球市场上所占份额将会从18.3%上升至26.5%,而美国市场所占份额则将从21.3%下降至17.8%。相信在不久的将来会有更多的用户选择Android系统的手机或是无线终端设备。
中国拥有世界上最大的手机用户群,再加上3G的推出对整个行业的巨大推动作用,全世界所有大中小型手机制造商几乎都在招聘Android工程师。然而每天有超过16万台的Android设备出货,一年后全球可能会有超过1亿台的Android设备,以后将超越iphone成为智能手机平台的旗舰。
开发大会
AndroidWorld Global Developers Conference 安卓全球开发者大会(英文简称:AndroidWorld)是IDG美国国际数据集团旗下的知名展会品牌。主要针对基于Android系统平台的商业模式探讨、技术交流、移动应用推广的大会,是一次很好的探索和寻求共同发展、合作共赢的契机。AndroidWorld代表着未来移动互联网产品和应用服务类型的发展趋势。
语言特点
Android应用的开发语言用的是Java语言,并且在Android中也用到了Java核心类库的大量的类,因此,在学习Android开发之前,可以先把Java基本语法和Java SE的基础类库好好学习一下。Android应用程序开发是以Java语言为基础的,所以没有扎实的Java基础知识,只是机械的照抄别人的代码,是没有任何意义的。 建议在安卓课程前期的java学习阶段中,需要用心的学好。
3G梦工场android培训认为培训学员分为两类,一是针对入门级的学员,计算机专业出身或者至少有编程思想,经过培训能掌握一部分基础的java技术和an-droid系统的框架,再学习开发环境的搭建和编程软件的使用后,就可以快速上手开发上层应用;另一类是针对有一定java技术基础,想转行进行An-droid开发的人员,他们有扎实的java技术和编程思想作基础,经过培训能加深对android系统的架构和特点的认识,这类人员经过培训之后能接受针对An-droid系统更深层次开发的任务。
一款完整的安卓软件开发,需要掌握相关的android开发语言、开发软件、安卓开发环境配置,安卓开发框架以及有关的android app开发技术,当中涉及到的一些比如算法、数据库开发、网络协议等,也是需要去学习的。下面就针对以上提及的安卓app开发技术做一下简单的分析:
一、android开发语言Eclipse也是一款程序员使用较多的android app开发工具,Eclipse支持很多插件。与其他固定IDE软件相比,Eclipse跨平台开发的自主性和灵活性更高。
三、安卓开发环境配置首先,你可以在以下的操作系统开始 Android 应用程序开发:
Microsoft Windows XP 或更高版本。
带有英特尔芯片的 Mac OS X10.5.8或更高版本。
包括 GNU C 库2.7或更高版本的 Linux 系统。
第二,开发 Android 应用程序所需的所有工具都是免费的,可以从网上下载。以下是开始开发 Android 应用程序需要用到的软件列表。
Java JDK5 或 以后版本
Android SDK
Java运行时环境(JRE)
Android Studio
(可选的)Java开发者使用的Eclipse IDE
(可选的)Android开发工具(ADT)Eclipse插件
最后两个组件是可选的,如果是在 Windows 机器上工作,这些组件将方便于开发基于 Java 的应用程序。因此,让我们来看看如何来设置所需的环境。
安装 Java 开发工具包(JDK)你可以从 Oracle 的 Java 网站:JDKJava SE下载下载最新版本的 Java 。在下载的文件中找到安装JDK的说明文档,按照给定的说明来安装和配置设置。最后设置 PATH 和 JAVA_HOME 环境变量来引用包含 javac 和 java的目录,通常分别为 java_install_dir/bin 和 java_install_dir。
如果运行的是 Windows,把 JDK 安装在 C:\jdk1.6.0_15,在 C:\autoexec.bat 文件添加以下内容:
set PATH=C:\jdk1.6.0_15\bin;%PATH%set JAVA_HOME=C:\jdk1.6.0_15你也可以右键单击"我的电脑",选择"属性"=》"高级"=》"环境变量",然后通过按下"确定"按钮来更新 PATH 值。
在 Linux 上,如果 SDK 安装在 /usr/local/jdk1.6.0_15 下,并且使用的是 C shell,把下面的代码到写入 .cshrc 文件。
setenv PATH /usr/local/jdk1.6.0_15/bin:$PATHsetenv JAVA_HOME /usr/local/jdk1.6.0_15如果你使用集成开发环境 Eclipse,那么它自动知道 Java 已安装在哪里。
Android IDE有许多复杂而精巧的技术来开发 Android 应用程序。目前主要使用且相似的技术主要是以下两种:
Android Studio
Eclipse ID
四、安卓开发框架目前安卓app开发框架主要有三种:WebApp、Native App、Hybrid App。其中,Native App是用Android,iOS平台官方语言、开发类库,工具进行开发。安卓用的是Java语言、苹果用的是object-c语言,采用原生app开发方式开发出来的app,不管是应用性能还是交互体验都是非常不错的。安卓app开发框架详细介绍:
现在市面上比较流行的移动app开发框架有三种:网页、混合、原生,这三种框架形式,都有自己适用的范围,无所谓好坏。企业可以根据自身业务的需求和条件,选择对应的安卓app开发框架。下面,就对这三种app开发框架做一个大致的介绍:
一、网页WebAppAngular + Typescript
二、原生NativeApp原生app、webapp、混合app的优缺点
原生APP原生APP用Android,iOS平台官方语言开发,开发类库,工具进行开发。比如安卓的java语言,iOS的object-c语言。在应用性能和交互体验上非常不错。
一般来说原生开发就像盖房子一样。先打基础,然后是房梁,房子的结构,一砖一瓦,钢筋混凝土,电路方向都是精心设计的。原生APP也是如此:每一页,每一个功能,每一个效果,每一个逻辑,每一个步骤都写在代码,每一层,每一段都写在代码。
优点:1、可以接入所有功能(如GPS、摄像头等)的手机,并能实现功能的完整性和流畅性;
2、速度快,性能高,优秀的用户体验;
3、支持大量的图形动画和重新发现,无干扰,反应快。
4、快速使用设备端提供的接口,在处理速度上有优势。
5、兼容性高,每个代码都是程序员精心设计的,一般不会有闪退,还能防止病毒和漏洞的出现;
缺点:1、开发时间长,快则3个月左右完成,慢则5个月左右;
2、制作费用高,成本高;
3、可移植性比较差。原生App,Android和IOS应该各自开发,同样的逻辑和界面应该分两套写;
4、内容限制(App Store限制);
5、新版本需再次下载应用更新。
Web APPWeb APP是Webapp (HTML5)开发,HTML5应用开发,是利用Web技术制作的app开发。Web技术本身需要浏览器的支持来显示和与用户交互,所以使用的主要技术有HTML5,Java脚本,CSS等等。本质是浏览器功能的叠加,由浏览器以常见的Web 开发语言开发运行。
优点:1、支持的设备范围很广,可以跨越平台。写好的代码可以同时运行在Android、IOS和Windows上;
2、开发成本低,周期短;
3、没有内容限制;
4、适用于显示文字段落较大的页面(如新闻、攻略等)。)和丰富的格式(如加粗多样的字体);
5、用户可以直接使用新版本(自动更新,无需手动更新)。
缺点:由于Web技术本身的限制,H5移动应用无法直接访问硬件和离线存储,因此在体验和性能上有很大的局限性;对网络的要求很高,离线没办法做到;
1、功能有限;
2、运行速度慢,页面不能承载太多东西;
3、图片和动画支持度不高;
4、用户体验常识差;
5、无法调用手机硬件(摄像头、麦克风等)。
混合(Hybrid)APP即使用原生APP的开发技术和HTML5的开发技术,是原生和HTML5技术的混合应用。混合比例不限。Hybrid 开发采用原生代码,同时使用Web View插件或其他框架为H5提供容器。程序的主要业务实现和界面的显示都是利用与H5相关的web技术实现的。例如,京东, 淘宝,今日头条和其他应用程序是通过混合开发模式制作的。
优点:1、开发效率高,节省时间。同一套代码Android和IOS基本可以用;
2、便于更新和部署。每个升级版本只需要在服务器端升级,不再需要上传到App Store审核;
3、代码易于维护,版本更新快,节约产品成本;
4、比网页版多实现了功能;
5、可以离线运行;
6、多平台兼容;
缺点:1、功能/界面不能自定义:所有内容都是固定的,界面不能更改或增加功能;
2、加载慢/网络要求高:所有混合的app数据都需要从服务器中检索,每个页面都需要重新下载,所以打开速度慢,网络占用高,缓冲时间长,容易被用户重新发送;
3、用户体验不如local 应用;
4、安全性低:代码是老的代码,不能很好的兼容新手机系统,安全性低。网络发展这么快,病毒这么多。如果不实时更新,容易产生漏洞,造成直接经济损失;
五、相关的计算机知识