第二章:Android,Getting Start(一)

这章的主要内容是什么?

  • ·   如何安装Android SDK,创建一个开发环境和调试你的项目
  • ·   深入理解移动设计需要考虑的关键点,针对速度和效率进行调优,同时针对小屏幕和数据链接进行设计。
  • ·   使用Android的虚拟设备,模拟器和开发工具

  开始编写一个你自己的Android应用的必要条件就是需要一个AndroidSDK以及JAVA的开发工具包。Eclipse是我们不错的选择,能让我们的开发变得容易很多。

  

  WindowsMacOSlinux这三个平台都能运行SDKjavaEclipse,选择合适的版本,因为Android应用时在虚拟机上运行的,所以不论你选择哪个平台在开发上都不会有额外的优势。

  Android的代码是用java语法编写的,核心的Android库包含大部分JavaApis。在这些代码运行前,他们要先被编译成Dalvik字节码。这样你就能将应用在移动设备上的虚拟机上运行了。一次编译到处运行的特性又有用武之地了。

  下载的SDK包含所有的Android libraries,完善的文档,十分棒的样例。同时也包含一些工具帮助你去debug这些应用。例如,Android模拟器在运行你的应用的shihDalvik的调试工具DDMS在帮助你调试他们。

  在这章结束的时候,你应该已经建立了你的开发环境,完成两个新的应用,并且用DDMS在模拟器的Android虚拟设备上运行并调试了他们。

如果你以前开发过手机设备的软件,你就会知道那些小表单,电力限制以及内存引用约束会给设计带来较大的挑战。如果你是一个移动开发新手,那么你在桌面软件和web软件的一些经验在这里都行不通了。因为硬件上的限制、用户环境的限制,决定了你的移动应该更加的快,反应迅速、容易学习和使用。

  

这个章节给你展示了一些编写移动应用的最佳实践,而不是想方设法的绕过这些软硬件的限制。我们将更加专注于持续提升移动设计的理念。


1.1 Android开发

Android SDK包含了所有的工具和APIs,以供你编写功能强大的应用。对于开发者来说最大的挑战就是学习它的APIs的特性和限制。如果你在java环境下进行过开发,你就会发现语法、变量等这些你常用的将会直接在Android中使用,就是在一些调优上有些不同。如果你没进行过java方面的研发,但是又其他面向对象语言的开发经验,你也可以直接将经验运用进来。Android平台强大的是APIs,不是java语言。所以不熟悉java不是一个劣势。

1.1.1 开始所需要的东东

因为Android应用在Dalvik虚拟机上运行,你可以在任何平台上编写应用,只要这个平台支持开发工具。现阶段有如下平台支持开发工具:

  1Microsoft WindowsXP or later

  2Mac OS X 10.4.8 or later

  3linux

开始阶段你需要去下载如下的文件

  1Android SDK

  2、 JDK 5 或者是 JDK6

1.1.2 下载并安装SDK

Android SDK是完全开放的。这些不需要付任何费用去下载或者使用API,并且Google在他的软件市场上是不会要求你付费发布你的应用的。你可以从Android的官方网站去下载最新版本的SDKhttp://developer.android.com/sdk/index.html.

SDK工具包现在被发布成一个ZIP形式的文件包,并且只包含最新版本的android开发工具。只需要解压缩这个SDK压缩包到一个新的目录中即可(注意这个目录后边会用到)。

在你开始开发之前,你至少需要添加一个SDK平台。在windows上做这个只需要通过 SDK Setup.exe文件执行。在Mac或者Linux上需要运行工具子文件中的“android”这个执行文件。这个时候屏幕上回出现一个选择框,选择“Available Packages”选项在左边的面板上,然后在面板右边选中SDK平台的版本以及你想安装的“SourcesPackage,和文件。这些被选中项就会被下载安装到目录中,包括API库,文档和几个样例程序。

这些例子是用EclipseAndroid Developer ToolADT)插件进行开发的。但是Eclipse不是必须的,你可以使用任何你习惯的文本编辑器和java IDE作为开发工具去编译、测试调试这些应用代码。

如果你打算用eclipse进行开发,接下来的部分我们将详细介绍如何用EclipseADT插件建立我们的android开发环境。在之后的章节中我们也会详细介绍SDK中自带的一些开发工具,所以如果你不想用eclipse+ADT开发,那么久好好关注后边的相关章节。

1.1.3 用Eclipse开发

Eclipse+ADT插件进行Android应用的开发有几个明显的优势。

Eclipse是一个开源的IDE,在java开发方面十分流行,多个开发平台都支持。但是我们用Eclipse进行开发Android有以下限定要求。

 1Eclipse的版本是3.4或者3.5Galileo

  (1)、需要EclipseJDT 插件

  (2)、WST插件

 不过这两个插件在大部分的EclipseIDE包中都包括。

 2、至于安装Eclipse就简单的多了,从官方网站下载eclipse包。直接运行eclipse的执行文件。第一次启动会要求创建workspace,创建一个用来存放android项目即可。

1.1.4 使用Eclipse插件

EclipseADT插件简化了你的Android应用研发,结合模拟器,在IDE中将.class文件转换成.dex文件。当你使用ADT插件时,他使你在创建、测试和调试你的应用时更加的快速和容易。

ADT插件整合如下的模块到Eclipse

  • · 一个Android项目创建导向工具,他帮助你创建新项目并且创建了基本的应用模板。
  • · 一些基础表单,布局和资源编辑器,以此帮助我们创建、修改和验证我们的XML资源。
  • · 自动编译我们的Android项目,将Android文件转换成.dex文件格式,将包编译成.apk格式,并且将安装包部署到Dalvik虚拟机上。
  • · 管理Android虚拟设备,他能让你在一个特定的Android OS版本创建、管理虚拟机设备模拟器,并对内存做出约束。
  • · Android模拟器,他能帮助我们模拟外观,网络连接设置以及来电和短信息。
  • · DDMS监控,能帮助我们监控端口、堆栈、内存堆、线程视图、进程详细、以及屏幕设施。
  • · 访问设备或者模拟文件系统,让你能导航到文件夹和传输文件
  • · 运行调试功能,你能设置断点查看所有的堆栈信息。
  • · 能将所有的Android/Dalviklog在控制台输出。

2-1显示了Eclipse安装ADT后的DDMS的视图

第二章:Android,Getting Start(一)_第1张图片

2-1

安装ADT插件

  1. Eclipse中选择 HELP->Install New Software
  2. 在对话框中键入地址:https://dl- ssl.google.com/android/eclipse
  3. Eclipse将马上搜索ADT插件,当找到后,将提示插件可用,就像在图2-2中展示的那样。选择那些复选框。然后选择NEXT
  4. Eclipse将下载这些插件,当下载完毕后,强确定Android DDMSADT插件被选中,然后选择NEXT
  5. 接下来直接接受那些协议,点击Next,然后就完成了。当然那个ADT插件没有被签名,在安装之前貌似会给你提示
  6. 当安装完成后,你不得不重启Eclipse去更新ADT设置项
  7. 选中Android从左边的布局面板中
  8. 点击 Browse... ,导航到文件夹,就是那个你解压缩Android SDK的文件夹,然后点击 Apply。列表将显示每个可用的SDK平台,就像图2-3上显示的那样。点击OK 完成SDK的安装。

这里需要说明的是我的eclipse3.7是在windows->preferences->android标签下找到这个Browse...来定位Android  SDK的文件夹,其实。其实和下边的图2-3差不多,不过有差别的是就是我没将preferences这个设置到面板左边,现在的android版本太多,下载那些相关东西就要半天时间才能完成。如果我们只是针对特定版本的Android进行开发,建议直接下载某个版本的相关文档和模拟器组件。

第二章:Android,Getting Start(一)_第2张图片

2-2

第二章:Android,Getting Start(一)_第3张图片

2-3

更新插件

基于AndroidSDK特性,他可能经常要求升级ADT插件,大多数情况下,选择HELP->CHECK FOR  UPDATE 进行更新方面的查找。找到了就直接选中升级即可。

ADT天朝解决方案:

顺便说一下,上边升级ADT的步骤在天朝几乎是行不通。因为那个url被屏蔽了。我到官方网站上看到最好的解决方案直接将最新版本的ADT(我这里是ADT-12.0.0.zip,这个要配合我们下载的SDK版本)下载到本地,通过本地进行安装。安装说明大家可以参考下:http://developer.android.com/sdk/eclipse-  adt.html#installing 描述的方式进行安装。同时,我们的eclipse版本只要是比3.43.5高就行了,这里我选择新下载了3.7 classic版本安装。

剩下的步骤可以执行ADT之后的流程了。

顺便说下,这里我尝试使用myeclipse9集成eclipse的安装平台,很难安装上去。那个软件安装控制台有问题,只要有一个安装失败,以后安装其他的也会受到影响。其实ADT插件的安装就是当做给eclipse安装插件的方式进行安装就行了,没啥特别的。

1.1.5 创建第一个Android应用

你已经下载了SDK,安装了Eclipse,同时也安装了EclipseADT插件。现在你可以准备去开始Android变成了。让我们从创建一个新的项目并设置你的Eclipse的运行环境和调试配置开始吧。

创建一个新的android应用

建立一个新的Android项目我们可以通过Android的新项目指导进行。可以按照如下流程进行:

1、选择 File->new->Project

2、在Android目录中选择创建 Android project,然后选择下一步

3、在图2-4的对话框中输入项目的相关详细信息。"project name"是你项目文件的名称;"Package  name"指的就是javapackage的名称路径;"Create Activity"让你指定一个将来初始化Activity 类的名称;"Application name"是你应用的名字,应用的名字可以和项目的名称不同。"Min SDK Version"是让你指定程序运行的SDK的最小版本号(不过当你选择Build target下的某个Target Name的时候,他已经自动将version的值给赋值了。这里我选的Android2.2,对应的值是8)。这里其实只要我们指定了project name 这个选项,项目向导基本上已经帮我们将相关的输入库设定一些默认值了,这里我创建了一个Hello_World的项目

4、当我们完成上边详细信息的填写,直接点击"Finish"

第二章:Android,Getting Start(一)_第4张图片

2-4

备注:这里有一个问题,现在android已经有3.0的版本了,所以他的Build target 下的选择框很多,我们需要拖动滚动条才能看到下边应用名和package等的输入框。

如果你选择了创建Create Activity前边的复选框,那么ADT插件将会在创建项目的同时创建一个class继承 Activity。尽管是空的,但是他实现了Hello World。在我们修改项目之前,我们先去配置加载配置去运行和调试程序吧。

创建一个加载配置引擎

加载配置让你可以在运行和调试应用的时候可以指定一些配置项。在一个加载配置中,你可以做如下参数的指定:

  • ·    项目启动时要加载的Activity
  • ·    运行的虚拟设备以及模拟器的配置
  • ·    输入输出设置(包括控制台的默认设置)

  运行和调试应用的时候,你可以指定不同的加载配置。下边的步骤将展示如何为应用创建一个加载配置。

  1、在运行菜单(Run)中,选择 Run Configurations... 或者 Debug Configurations.. 

  2、在项目类型中选择Android Application,点击右键,选择 New

  3、在弹出的对话框中输入配置名称。你可以为每个项目创建多个加载配置文件,所以呢我们需要为每个配置文件的名字取得醒目和容易辨识些,方便我们区分不同的配置。

  4、现在开始选择启动参数。第一个tab让你选择你要运行或者调试的项目和他的初始启动的Activity。图2-5展示了你要运行或者调试的项目(就是刚才我们创建的Hello_World项目)的配置信息。

第二章:Android,Getting Start(一)_第5张图片

2-5

  5、如图2-6所示,在Target tab下选择我们程序默认要运行的虚拟设备。或者我们可以每次运行的时候选择设备和AVD

第二章:Android,Getting Start(一)_第6张图片

2-6

。你也可以配置在我们启动一个虚拟设备的时候,模拟器的网络设置和选择是否清除用户的数据以及是否禁止启动方式模拟。也可以通过命令行输入框指定启动模拟器时的启动参数。(AndroidSDK没设定默认的虚拟机,所以我们运行和调试项目的时候需要提前建立虚拟机,这个可以通过eclipse的,window->Android SDK And AVD Manager 进行设置创建)

备注:这里需要说明的是我在创建虚拟机的时候发现默认创建虚拟设备文件的目录是 C:\Documents  and Settings\.android\目录,但是我在装操作系统的时候,将我的文档指定到D盘去了。这个时候如果我想启动我的AVD虚拟设备,他会默认的到D:\我的文档\.android 目录下去寻找对应的AVD配置文件。因为中英文路径以及AVD Manager的设置的问题,我无法将程序部署到AVD上去运行。这里最终的解决方法就是在环境变量中设置“ANDROID_SDK_HOME”路径,在这里我设置成我安装SDK的目录E:\android,这样AVD Manager创建AVD的时候,直接就在E:\android 目录下生成相关的文件。注意,如果想让环境变量立即生效,记得注销或者重启机器。

  6、最后,在Common tab下设置其他的启动属性

  7、点击Apply,这样你的加载配置就会被保存

运行和调试你的应用

你已经创建了你的第一个项目并且创建了他们的运行和调试文件,在做任何修改之前,通过运行和调试Hello World项目测试你的安装和配置项。

可以通过Run 菜单选择Run或者Debug 去加载最近使用的的配置加载项,或者选择Run Configurations..或者Deubg  Configurations... 去选择一个指定的配置文件去使用。

如果你使用了ADT插件,运行和调试你的应用可以按照如下的步骤进行:

  • ·   编译当前的项目并且将他转换成一个Android可执行文件(.dex
  • ·   打包可执行文件以及相关的外部资源到一个Android的包中(.apk
  • ·   启动选中的虚拟设备(如果你已经选择了AVD,并且他还没在运行)
  • ·   将你的应用部署到目标设备上
  • ·   启动你的应用

如果你在调试,Eclipse的调试器将被启动,运行你设置断点调试你的代码。

如果一切运行正常,你就会看到一个新的Activity在模拟器中运行,就像图2-7中展示的那样。

理解你的Helloworld

让我们回过头来深入的分析看看我们的第一个Android应用

Activity 对于应用的可视化、可交互组件是一个基础的类,他相当于传统桌面程序的一个表单,如图  listing2-1 显示的代码所示,这是一个既成了Activity的类,覆盖了onCreate 方法。

第二章:Android,Getting Start(一)_第7张图片

Listing 2-1

第二章:Android,Getting Start(一)_第8张图片

2-7

这个模板缺失的是布局的可视化接口。在Android中,可视化组件被称作 视图(Views),和传统的桌面程序开发中的控件很相似。

Hello World模板是被向导创建的,他覆盖了onCreate方法去调用setContentView方法设置,他通过引用一个外部资源设计UI,就像下边代码高亮显示的那样。

    @Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

    }

Android项目中,这些资源都被存储在res文件夹中,这个文件夹中包括drawable,layout,values子文件夹。ADT插件将会通过变量“R”去访问整合这些资源

Listing2-2 展示了Android项目模板创建main.xml文件中定义的UI布局。

第二章:Android,Getting Start(一)_第9张图片

Listing2-2

XML中定义你的UI是一个绝佳的方法去实现你的UI,它能将应用逻辑和UI完美的分离。

如果需要在代码中访问UI元素,你可以在XML文件中定义ID属性,然后你可以使用findViewById方法去获取每个命名元素的引用。下边的XML文件展示了在Hello World模板中,ID属性被增加到TextView 控件中。

<TextView  

    android:id="@+id/myTextView"

    android:layout_width="fill_parent" 

    android:layout_height="wrap_content" 

    android:text="@string/hello"

    />

并且我们可以通过如下的代码访问

TextView myTextView=(TextView)findViewById(R.id.myTextView)

反过来说,你可以直接在代码中创建你的布局(不过这个一般来说真不是一个好的实践方案),就如图Listing2-3展示的。

第二章:Android,Getting Start(一)_第10张图片

Listing 2-3

XML的布局中,所有的属性都是可以通过代码设定的。因为运行我们通过xml进行布局和UI设计,保持可视化设计和代码的分离能帮助我们的代码提高可读性。

在第四章中你将会学到在视图(Views)中如何创建复杂的布局。

1.1.6 Android应用的类型

你创建的大部分应用都会归为以下几类中的一个:

  • ·   前台应用:应有只有在前端展示的时候是有用的和有效地。当他看不到的时候就直接挂起。游戏和地图是这方面较好的例证。
  • ·   后台应用:这类应用几乎没有交互,在配置完毕后在整个生命周期中一直都是隐藏运行。来电屏幕和自动回复短信是这方面最好的例证。
  • ·   中断应用:这类应用大部分时间在后台隐藏运行,这类应用被设置完成后,都会在后端静静的运行,适当的时候给用户提醒。媒体播放器是这方面较好的例证。
  • ·   控件组件:一些应用作为屏幕上的控件。

  复杂的应用是很难简单的归为上边的任何一类,一般都是包含每种类型的应用。当你设计应用的时候要考虑好应用是如何被使用的然后再适当的设计。让我们更加深入的探讨每种类型设计时候需要考虑的因素。

前台应用

当我们创建一个前端的应用的时候需要考虑的是Activity的生命周期,因为我们的应用对自己的生命周期有较少的控制权力。如何做到应用在前端和后台运行的无缝结合很重要。因为Android有一个资源管理器,他会优先清除那些没有在运行的应用。所以对于我们来说时刻保存应用的运行状态比较重要。这样才能用户提供一个很好的体验。

后台应用

后台应用在后台静静的运行,机会很少和用户进行交互。他们主要是监听消息和一些硬件系统的动作而不依赖于用户的交互行为。我们很可能会创建一个完全不可见的服务,按经验来说,我们最好提供一些控制平台。至少让用户确认服务是在运行的,可以暂停和终止。

中断应用

我们经常想创建一类应用就是对用户的交互进行反馈,但是当他在后台不活跃的时候仍旧可用。聊天和email应用是这种样例。这些应用由可见的Activities和不可见的后台服务组成。

这类应用我们需要关注在与用户交互时候的状态。这也意味着当他在后台运行时需要更新ActivityUI并发送提醒保持用户更新,这个和第九章的提醒功能很相似

控件/组件

在某些情况下你的应用需要组合一系列的组件,通过第十章描述的组件功能,你可以创建可视化的交互性组件,用户能将这些组件加到他们的屏幕上。这些组件应用经常被用来显示一些动态信息,例如电池状态、天气预报和时间等。




你可能感兴趣的:(java,eclipse,android,虚拟机,开发工具,平台)