第一章 Android平台简介_移动开发_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > 移动开发 > 第一章 Android平台简介

第一章 Android平台简介

 2014/5/27 12:14:52  哆啦A梦888  博客园  我要评论(0)
  • 摘要:Android是Google公司于2007年11月5日发布的基于Linux内核的移动平台,该平台由操作系统、中间件、用户界面和应用软件组成,是一个真正开放的移动开发平台。本章将介绍Android系统的起源、特点、应用程序框架以及开发环境的搭建,让读者对Android平台有个初步的了解,之后将开发第一个Android程序HelloAndroid,并通过对该程序的简单分析,带领读者步入Android开发的大门。1
  • 标签:android 简介

Android是Google公司于2007年11月5日发布的基于Linux内核的移动平台,该平台由操作系统、中间件、用户界面应用软件组成,是一个真正开放的移动开发平台

本章将介绍Android系统的起源、特点、应用程序框架以及开发环境的搭建,让读者对Android平台有个初步的了解,之后将开发第一个Android程序Hello Android,并通过对该程序的简单分析,带领读者步入Android开发的大门。

1.1 Android的来龙去脉
Android的创始人Andy Rubin是硅谷著名的“极客”,他离开Danger移动计算公司后不久便创立了Android公司,并开发了Android平台,他一直希望将Android平台打造成完全开放的移动终端平台。之后Android公司被Google公司看中并将其收购。不久,号称全球最大的搜索服务商Google大举进军移动通信市场,并推出自主品牌的移动终端产品。

2007年11月初,Google正式宣布与其他33家手机厂商、软硬件供应商、手机芯片供应商、移动运营商联合组成开放手机联盟(Open Handset Alliance),并发布名为Android的开放手机软件平台,希望建立标准化、开放式的移动电话软件平台,在移动行业内形成一个开放式的生态系统。

 

1.2 掀起Android的盖头来
自从Android发布发来,越来越多的人关注Android的发展,越来越多的开发人员在Android系统平台上开发应用,那是什么使Android备受青睐,什么使Android在众多移动平台中脱颖而出呢?

1.2.1 选择Android的理由
与其他手机的操作系统相比,Android具有如下优点:
·开放性;
·平等性;
·无界性;
·方便性;
·硬件的丰富性。

下面将对以上各个优点进行简单介绍。
1、开放性
提到Android的优势,首先想到的一定是其真正的开放,其开放性包含底层的操作系统以及上层的应用程序等。Google与开放手机联盟合作开发Android的目的就是建立标准化、开放式的移动软件平台,在移动产业内形成一个开放式的生态系统。
Android的开放性也同样会使大量的程序开发人员投入到Android程序的开发中,这将为Android平台带来大量新的应用。

2、平等性
在Android的系统上,所有的应用程序完全平等,系统默认自带的程序与自己开发的程序没有任何区别,程序开发人员可以开发个人喜爱的应用程序来替代系统的程序,构建个性化的Android手机系统,这些功能在其他的手机平台是没有的。
在开发之初,Android平台就被设计成由一系列应用程序组成的平台,所有的应用程序都运行在一个虚拟机上面。该虚拟机提供了系列应用程序之间的和硬件资源通信的API。

3、无界性
Android平台的无界性表现在应用程序之间的无界,开发人员可以很轻松地将自己开发的程序与其他应用程序进行交互,比如应用程序需要播放声音的模块,而正好你的手机中已经有一个成熟音乐播放器,此时就不需要再重复开发音乐播放功能,只需简单地加上几行代码即可将成熟的音乐播放添加到自己的程序中。

4、方便性
在Android平台中开发应用程序是非常方便的,如果对Android平台比较熟悉,想开发一个功能全面的应用程序并不是什么难事。Android平台为开发人员提供了大量的实用库及方便的工具,同时也将Google Map等强大的功能集成了进来,只需简单的几行调用代码即可将强大的地图功能添加到自己的程序中。
5、硬件的丰富性
由于平台的开放,众多的硬件制造商推出了各种各样的产品,但这些产品功能上的差异并不影响数据的同步与软件的兼容,例如,原来在诺基亚手机上的应用程序,可以很轻松地移植到摩托罗拉手机上使用,且联系人、短信等资料更是可以方便地转移。

1.2.2 Android的应用程序框架
从软件分层的角度来说,Android平台由应用程序、应用程序框架、Android运行时库以及Linux内核共4部分构成,本节将分别介绍各层的功能。
1、应用程序层
本层的所有应用程序都是用java编写的,一般情况下,很多应用程序都是在同一系列的核心应用程序包中一起发布的,主要有拔号程序、浏览器、音乐播放器、通信录等。该层的程序是完全平等的,开发人员可以任意将Android自带的程序替换成自己的应用程序。

2、应用程序框架层
对于开发人员来说,接触最多的就是应用程序框架层。该应用程序的框架设计简化了组件的重用,其中任何一个应用程序都可以发布自身的功能供其他应用程序调用,这也使用户可以很方便地替换程序的组件而不影响其他模块的使用。当然,这种替换需要遵循框架的安全性限制
该层主要包含以下9部分:
·活动管理(Activity Manager) 用来管理程序的生命周期,以及提供最常用的导航回退功能。
·窗口管理(Window Manager) 用来管理所有的应用程序窗口。
·内容管理(Content Providers)通过内容管理,可以使一个应用程序访问另一个应用程序的数据或者共享数据。
·视图管理(View System) 用来构建应用程序的基本组件,包括列表、网格、按钮、文本框,甚至是可嵌入的Web浏览器。

·包管理(Package Manager) 用来管理Android系统内的程序。
·电话管理(Telephony Manager)所有的移动设备的功能统一归电话管理器管理。
·资源管理(Resource Manager)资源管理器可以为应用程序提供所需要的资源,包括图片、文本、声音、本地字符串,甚至是布局文件。
·位置管理(Location Manager) 该管理器是用来提供位置服务的,如GPRS定位等。
·通知管理(Notification Manager)主要对手机顶部状态栏的管理,开发人员在开发Android程序时会经常使用,如短信提示、电量提示,还有后台运行程序的提示等。

3、Android运行时库
该层包含两部分,程序库及Android运行时库。
程序库为一些C/C++库,这些库能够被Android系统中不同的应用程序调用,并通过应用程序框架为开发者提供服务。而Android运行时库包含了Java编程语言核心库的大部分功能,提供了程序运行时所需调用的功能函数。
程序库主要包含的功能库:
·libc 是一个从BSD继承来的标准C系统函数库,专门针对移动设备优化过的。
·Media Framework 基于PacketVideo公司的OpenCORE。支持各种常用音频、视频格式回放和录制,并支持多种图像文件,如MPEG-4、H.264、MP3、AAC、AMR、JPG、PNG等。
·Surface Manager 主要管理多个应用程序同时执行时,各个程序之间的显示与存取,并且为多个应用程序提供了2D和3D图层无缝的融合
·SQLite 所有应用程序都可以使用的轻量级关系型数据库引擎。
·WebKit 是一套最新的网页浏览器引擎。同时支持Android浏览器和一个可嵌入的Web视图。
·OpenGLIES 是基于OpenGL ES 1.0 API 标准来实现的3D绘制函数库。该函数库支持软件和硬件两种加速方式执行。
·FreeType 提供位图(Bitmap)和矢量图(Vector)两种字体显示。
·SGL 提供了2D图形绘制的引擎。

Android运行时库包括核心库和Dalvik虚拟机:
·核心库(Core Libraries)该核心库包括Java语言所需要的基本函数以及Android的核心库。与标准Java不一样的是,系统为每个Android的应用程序提供了单独的Dalvik虚拟机来执行,即每个应用程序拥有自己单独的线程

·Dalvik虚拟机(Dalvik Virtual Machine)大多数虚拟机(包括JVM)都是基于栈的,而Dalvik虚拟机则是基于寄存器的,它可以支持已转换为.dex格式的Java应用程序的运行。.dex格式是专门为Dalvik虚拟机设计的,更适合内存处理器速度有限的系统。

4、Linux内核
Android平台中操作系统采用的是Linux 2.6内核,其安全性、内存管理、进程管理、网络协议栈和驱动模型等基本依赖于Linux。对于程序开发人员,该层为软件和硬件之间增加了一层抽象层,使开发过程中不必时时考虑底层硬件的细节。而对于手机开发商而言,对此层进行相应的修改即可将Android平台运行到自己的硬件平台之上。

 

1.3 Android开发环境的搭建
本节主要讲述如何构建基于Eclipse的Android开发环境,之后对开发环境进行测试并创建第一个Android应用程序“Hello World!”。
1.3.1 SDK的下载及安装
前面已经对Android平台进行了简单的介绍,从本节开始,将带领读者逐步搭建自己的开发环境,具体的步骤如下:
(1)下载并安装jdk-6u26-windows-i586.exe 安装目录是D:\Java\jdk1.6.0_26和D:\Java\jre6,

下载adt-bundle-windows-x86并解压,安装目录是D:\Java\adt-bundle-windows-x86。

(2)右键单击我的电脑,依次选择属性/高级/环境变量,在系统变量中新建一个名为JAVA_HOME,值为:“D:\Java\jdk1.6.0_26”的环境变量,
(3)Path,变量值“;%JAVA_HOME%\bin”,
(4)CLASSPATH,变量值“.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar”,单击“确定”按钮即可。

1.3.2 第一个Android程序
(1)启动Eclipse,依次选择“File/New/Android Application Project”

(2)新建新建Android应用程序(New Android Application)
在窗口中输入:
Application Name:Hello
Project Name:默认会自动与应用程序名称一样,你也可以起不同的名字
Package Name:com.genwoxue.hello(你可以使用别的包名,习惯用这个域名倒写的方式)
Target SDK:如果你采用真机测试,看看你的真机所支持的Android版本
Compile With:编译可以选择最新版本

(3)配置Project(Configure Project)
采用默认设置

(4)配置应用图标Icon(Configure Launcher Icon)

 (5)新建空白Activity(New Blank Activity)

单击“Finish”按钮,打开项目主界面

(6)项目主界面
你可能一下子被整个界面弄晕了,太复杂了,这么多文件夹,实际上将来我们所有关心的东西并不式,别害怕,我们只要知道①②③都是干什么的就够了。
其中①表示项目文件管理区;②表示控件区;③表示界面预览区。

(7)建立虚拟设备
如果你还没有一台运行Android的设备(手机),那么我们需要建立一个虚拟设备。
1、选择菜单window->Android Virtual Device Manager
2、打开Android虚拟设备管理器(Android Virtual Device Manager),单击“New…”按钮。
3、新建Android虚拟设备(Create Android Virtual Device)
然后单击“OK”按钮。
当然你最好有一台真正能够运行Android的设备,你也可以跳过这一步。
最后运行程序,选择菜单Run->Run(Ctrl+F11)。

至此,我们第一个Android App正式诞生了。

 

1.3.3 解析Hello,world!
尽管经典之中的经典Hello,world!已经悄然运行在我们的手机上了,但如果现在让你告诉别人你会Android开发,估计你自己都心虚,让我们一起再会Hello,world!项目,揭开庐山真面目。
第一次在Eclipse中看Android项目工作区估计眼都花了,头都晕了,你一定会想:这么复杂!但事实上,可能会比你想得简单,而且我们采取循序渐进方式,你很快就会掌握的。
1、Android项目工作区概览

新建一个Android项目,Eclipse会自动帮我们建立诸多文件,我们看一下:
第①部分:表示Java源程序;
第②部分:代表系统资源ID,类似于C语言的*.h文件,请千万不要手工修改R.java文件;
第③部分:Android4.2表示当前SDK是4.2,是目前最新版本;
第④部分:表示资源文件,其中layout布局你可以认为就是界面;
第⑤部分:每一个Android项目都包含一个清单(Manifest)文件--AndroidManifest.xml,它存储在项目层次中的最底层。清单可以定义应用程序及其组件的结构和元数据。

Android项目中主要文件及文件夹的作用:
(1)src:存放所有的*.java源程序。
(2)gen:为ADT插件自动生成的代码文件保存路径,其中的R.java文件将保存所有的资源ID。
(3)Android 4.2:表示现在使用的Android SDK的版本是4.2。
(4)assets:可以存放项目中一些较大的资源文件,如图片、音乐、字体等。
(5)res:可以存放项目中所有的资源文件,如图片(*.png、*.jpg)、网页(*.html)、文本等。
(6)res\drawable-hdpi:保存高分辨率图片资源。
(7)res\drawable-ldpi:保存低分辨率图片资源。
(8)res\drawable-mdpi:保存中等分辨率图片资源。
(9)res\layout:存放所有布局文件,主要是用于排列不同的显示组件,在Android程序要读取此配置。
(10)res\values:存放一些资源文件信息,用于读取文本资源,在文件夹中有一些约定的文件名称。
(11)res\raw:自定义的一些原生文件所在目录,如音乐、视频等文件格式。
(12)res\xml:用户自定义的XML文件,所有的文件在程序运行时编译到应用程序中。
(13)res\anim:用于定义动画对象。
(14)activity_main:配置所有的控件。
(15)R.java:此文件为自动生成并自动维护的,用户添加的控件会自动在此文件中生成一个唯一的ID,以供程序使用。
(16)AndroidManifest.xml:主要配置文件,用于配置各个组件或一些访问权限等。

2、Android项目分析
(1)布局文件(res\layout\activity_main.xml)
双击“res\layout\activity_main.xml”打开布局文件。注意①代表布局文件图形界面;②代表布局文件代码界面。

Android App应用程序类似于.net的Winform程序,其中①和②相当于标题栏,①为标题栏的图标,②为标题;③代表标签,类似于众多程序的Label。

我们再来看一下代码:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:tools="http://schemas.android.com/tools"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  tools:context=".MainActivity" >

  <TextView
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:layout_centerHorizontal="true"
  android:layout_centerVertical="true"
  android:text="@string/hello_world" />

</RelativeLayout>

本段代码包含了两个重要标签:和,代表线性布局管理器;代表标签组件。其它的皆为两个标签的属性。
我们仔细来看一下:android:text="@string/hello_world",我们的运行结果是“Hello world!”而不是“hello_world”!

(2)strings文本资源文件(res\values\strings.xml)
双击“res\values\strings.xml”打开文本资源文件。与布局文件一样:①代表文本资源图形界面;②代表文本资源代码界面。

我们打开文本资源strings.xml文件之后,当我们看到:
     Hello world!
前面的疑虑应该顿消,原来如此啊!hello_world是文本资源文件中的一个标签而已,其真正的内容是“Hello world!”。
你可以通过图形界面或者字符界面添加一个字符串资源,究竟你选择哪种,随你高兴!

(3)R.java文件(gen/com.genwoxue.hello/R.java)
双击“gen/com.genwoxue.hello/R.java”打开资源ID文件。

R.java资源文件保存所有资源的ID,譬如前面所讲的hello_world,在这里就是一个整数0x7f040001而已。
如果你感觉这个文件很奇怪也很正常,除非你曾经学习或者写过C for windows应用程序就早已习以为常了。

(4)AndroidManifest.xml文件
双击“AndroidManifest.xml”项目配置文件。

所有的Activity程序都在AndroidManifest.xml文件中进行注册,故该文件是整个Android项目的核心配置文件。
在节点中配置的android:icon="@drawable/ic_launcher",表示引用drawable(drawable-hdpi、drawable-ldpi、drawable-mdpi三个文件夹中导入)资源配置的图标,引入图标的名称为ic_launcher。现在你可以更换应用程序图标了,你知道了它在哪!
在节点中配置的android:label="@string/app_name",表示此应用程序的标签名称从strings.xml文件中读取,内容为app_name对应的内容。现在你也可以更换应用程序标题了,你知道了它在哪!
当然,你还可以更改Activity的标题,什么是Activity?
Activity就是一个活动的窗体,一个项目应用程序可以包含多个Activity。

(5)MainActivity.java(src/com.genwoxue.hello/MainActivity.java)
双击“src/com.genwoxue.hello/MainActivity.java”程序文件。

本程序是Android整个项目的主程序,Activity是项目的基本组成部分。
MainActivity继承Activity类,onCreate()方法是启动Activity地默认调用的方法。
super.onCreate(savedInstanceState):调用父类的onCreate()方法;
setContentView(R.layout.activity_main):调用布局文件。

发表评论
用户名: 匿名