ZetCode

Android开发入门

最后修改日期:2012年12月4日

这是一个Android开发入门教程。本教程的目的是帮助您开始开发Android应用程序。本教程已在Linux上创建和测试。

Android

Android是基于Linux的操作系统,专为智能手机和平板电脑等移动设备而设计。它还用于各种网络设备、智能电视系统、手表和家用电器。Android应用程序是用Java编程语言的定制版本开发的。

Android于2003年由一家加州公司开发,该公司后来被Google收购。Google创建了Android开源项目,用于维护和开发Android操作系统。Android正在快速发展;新的Android版本正在频繁发布。Android的代号选择了一些甜点,如Donut、Gingerbread或Jelly Bean。开发人员可以在一个名为Google Play的在线Android市场发布他们的应用程序。在应用程序发布到Google Play市场之前,它必须准备好发布,正确版本化并进行数字签名。Android用户使用内置的应用程序在Android市场搜索和安装应用程序。

Android架构

Android基于Linux内核。内核负责设备驱动程序、内存管理、进程管理和网络。在内核之上,是核心库和Android运行时。是C/C++库,提供数据存储、屏幕显示、多媒体和网络浏览等服务。这些功能通过Android应用程序框架间接暴露给开发人员。Android运行时包括Dalvik虚拟机和核心Java应用程序库。Dalvik是专门为在Android上运行Java应用程序而开发的虚拟机。它与标准的Java虚拟机(JVM)不同。再上一层是应用程序框架。它是一组API,为Android应用程序提供服务。它通过Activity Manager处理应用程序生命周期,通过Notification manager处理通知,通过Resource Manager处理资源,一套图形控件(在Android中称为Views),通过Package Manager处理包管理等等。最上面是应用程序层。这是我们自己的应用程序运行的地方。Android还包含内置应用程序,可以为我们的应用程序提供附加服务。我们可以访问浏览器、短信、日历、地图或联系人。

术语和概念

Android应用程序是一个带有.apk后缀的归档文件。每个Android应用程序都在自己的安全沙箱中运行。Activity是一个具有用户界面的单个屏幕。一个应用程序可以有一个或多个Activity。Activity之间是相互独立的。Activity是Activity类的子类。Service是一个在后台运行的应用程序组件。它执行耗时操作。它是Service类的子类。Content Provider管理一组共享的应用程序数据。它用于访问和修改文件系统、SQLite数据库或Web中的数据。它是ContentProvider类的子类。Broadcast Receiver是一个接收系统或应用程序广播通知的组件。Broadcast Receiver实现为BroadcastReceiver的子类。每个广播都作为Intent对象传递。Intent是一个异步消息。它是要执行的操作的抽象描述。Intent用于在Activity之间导航。Activity、Service和Broadcast Receiver通过Intent激活。View类是用户界面的基本构建块。它负责绘制和事件处理。View是控件的基类,用于创建按钮或复选框等UI组件。ViewGroup是一个包含其他View(和ViewGroup)对象的对象,用于定义界面的布局。

每个Android应用程序都必须在根目录中有一个AndroidManifest.xml文件。该文件向Android系统提供有关应用程序的基本信息。API级别是一个整数值,用于唯一标识Android平台版本的框架API。每个新的Android平台都会为Android应用程序框架带来新的修改。Emulator是在计算机上运行的虚拟移动设备。它用于在不使用物理设备的情况下开发和测试Android应用程序。Android Virtual Device (AVD)是模拟实际物理设备(如智能手机)的模拟器配置。我们可以创建多个AVD并在使用Android OS的不同硬件平台上测试我们的应用程序。

安装

要开始为Android开发,我们需要下载Android SDK(软件开发工具包)。有两种选择。Eclipse ADT bundle或单独的SDK工具。我们将选择后者。

$ ls -sh android-sdk_r21-linux.tgz 
88M android-sdk_r21-linux.tgz

目前Linux可下载的文件是android-sdk_r21-linux.tgz

$ tar -xzvf android-sdk_r21-linux.tgz

我们解压压缩的存档。存档被提取到android-sdk-linux目录。

$ pwd
/home/janbodnar/bin/android-sdk-linux
$ ls
add-ons  platforms  SDK Readme.txt  tools

Android SDK存档最初只包含基本的SDK工具。我们需要使用SDK管理器下载其他工具。Android SDK管理器使用android命令行工具启动。

Android SDK Manager
图:Android SDK Manager
$ ls
add-ons  platforms       samples         sources        temp
docs     platform-tools  SDK Readme.txt  system-images  tools

这些是安装了附加工具后android-sdk-linux目录的内容。

export PATH=$PATH:~/bin/android-sdk-linux/tools
export PATH=$PATH:~/bin/android-sdk-linux/platform-tools

我们将tools和platform-tools目录添加到PATH变量。

Android AVD

Android AVD(Android Virtual Device)是模拟器配置,通过定义Android模拟器要模拟的硬件和软件选项,使我们能够模拟实际设备。

$ android avd

该命令启动Android Virtual Device Manager。

Creating new AVD
图:创建新的AVD

通过单击New按钮,我们启动一个对话框来创建新的Android Virtual Device。在对话框中,我们为AVD命名,选择设备的硬件配置文件,选择目标API级别或我们开发机上的专用存储区域。

$ android list avd
Available Android Virtual Devices:
    Name: AVD3
    Path: /home/janbodnar/.android/avd/AVD3.avd
  Target: Android 4.2 (API level 17)
     ABI: armeabi-v7a
    Skin: 320x480
---------
    Name: AVD4
    Path: /home/janbodnar/.android/avd/AVD4.avd
  Target: Android 4.2 (API level 17)
     ABI: armeabi-v7a
    Skin: 240x320

android list avd命令显示所有可用的Android Virtual Devices。

Android模拟器

Android模拟器是运行在我们计算机上的虚拟移动设备。它允许我们在不使用物理设备的情况下开发和测试Android应用程序。

$ emulator -avd AVD1 &

我们使用emulator命令启动模拟器。我们指定已创建的Android Virtual Device的名称。

Emulator of a 2.7" (240x320 ldpi) device
图:2.7英寸(240x320 ldpi)设备的模拟器

使用F2键解锁模拟器。要列出可用应用程序,我们单击圆圈图标。通过单击菜单硬件按钮并选择Manage apps选项来卸载应用程序。然后我们单击要卸载的应用程序的图标并单击Uninstall按钮。

本章是Android应用程序开发入门。