美文网首页
210612.《Learning Android中文版》学习笔记

210612.《Learning Android中文版》学习笔记

作者: 风往北吹_风往北吹 | 来源:发表于2021-06-13 09:55 被阅读0次

《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,如下:


安装新软件
  1. 打开Eclipse,选择 Help → Install New Software。
  2. 进入Available Software对话框,单击Add。
  3. 进入Add Site对话框,在"Name"栏输入一个远程站点的名字(比如,"Android Plugin")。
  4. 在"Location"栏,输入这个URL:https://dl-ssl.google.com/android/eclipse/
  5. 单击OK。
  6. 回到Available Software对话框,这时你可以在这个列表中发现多了一个"Developer Tools"。选择它也就自动嵌套选择了Android DDMS和Android Development Tools,单击Next。
  7. 在出现的Install Details对话框中,前面选择的Android DDMS和Android Development Tools都列了出来。单击Next,阅读并确认许可条款,安装依赖的插件,单击Finish。
  8. 等待Eclipse自动重启。
  9. 重启后Eclipse会弹出对话框,让你设置Android SDK的文件目录,并会从网络安装相应的软件包。

Note:

  1. 如果下载插件时遇到问题,可以尝试将URL中的"https"替换为"http"(使用https往往是出于安全目的)。
  2. 如果是因为墙无法安装,只能从网上其他平台下载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对话框,分别进行如下设置:

  1. 填写"Project name"。这是个Eclipse概念:Eclipse把一切皆组织为项目(project),而项目名只能是一个单词。在命名上,我个人比较喜欢CamelCase风格。在此输入:HelloWorld。
  2. 选择"build target",它为构建工具指明目标平台的版本。其中罗列了所有可用的目标平台,以及SDK中附带的扩展。在这里可以选择一个较新的版本,比如Android 2.2(留意不要选择Google APIs,它们是Google的Web服务在Android平台上的专有扩展)。
  3. 接下来设置project属性。其中的"application name"也就是你应用的英文名字,随便写上就好,比如"Hello, World!!!"。
  4. "package name"是个Java中的概念。在Java中,源码都是组织为一个个的package,用以表示Java对象在不同类中的可见性,是个很重要的概念。在Android开发中,package作为应用程序签名的基本单位,也是很重要的。它的命名规范为逆序的域名,后跟可选的子域名。比如我有个域名是example.com,要编写一个计算器(caculator)的应用,那么package的名字就可以是com.example.caculator。
  5. "activity"一项是可选的。目前我们还没讲到Activity(参见第六章,Android用户界面),姑且把它看作是程序的界面即可。Activity通过Java的类来表示,因此它的名字也同样遵循Java中类的命名规范:首字母大写,对多个单词使用CamelCase命名规范。在此输入HelloWorld作为Activity的名字。
  6. "minimum SDK version"是这一应用所支持目标平台的最低版本,以API Level为单位。若想要得到较高的兼容性,就选择一个较低的版本。在这里我们不需要考虑兼容性,因此选择8,对应Android 2.2。
  7. 3.2. "New Android Project窗口" 最后单击Finish按钮,Eclipse就会新建出一个项目。接下来,我们依次观察一下在这一环节中新建出来的文件。
New Android Project窗口

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。

Android SDK与AVD Manager

仿真机 vs 真机

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

相关文章

网友评论

      本文标题:210612.《Learning Android中文版》学习笔记

      本文链接:https://www.haomeiwen.com/subject/mafieltx.html