Android开发入门–简介

By: 海市蜃楼 | In: Android开发

11 2009

Android入门简介

移动设备的新体验平台

黑莓和iPhone在智能手机领域是很受欢迎的移动平台(ms地球人都知道),且面向不同的消费群体。黑莓是企业业务用户的挚爱,但是和苹果一推出就红的发紫的iPhone相比,黑莓在易用性和“新奇特性”方面落了下风,难以和iPhone抗衡。而Android则是一个年轻的开源平台,它的潜力可以同时兼顾移动电话的两个不同消费群体,甚至于可能缩小工作和娱乐之间的距离。

现在有很多基于网络的设备都运行着某种Linux内核驱动的系统,这是一种可靠的平台:部署和提供的支持,经济有效,具备良好的面向部署的设计方法。这些设备的UI通常以HTML为基础,只要一个浏览器就可以查看。而Android也是一种基于LinuxV2.6内核的综合操作环境,也就是说上面说到的优点他都具备,而Linux没有的它也可能具备,当然这个就需要我们自己去研究和开发了。

接下来,我们开始了解Android平台,以及如何把它与移动和非移动的应用程序运用在一起。当然也要介绍一下Android SDK的安装了。

Android的历史

Android平台是Open Handset Alliance的成果,这个组织有一群共同致力于构建更好的移动电话的公司组成。领导者就是大名鼎鼎的Google了,包括移动运营商、手持设备制造商、零部件制造商、软件解决方案和平台提供商以及市场营销公司。而从软件开发的观点看,Android正处在开源领域的中心位置(有这么多大公司支持,且带头大哥是Google,不在中心都难。)

第一款正式上市的Android手机是由HTC制造并由T-Mobile供应的G1。这款设备从idea到推出花了大约一年的时间,唯一可用的软件开发工具是一些实行增量改进的SDK发行版。随着G1发型日的临近,Android团队发布了SDK V1.0,用于这个新平台的应用程序也付出水面。

Android平台

Android是构建在Linux内核基础之上的一个分层的环境,它包含了丰富的功能。其中UI子系统包括:

  • 窗口
  • 视图
  • 用于显示一些常见组件(编辑框、列表和下拉列表)的小部件

Android包括一个在WebKit基础上构建的可嵌入式浏览器,这个和iPhone的Mobile Safari浏览器一样,后者也是基于WebKit的。Android提供的连接选项有WiFi、蓝牙和通过cellular连接的无线数据传输(例如GPRS、EDGE和3G)。还有Google地图的链接技术,以及GPS定位服务和摄像支持等。

我们可能都知道,在过去,移动应用程序不断努力地向桌面app看齐的两个领域:图形/媒体和数据存储方法。Android通过提供对2D和3D图形的内置支持,包括OenpGL库,解决了图形方面的挑战。对于数据存储,Android平台包括了流行的开源SQLite数据库,因此也缓解了这方面的负担。
下图显示了一个简化的Android软件层次结构:

Android 软件层次结构

Android 软件层次结构

应用程序架构

Android应用程序是用Java语言编写的,它们在一个虚拟机(VM)中运行。这里要注意,这个VM不是我们常见的JVM,而是Dalvik Virtual Machine,这是一种开源技术。每个Android应用程序都在Dalvik VM的一个实例中运行,这个实例驻留在一个由Linux内核管理的进程中,如下图所示:

Dalvik VM

Dalvik VM

最上层的Android 应用程序由一个或多个组件组成:

  • 活动–Activity
    可视化的 UI应用程序以活动实现。当用户从屏幕上选择一个应用程序时,就会开始一个动作。
  • 服务–Service
    服务用于任何需要持续较长时间的应用程序,例如网络监视器或更新检查应用程序。
  • 内容提供程序–Content Provider
    可以将内容提供程序看作数据库服务器。内容提供程序的任务是管理对持久数据的访问,例如 SQLite 数据库。如果应用程序非常简单,那么可能不需要创建内容提供程序。如果要构建一个较大的应用程序,或者构建需要为多个活动或应用程序提供数据的应用程序, 那么可以使用内容提供程序实现数据访问。详细分析,请参考Android 应用程序之间数据共享—ContentProvider
  • 广播接收器–Intent Receiver
    应用程序可用于处理一个数据元素,或者对一个事件(例如接收文本消息)做出响应。
    Android 应用程序是连同一个 AndroidManifest.xml 文件一起部署到设备的。AndroidManifest.xml 包含必要的配置信息,以便将它适当地安装到设备。它包括必需的类名和应用程序能够处理的事件类型,以及运行应用程序所需的许可。例如,如果应用程序需要访 问网络 — 例如为了下载一个文件 — 那么 manifest 文件中必须显式地列出该许可。很多应用程序可能启用了这个特定的许可。这种声明式安全性有助于减少恶意应用程序损害设备的可能性。

接下来,我们讨论构建 Android 应用程序所需的开发环境。

开发工具

开发Android应用程序最简捷的方式是下载Android SDK和Eclipse IDE。(可参见文后的下载地址)
上文中提到过,Android 应用程序是用 Java 语言编写的,所以使用Eclipse IDE也是个蛮不错的选择,只要结合Eclipse 的 Android Developer Tools 插件就可以开发Android应用程序了,不过它是在Dalvik VM(非Java虚拟机)中编译和执行的(这个在上文中也有介绍)。Eclipse提供了一个丰富的Java环境,Java代码通过编译后,Android Developer Tools 执行打包的工作,其中包括AndroidManifest.xml文件。
当然了,不用Eclipse也能开发Android应用程序,但是你需要熟悉Android SDK。
Android SDK是一个ZIP文件,可以把它解压到硬盘上的一个目录中。SDK包括:

  • android.jar
  • Java 归档文件,其中包含构建应用程序所需的所有的 Android SDK 类。

  • documention.html 和 docs 目录
  • 本地和网上提供的 SDK 文档。这些文档的主要形式为 JavaDocs,以便于在 SDK 中导航大量的包。文档还包括一个高级开发指南和 Android 社区的链接。

  • Samples 目录
  • samples 子目录包含各种应用程序的源代码,包括 ApiDemo,该应用程序演示了很多 API。这个示例应用程序可以作为 Android 应用程序开发的良好起点。

  • Tools 目录
  • 包含所有用于构建 Android 应用程序的命令行工具。最常用、最有用的工具是 adb 实用程序(Android Debug Bridge)。

  • usb_driver
  • 该目录包含将开发环境连接到支持 Android 的设备(例如 G1 或 Android Dev 1 解锁开发手机)所需的驱动程序。只有 Windows 平台的开发人员才需要这些文件。

Android 应用程序可以在实际的设备上运行,也可以在 Android SDK 附带的 Android Emulator 上运行。下图显示 Android Emulator(模拟器) 的主屏幕。

Android模拟器

Android模拟器

Android Debug Bridge
adb实用程序支持一些可选命令行参数,以提供强大的特性,例如复制文件到设备或从设备复制文件。可以使用shell命令行参数连接到手机本身,并发送基本的 shell 命令。下图显示在通过USB线连接到Windows笔记本电脑的一个实际设备上运行的adb shell命令。

使用 adb shell 命令

使用 adb shell 命令

在这个 shell 环境中,可以:

  • 显示网络配置,网络配置可显示多个网络连接。注意这多个网络连接:
  • lo 是本地或 loopback 连接。
    tiwlan0 是 WiFi 连接,该连接由本地 DHCP 服务器提供一个地址。

  • 显示 PATH 环境变量的内容。
  • 执行 su 命令,以成为超级用户。
  • 将目录改为 /data/app,其中存放用户应用程序。
  • 列出包含某个应用程序的目录。Android 应用程序文件实际上是归档文件,可通过 WinZip 之类的软件查看。扩展名为 apk。
  • 发出 ping 命令,查看 Google.com 是否可用。

从相同的命令提示符环境中,还可以与 SQLite 数据库交互,启动程序以及执行许多其他系统级任务。

上面这些就是我们这里要介绍的一些入门级的内容。

下一篇我会教你开发一个简单的手电筒(flashlight)应用程序,我们不见不散吧。

图源:Introduction to Android development

相关文章

2 Responses to Android开发入门–简介

Avatar

IBM

十月 10th, 2009 at 2:17 下午

Avatar

fennek

十月 12th, 2009 at 9:29 上午

应该是翻译的~~~不过是把项目按照自己的开发环境跑了一遍,也算是有点心得吧。

Comment Form

About mo-Android

这里有一群热爱开发的人,我们的文章以原创、翻译为主,包含了我们对Android的认识,对Android的研究,以及一些开发心得和感想,如果 你喜欢我们的站点,喜欢我们的文章,欢迎拍砖,欢迎交流。希望新版的mo-Android能够为你带来更好的体验。

  • fennek: 爱国者也出了平板-E500,Android 1.5,5 英寸TFT LCD触摸屏(电阻式触摸板) ,800*48 [...]
  • 张凯: 这款三星的平板售价据说是iPad的两倍啊 [...]
  • sayisee: G1是享受不动了,呵呵~ PS:烦请博主到下面链接,帮忙选投上数第六个(西 [...]
  • fennek: 找了半天,在国家和地区的选项里只有香港,没有中国大陆,运营商里也只 [...]
  • 卡卡西: 1.6能向下兼容1.5的,目前没发现1.5的程序在1.6的机器上有什么问题,作者不要 [...]

Calendar

2010年九月
« 八    
 12345
6789101112
13141516171819
20212223242526
27282930