android开发(应用制作)

android开发是指android平台上应用的制作,Android早期由“Android之父”之称的Andy Rubin创办,Google于2005年并购了成立仅22个月的高科技企业Android,展开了短信、手机检索、定位等业务,基于Linux的通用平台进入了开发。

系统架构

安卓平台

Android 有丰富的功能,因此很容易与桌面操作系统混淆。Android 是一个分层的环境,构建在 Linux 内核的基础上,它包括丰富的功能。UI子系统包括:

Android 包括一个构建在 WebKit 基础上的可嵌入浏览器,iPhone 的 Mobile Safari 浏览器同样也是以 WebKit 为Android 提供多种连接选项,包括 WiFi、蓝牙和通过蜂窝(cellular)连接的无线数据传输(例如 GPRS、EDGE 和 3G)。Android 应用程序中一项流行的技术是链接到 Google 地图,以便在应用程序中显示地址。Android 软件栈还提供对基于位置的服务(例如 GPS)和加速计的支持,不过并不是所有的 Android 设备都配备了必需的硬件。另外还有摄像支持。

过去,移动应用程序努力向桌面应用程序看齐的两个领域分别是图形/媒体和数据存储方法。Android 通过提供对 2D 和 3D 图形的内置支持,包括 OpenGL 库,解决了图形方面的挑战。由于 Android 平台包括流行的开源 SQLite 数据库,因此缓解了数据存储的负担。图 1 显示一个简化的 Android 软件层次结构。

应用程序

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。

Android 应用程序由一个或多个组件组成:

1、活动Activity

具有可视 UI 的应用程序是用活动实现的。当用户从主屏幕或应用程序启动器选择一个应用程序时,就会开始一个动作。

2、服务

服务应该用于任何需要持续较长时间的应用程序,例如网络监视器或更新检查应用程序。

3、内容提供程序

可以将内容提供程序看作数据库服务器。内容提供程序的任务是管理对持久数据的访问,例如 SQLite 数据库。如果应用程序非常简单,那么可能不需要创建内容提供程序。如果要构建一个较大的应用程序,或者构建需要为多个活动或应用程序提供数据的应用程序,那么可以使用内容提供程序实现数据访问。

4、广播接收器

Android 应用程序可用于处理一个数据元素,或者对一个事件(例如接收文本消息)做出响应。Android 应用程序是连同一个AndroidManifest.xml 文件一起部署到设备的。AndroidManifest.xml 包含必要的配置信息,以便将它适当地安装到设备。它包括必需的类名和应用程序能够处理的事件类型,以及运行应用程序所需的许可。例如,如果应用程序需要访问网络 — 例如为了下载一个文件 — 那么 manifest 文件中必须显式地列出该许可。很多应用程序可能启用了这个特定的许可。这种声明式安全性有助于减少恶意应用程序损害设备的可能性。

中介软件

操作系统与应用程序的沟通桥梁,并用分为两层:函数层(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工作的一个工具。

相关专业

应用开发

随着近年来手机的日渐普及,手机游戏已经成为整个游戏领域发展速度最快的部分。截至2012年年底,中国手机游戏用户累计规模已达2.86亿,手机游戏用户规模较上一年度增长62.5%。武汉航海职业技术学院教改专业移动终端应用开发专业培养移动互联高端开发型人才。移动应用开发方向将最新的移动开发技术IOS和Android进引入教学体系,通过以项目为中心,以学生为中心的教学理念,注重培养学生的实际完成项目能力和团队合作意识,拥有在IOS和Android移动 终端上设计、开发和测试移动应用软件和移动终端游戏的能力。

未来,随着移动互联网运营环境的进一步改善,游戏产品手机游戏开发商研发创新能力的提升,产业链不断优化,中国手机游戏市场将稳步发展,市场规模将稳步提高,到2014年第四季度,手机游戏用户规模将突破4亿。

伴随着互联网的迅速崛起和通讯技术的不断进步,手机游戏开始占据游戏市场的主流地位,越来越多的互联网公司投入巨资研发手游,未来的手游市场前景也不断被看好。

武汉航海职业技术学院移动终端应用开发专业培养移动互联高端开发型人才 。移动应用开发方向将最新的移动开发技术IOS和Android进引入教学体系,通过以项目为中心,以学生为中心的教学理念,注重培养学生的实际完成项目能力和团队合作意识,拥有在IOS和Android移动终端上设计、开发和测试移动应用软件和移动终端游戏的能力。

android与IOS差别

安卓与IOS都是现在两大操作系统,IOS是由苹果公司开发的,而Android是由Google公司开发的,占据手机市场的大部分。那么Android和iOS哪个好?iOS与Android,两个不同的开发体系结构,一个封闭一个开放,是所有开发者绕不去的大山。而我们在开发过程中,也感受到了这其中的细枝末节。今天就从开发者的角度来谈谈安卓和iOS有哪些区别,以及它们各自的优缺点。

一、开发环境对比

首先在开发环境的配置上,二者就表现出了极大的差异。

1、配置过程

iOS的开发环境非常完美,下载完官方提供的X-CODE之后直接安装即可就可以开发了,而安卓则需要先下载JaVa环境,然后去windows里面做好配置环境,然后下载eclipse这个环境再在里面做各种复杂的配置操作,才可以配置好开发环境。从配置过程来看,iOS简单,安卓极其复杂。

2、跨平台适应性

苹果的开发环境必须用mac电脑的macos系统才可以开发iOS,而windows是无法做iOS开发的,除非做虚拟机,但是真正做iOS开发的时候是不可能用虚拟机搭建mac os来做开发,这样速度会及其缓慢。无法开发任何大型系统。而安卓虽然安装起来复杂,但是具有很好的适应性,不仅能够在windows上开发,还能在mac系统上开发,完全没有任何问题。

3、真机调试

安卓开发者只需要打开调试开关然后就可以调试手机了,但是iOS需要证书、描述文件、APPLEID、开发者账号,搞半天才可以进行调试,过程实在吐血。在开发环境的对比上,苹果表现出了强硬的态度:“只准用我的”,而安卓则表现出了很强的适应性,顺势而为。

二、推送机制问题

在推送问题上,由于iOS和安卓推送机制各自为政,所以开发者更希望有一个大一统的推送平台来管理这二者。同时加上iOS和安卓在国内推送上的水土不服,也给了第三方推送机会,而在第三方推送正好抓住了这个机会。

三、适配尺寸,版本问题

虽说苹果的真机调试比较复杂,但是苹果一共需要适配的机型也就两种尺寸,3.5和4.0英寸并且iOS的版本升级率远远大于安卓,所以在适配上,iOS的优势就明显了,并且库克在发布会上也拿系统升级率向安卓开火,安卓在这块确实没做好。

适配的问题上iOS让开发者感受到了iOS的魅力。同时,在版本和尺寸的配上,安卓机乱糟糟的生态让开发者们不得不只去选择主流的机型去满足而无法顾及更多边缘需求。

四、应用商店提交

由于安卓是开放生态,所以自然应用商店也是一个开放而混乱的生态环境。在应用的提交上,iOS的提交虽然极其麻烦,但是只要提交过一次就可以大获全胜,但是安卓则不同,由于其开放而混乱的超级生态,导致我们提交上的种种麻烦。

知识体系

1、Unix/Linux平台技术:基本命令,Linux下的开发环境

2、企业级数据库技术:SQL语言、SQL语句调优、Oracle数据库技术

3、Java 语言核心技术:Java语言基础、Java面向对象编程、JDK核心API、Java集合框架、Java网络编 程、JavaI/O编程、Java多线程编程、Java异常机制、Java安全、JDBC、XML

4、软件工程和设计模式:软件工程概述、配置管理及SVN、UML、基本设计模式

5、Android应用开发基础:Android开发平台、Eclipse+ADT开发环境、AVD及传感模拟器调试、Android核心组件、Android常用组件、Android高级组件、文件及网络访问、SQLite数据库编程、后台服务编程

6、互联网核心技术: HTML、CSS、JavaScript、JQuery、Ajax应用

7、Android高级应用开发:音频//视频//摄像头、互联网应用、GPS和位置服务、Google Map、2D//3D绘制、传感器开发、游戏开发、电话及SMS服务、网络//Bluetooth//Wi-Fi等。

8、Android系统级开发:移植、驱动、NDK(C方向)。

9、JavaEE核心技术:Servlet核心技术、JSP核心技术、Struts、Spring、Hibernate框架。

学习内容

Android基础阶段:平台架构特性(JAVA/C) Market/应用程序组件 环境搭建与部署/打包与发布 AVD/DDMS/AAPT 调试与测试 相关资源访问/资源制作 Activity/Service/Broadcast Receiver/Content Provider/原理(生命周期)及深层实现

Android进阶初级:组件Widget/ 菜单Menu/ 布局Layout 详解 Xml解析(Pull/Dom/Sax)/JNI 解析SQL数据库原理, SQLite /SharedPreferences/File详解 多媒体Audio/Video/Camera 详解

Android进阶高级:蓝牙/WIFI SMS/MMS 应用实现 深层次解析GPS原理,实现LocationManager/LocationProvider 进行定位/跟踪/查找/趋近警告以及Geocoder正逆向编解码等技术细节 2D图形库(Graphics/View)详解 SDCARD/传感器/手势 应用实现

该文章由作者:【深白色】发布,本站仅提供存储、如有版权、错误、违法等相关信息请联系,本站会在1个工作日内进行整改,谢谢!

发表回复

登录后才能评论