- 210612.《Learning Android中文版》学习笔记
- 211004.《Learning Android中文版》学习笔记
- 210727.《Learning Android中文版》学习笔记
- 210808.《Learning Android中文版》学习笔记
- 211004.《Learning Android中文版》学习笔记
- 210808.《Learning Android中文版》学习笔记
- 210615.《Learning Android中文版》学习笔记
- 210727.《Learning Android中文版》学习笔记
- 211012.《Learning Android中文版》学习笔记
- 210615.《Learning Android中文版》学习笔记
《Learning Android中文版》学习笔记02
快速入门
本章介绍Android 开发环境的搭建方法。
在本章的最后,你将拥有一个完整的开发环境。随后就可以动手编写/构建第一个 Hello World 程序,并在仿真器中(或者在真机上,只要你乐意)运行了。
Note:
下文将会使用 ~ 符号表示你的个人目录。对于 Mac OS X ,~一般代表 /Users/marko/ 这样的目录,对 Linux ,~是 /home/marko ,在 Windows Vista 和 Windows 7 中是C:\Users\marko,在Windows XP中则是C:\Documents and Settings\marko。同样,我将选择 Unix 风格的正斜线(/)而非 Windows 风格的反斜线()作为路径分隔符。
因此,如果你是 Windows 用户,只需要把 ~ 替换成 C:\Users\YourUserName ,并把 / 换成 \ 。除此,Mac 、 Linux 和 Windows 也就大同小异了。
安装 Android SDK
Android软件开发包(SDK)是你开发Android应用所需的一切。除了一套开发的工具集,它也提供了一个用以测试的平台。Google官网可能无法访问,你可以从网上为你的目标平台下载到对应的Android SDK。
下载之后,解压到一个方便访问的目录。比如:
Windows
C:\apps\android-sdk-windows
Linux
/home/**YourUserName**/android-sdk-linux_86
Mac OS X
/Users/**YourUserName**/android-sdk-mac_86
Tip:
我强烈建议Windows用户避免选择带空格的目录名,因为我们会经常用到命令行,夹带空格的目录名只会增加无谓的复杂性。而Windows XP的个人目录又恰恰带着空格:C:\Document and Settings,因此我建议把android-sdk放在一个新建的顶级目录之下,比如C:\apps。
设置环境PATH变量
Android SDK里有个目录,主要的工具都在里面。我们将会频繁地用到这些工具,因此把你的~/android-sdk/tools/目录加入系统的环境变量PATH会是个好办法,这一来就不需要每次使用它们时都切换目录了。
不同系统设置环境变量的方式各有不同,详见 Installing Android SDK 页面中的第二步。
(译注:Installing Android SDK: http://developer.android.com/sdk/installing.html)
安装Eclipse
Eclipse是一个开源的编程工具集。Eclipse的首页在http://eclipse.org/。
Android开发并不限制开发者选择任何自己喜欢的编辑器或者IDE。不过Eclipse的使用者既占多数,本书也就选择了它。
Tip:
如果你不想用Eclipse,可以参考 Developing in Other IDEs。
好,去 http://www.eclipse.org/downloads/ 可以下载到Eclipse。建议选择Eclipse IDE for Java Developers(注意不是Eclipse for Java EE developers,这个要大两倍),安装至任何目录都可以。
Eclips的工作区
Eclipse以项目为单位管理用户的工作,项目又都位于工作区(Workspace)中。因此工作区的位置需要明确下来,我建议使用 ~/workspace 这样相对简单的位置来存放自己的代码。Windows的话,仍建议避免在workspace目录中存在空格(使用命令行的时候会添麻烦)——C:\workspace该是个好地方。
安装Android Development Tools
你还需要安装Android Tools for Eclipse,如下:

- 打开Eclipse,选择 Help → Install New Software。
- 进入Available Software对话框,单击Add。
- 进入Add Site对话框,在"Name"栏输入一个远程站点的名字(比如,"Android Plugin")。
- 在"Location"栏,输入这个URL:https://dl-ssl.google.com/android/eclipse/。
- 单击OK。
- 回到Available Software对话框,这时你可以在这个列表中发现多了一个"Developer Tools"。选择它也就自动嵌套选择了Android DDMS和Android Development Tools,单击Next。
- 在出现的Install Details对话框中,前面选择的Android DDMS和Android Development Tools都列了出来。单击Next,阅读并确认许可条款,安装依赖的插件,单击Finish。
- 等待Eclipse自动重启。
- 重启后Eclipse会弹出对话框,让你设置Android SDK的文件目录,并会从网络安装相应的软件包。
Note:
- 如果下载插件时遇到问题,可以尝试将URL中的"https"替换为"http"(使用https往往是出于安全目的)。
- 如果是因为墙无法安装,只能从网上其他平台下载ADT包,然后进行离线安装了。具体安装内容,请自行搜索。也可以使用迅雷按如下地址下载,不过不保证成功。
https://dl.google.com/android/ADT-23.0.4.zip
Hello,World
一切准备就绪,开工写一个Hello World程序。由于Eclipse会为项目自动生成一些模板,这里需要写的代码并不多,重要的是理解。
创建新项目
进入Eclipse,选择 File→New→Android Project 。有时菜单里可能没有Android Project这一条目(尤其是在第一次启动Eclipse的时候),这时可以选择Other找到Android Project。只要选择过一次,它就会一直显示在菜单里。
进入New Project对话框,分别进行如下设置:
- 填写"Project name"。这是个Eclipse概念:Eclipse把一切皆组织为项目(project),而项目名只能是一个单词。在命名上,我个人比较喜欢CamelCase风格。在此输入:HelloWorld。
- 选择"build target",它为构建工具指明目标平台的版本。其中罗列了所有可用的目标平台,以及SDK中附带的扩展。在这里可以选择一个较新的版本,比如Android 2.2(留意不要选择Google APIs,它们是Google的Web服务在Android平台上的专有扩展)。
- 接下来设置project属性。其中的"application name"也就是你应用的英文名字,随便写上就好,比如"Hello, World!!!"。
- "package name"是个Java中的概念。在Java中,源码都是组织为一个个的package,用以表示Java对象在不同类中的可见性,是个很重要的概念。在Android开发中,package作为应用程序签名的基本单位,也是很重要的。它的命名规范为逆序的域名,后跟可选的子域名。比如我有个域名是example.com,要编写一个计算器(caculator)的应用,那么package的名字就可以是com.example.caculator。
- "activity"一项是可选的。目前我们还没讲到Activity(参见第六章,Android用户界面),姑且把它看作是程序的界面即可。Activity通过Java的类来表示,因此它的名字也同样遵循Java中类的命名规范:首字母大写,对多个单词使用CamelCase命名规范。在此输入HelloWorld作为Activity的名字。
- "minimum SDK version"是这一应用所支持目标平台的最低版本,以API Level为单位。若想要得到较高的兼容性,就选择一个较低的版本。在这里我们不需要考虑兼容性,因此选择8,对应Android 2.2。
- 如 图3.2. "New Android Project窗口" 最后单击Finish按钮,Eclipse就会新建出一个项目。接下来,我们依次观察一下在这一环节中新建出来的文件。

Manifest文件
Manifest文件是应用程序各部分之间的牵线人。它申明了程序中包含的构件(Building Blocks)以及相应的权限等信息。
例 AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.marakana" android:versionCode="1" android:versionName="1.0">
<application android:icon="@drawable/icon"
android:label="@string/app_name">
<activity android:name=".HelloWorld"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
<uses-sdk android:minSdkVersion="8" />
</manifest>
布局文件
Layout文件用于表示界面的布局。在这里我们只用到了一个界面,就是上面定义的Activity:HelloWorld。
例 res/layout/main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView android:layout_width="fill_parent"
android:layout_height="wrap_content" android:text="@string/hello" />
</LinearLayout>
Strings文件
这也是个XML文件,内容是程序中出现的所有文本。比如按钮的名字、Label、默认的文本等等,都统一在这一文件之下。把问题分解,令不同文件各司其职,这是个很好的做法——哪怕是XML文件。由此,Layout文件负责Widget的布局,Strings文件负责文本内容。
例 res/values/strings.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">Hello World, HelloWorld!</string>
<string name="app_name">Hello, World!!!</string>
</resources>
R文件
R文件负责Java与外部资源之间的关联。它在res目录中的内容发生变化时(比如添加一个图片或者xml文件)由SDK自动生成,不必也不应该手工修改。
既然有Eclipse代劳,对这个文件本身我们不必关注太多。不过它里面的数据是非常有用的。
例 gen/com/marakana/R.java
/* AUTO-GENERATED FILE. DO NOT MODIFY.
*
* This class was automatically generated by the
* aapt tool from the resource data it found. It
* should not be modified by hand.
*/
package com.marakana;
public final class R {
public static final class attr {
}
public static final class drawable {
public static final int icon=0x7f020000;
}
public static final class layout {
public static final int main=0x7f030000;
}
public static final class string {
public static final int app_name=0x7f040001;
public static final int hello=0x7f040000;
}
}
Java源文件
Java代码是整个程序的驱动者。它会被编译为可执行格式,在Dalvik之上执行。
例 HelloWorld.java
package com.marakana;
import android.app.Activity;
import android.os.Bundle;
public class HelloWorld extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
}
仿真器
在仿真器(Emulator)上执行程序,与在真机上执行的效果是一样的。这是因为仿真器是机器码级别的仿真,其机器码与真机相同。
Tip:
模拟器(Simulator)与仿真器(Emulator)名字很像,但有着本质的不同。“仿真器”的意思是模仿真机执行机器码的过程,接近于“虚拟机”。而“模拟器”是在相对较高的层次上模拟代码的行为。Android SDK附带了一个基于QEMU的仿真器。
使用仿真器之前,我们需要创建一个Android Virtual Device(AVD)。最简单的方法是在Eclipse中打开Android Tool。

仿真机 vs 真机
在大多数情况下,应用在仿真器上执行,与在真机上是没有区别的。少数的例外情况则往往是因为难以模拟,比如传感器。一般的硬件相关特性比如电话呼叫、地理定位等等,都可以由仿真器模拟。
网友评论