• 沒有找到結果。

res:放置资源文件的目录

在文檔中 开放手机联盟 (頁 42-46)

src/com/example/android/helloactivity/HelloActivity.java:这是 JAVA 类文件,这个文件的路径 表示在 Andorid 的 JAVA 包的结构中的位置, 这个包的使用方式为

com.example.android.helloactivity。

第二部分: 编译的中间结果

这个 HelloActivity 工程经过编译后将生成

out/target/common/obj/APPS/He lloActivity_intermediates/ 目录, 这个目录中的内容都是 HelloActivity 工程相关的, 更具体地说都与 development/samples/HelloActivity/ 中的 Android.mk 文件相关。

classes.dex

是一个最重要的文件,它是给 Android 的 JAVA 虚拟机 Dalvik 运行的字节码文 件。

classes.jar

是一个 JAR 文件,JAR 的含义为 Java ARchive,也就是 Java 归档,是一种与平台

无关的文件格式,可将多个文件合成一个文件。解压缩之后的目录结构:(JAVA 标准编译得 到的类)

out/target/common/obj/APPS/He lloActivity_intermediates/

|-- classes.dex (字节码)

|-- classes.jar (JAR 文件)

|-- public_resources.xml (根据 resources 结构生成的 xml)

`-- src

|-- R.stamp

`-- com

`-- example

`-- android

`-- helloactivity

`-- R.java (resources 生成的文件)

7

各个以 class 为扩展名的文件,事实上是 JAVA 程序经过编译后的各个类的字节码。

第三部分: 目标 apk apk apk apk 文件

目标 apk 文件是 Android 的 JAVA 虚拟机 Dalvik 安装和运行的文件,事实上这个 apk 文件将 由编译的中间结果和原始文件生成。apk 文件的本质是一个 zip 包。这个 APK 包解压缩后的 目录结构如下所示:

值得注意的是,这里的 xml 文件经过了处理,和原始的文件不太一样,不能按照文本文件 的方式阅读。

|-- META-INF

| `-- MANIFEST.MF

`-- com

`-- example

`-- android

`-- helloactivity

|-- HelloActivity.class

|-- R$attr.class

|-- R$id.class

|-- R$layout.class

|-- R$string.class

`-- R.class

out/target/product/generic/obj/APPS/HelloActivity_intermediates/package.apk_FILES/

|-- AndroidManifest.xml

|-- META-INF

| |-- CERT.RSA

| |-- CERT.SF

| `-- MANIFEST.MF

|-- classes.dex

|-- res

| `-- layout

| `-- hello_activity.xml

`-- resources.arsc

8

第四部分: 源代码的各个文件

Android.mk 是整个工程的“Makefile”,其内容如下所示:

� LOCAL_PATH:= $(call my-dir)

� include $(CLEAR_VARS)

� LOCAL_MODULE_TAGS := samples

� # Only compile source java files in this apk.

� LOCAL_SRC_FILES := $(call all-java-files-under, src)

� LOCAL_PACKAGE_NAME := HelloActivity

� LOCAL_SDK_VERSION := current

� include $(BUILD_PACKAGE)

� # Use the following include to make our test apk.

� include $(call all-makefiles-under,$(LOCAL_PATH))

这个文件在各个 Android 的工程中都是类似的,其中 LOCAL_PACKAGE_NAME 表示了这 个包的名字。LOCAL_MODULE_TAGS 表示了模块的标,在这里使用的是

samples,正式的应用程序(packages 目录中的应用)中多使用 eng development。

AndroidManifest.xml 是这个 HelloActivity 工程的描述文件,其内容如下所示:

其中 package 用于说明这个包的名称,android:labeapplication 中的内容是表示这个应用程序 在界面上显示的标题,activity 中的 android:name 表示这个 Android 的活动的名称。

<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

package="com.example.android.helloactivity">

<application android:label="He llo, Activity!">

<activity android:name="He lloActivity">

<intent-filter>

<action android:name="android.intent.action.MAIN"/>

<category android:name="android.intent.category.LAUNCHER"/>

</intent-filter>

</activity>

</application>

</manifest>

9

写成

com.example.android.helloactivity 表示的是这个包的名称, 在文件的头部引入了两个包 android.app.Activity 是一个 Android 活动( Activity)包,每一个 Android 活动都需要继承 Activity 类。

包 android.os.Bundle 用于映射字符串的值。

onCreate()是一个重载的函数,在这个函数中实现应用程序创建的所执行的过程。其中 setContentView()设置当前的视图(View)。

设置的方法是使用一个文件,这个文件因此决定了视图中包含的内容。这里使用的是 R.layout.hello_activity,表示从 res/layout/目录中使用 hello_activity.xml 文件。

res/layout/hello_activity.xml 文件的内容如下所示:

其中定义了一个可编辑的文本( EditText),下面的各项其实是它的各种属性, android:text 表示这个文本的 内 容 ,string/hello_activity_text_text 表 示 找 到 相 应 的 文 件 , 也 就 是 res/value/string.xml 文 件 中 的 hello_activity_text_text 文本。

res/value/string.xml 的内容如下所示:

hello_activity_text_text 文本被 res/layout/hello_activity.xml 文件引用,正是应用程序运行时在 屏幕显示的文本。

package package package

package com.example.android.helloactivity;

import import import

import android.app.Activity;

import import import

import android.os.Bundle;

public public public

public classclassclassclass HelloActivity extendsextendsextendsextends Activity { public

public public

public HelloActivity() { }

@Override public public public

public voidvoidvoidvoid onCreate(Bundle savedInstanceState) { super

<?xml version="1.0" encoding="utf-8"?>

<EditText xmlns:android="http://schemas.android.com/apk/res/android"

android:id="@+id/text"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:textSize="18sp"

android:autoText="true"

android:capitalize="sentences"

android:text="@string/hello_activity_text_text" />

<?xml version="1.0" encoding="utf-8"?>

<resources>

<string name="hello_activity_text_text">He llo, World!</string>

</resources>

10

Android Android

Android Android ADB ADB ADB ADB 工具使用

adb(Android Debug Bridge)是 Android 提供的一个通用调试工具,借助这个工具,我妈可以管理设备或手机模 拟器的状态。

在文檔中 开放手机联盟 (頁 42-46)