Skip to content

Android - Hello World 示例

让我们开始 Android 开发之旅。在编写您的第一个示例之前,请确保您的 Android 开发环境已正确设置,具体请参阅“Android - 环境设置”教程。本教程假设您对 Android Studio(Android 开发的官方 IDE)有基本的了解。

现在我们将创建一个简单的 Android 应用,使用当前的最佳实践显示“Hello, Modern Android!”。

第一步是使用 Android Studio 创建一个新的 Android 应用。启动 Android Studio。如果您看到欢迎屏幕,点击“New Project”。

  1. 选择您的项目: 选择项目模板。对于初学者来说,“Phone and Tablet”选项卡下的“Empty Activity”或“Empty Views Activity”(用于基于 XML 的 UI)或“Empty Compose Activity”(用于 Jetpack Compose UI)是一个不错的起点。对于这个经典示例,我们假设选择“Empty Views Activity”。

  2. 配置您的项目:

  • 名称: 输入您的应用名称,例如“HelloWorldModern”。
  • 包名 (Package name): 这是您应用的唯一标识符,通常采用反向域名格式(例如 com.example.helloworldmodern)。如果提供了您的姓名和公司域名,Android Studio 会根据它们生成一个。
  • 保存位置: 选择保存项目的位置。
  • 语言: 在 Kotlin(推荐)或 Java 之间选择。我们将使用 Kotlin 作为主要示例,因为它是 Google 推荐的 Android 开发语言,但在需要清晰说明时提供 Java 对等示例。
  • 最低 SDK (Minimum SDK): 选择您的应用将支持的最低 Android 版本。通常选择 API 26 (Android 8.0 Oreo) 或 API 28 (Android 9.0 Pie),以平衡广泛的设备覆盖范围与现代功能。选择较低的 API 级别可以覆盖更多设备,但可能需要更多的向后兼容代码。较高的 API 级别允许使用较新的功能而无需变通方法,但会减少设备覆盖范围。IDE 通常会提供每个 API 级别的设备覆盖统计信息。
  • 构建配置语言 (Build configuration language): 新项目通常首选 Kotlin DSL (build.gradle.kts),但 Groovy DSL (build.gradle) 也常见。
  1. 点击“Finish”。Android Studio 将设置您的项目并与 Gradle 同步。这可能需要一些时间。

在运行您的应用之前,请熟悉现代 Android 项目中的关键目录和文件(使用 Project 窗口中的“Android”视图):

序号文件夹/文件 及描述
1app/manifests/AndroidManifest.xml
这是清单文件 (manifest file)。它描述了应用的基本特征,定义了其每个组件(activities、services 等),声明了权限,并指定了所需的硬件/软件功能。
2app/java/<your.package.name>
包含您的 Kotlin (.kt) 或 Java (.java) 源文件。默认情况下,它包含一个 MainActivity.kt(或 .java)文件,这是应用启动时启动的入口点 Activity。
3app/java/<your.package.name> (androidTest)
用于 Android 检测测试。
4app/java/<your.package.name> (test)
用于本地单元测试。
5app/res
包含所有非代码资源:
drawable/ - 用于矢量 Drawable(定义形状的 XML)和其他通用 Drawable 资源(位图、九宫格图)。对于密度特定的位图,使用诸如 drawable-mdpi/、drawable-hdpi/ 等文件夹。
layout/ - 定义应用用户界面结构(例如 activity_main.xml)的 XML 文件。如果使用 Jetpack Compose,UI 在 java 目录下的 Kotlin 文件中定义。
mipmap-<密度>/(例如 mipmap-hdpi、mipmap-xxxhdpi)- 用于密度特定的应用启动器图标。现代应用通常使用自适应图标。
values/ - 包含简单值的 XML 文件:strings.xml(文本字符串)、colors.xml(颜色定义)、dimens.xml(尺寸)、styles.xml 和 themes.xml(UI 外观)。
这里还可以存在其他资源类型,如 anim/、font/、menu/、raw/、xml/。
6Gradle Scripts
包含构建配置文件:
build.gradle.kts(或 build.gradle)(项目:YourProjectName)- 整个项目的顶级构建文件。配置仓库和全局插件版本。
build.gradle.kts(或 build.gradle)(模块:app)- 模块级构建文件。指定 SDK 版本(compileSdk、minSdk、targetSdk)、applicationId、版本控制(versionCode、versionName)、依赖项以及 app 模块的其他构建设置。
settings.gradle.kts(或 settings.gradle)- 声明包含的模块和插件管理仓库。
gradle/libs.versions.toml(可选但常见)- 用于集中管理依赖项版本的版本目录。

以下部分简要概述了一些重要的应用文件。

主 Activity 文件(Kotlin 与 AndroidX)

Section titled “主 Activity 文件(Kotlin 与 AndroidX)”

主 Activity 代码,通常是 MainActivity.kt(如果您选择了 Kotlin),是应用主要用户界面和逻辑所在的地方。它被转换为 Dalvik 可执行格式 (.dex) 并在 Android Runtime (ART) 上运行。这是一个使用 AndroidX 库的默认示例:

package com.example.helloworldmodern
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}
}

这是 Java 对等示例:

package com.example.helloworldmodern;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}

要点:

  • androidx.appcompat.app.AppCompatActivity: 这是 AndroidX 库中的一个基类,为在旧 Android 版本上使用现代功能提供兼容性。
  • onCreate(savedInstanceState: Bundle?): 这是一个生命周期回调方法。它在 Activity 首次创建时调用。您应在此处执行应在 Activity 的整个生命周期中只发生一次的基本应用启动逻辑。
  • setContentView(R.layout.activity_main): 这将 Activity 与其 UI 布局关联起来,该布局定义在 res/layout/activity_main.xml 中。R 是一个自动生成的类,提供对应用资源的访问。

每个 Android 应用在其根目录中都必须有一个 AndroidManifest.xml 文件(具体来说是 app/src/main/AndroidManifest.xml)。此文件向 Android 构建工具、Android 操作系统和 Google Play 提供关于应用的基本信息。例如,默认的清单文件可能如下所示:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.helloworldmodern">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.HelloWorldModern">
<activity
android:name=".MainActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
  • <manifest>: 根元素。此处的 package 属性传统上是唯一 ID,尽管现代 Gradle 构建通常在 build.gradle.kts 中定义 applicationId,该 ID 会覆盖此清单包名用于打包和 Play 商店目的。
  • <application>: 声明应用。诸如 android:icon、android:label 和 android:theme 之类的属性定义了应用的默认图标、标签和主题,通常引用 res/mipmap/ 和 res/values/ 中的资源。
  • <activity>: 声明一个 activity。android:name=".MainActivity" 指定了类名(相对于包)。android:exported="true" 表示此 activity 可以由其他应用的组件启动(对于启动器 activity 是必需的)。
  • <intent-filter>: 指定 Activity(或其他组件)可以响应的 Intent 类型。
    • <action android:name="android.intent.action.MAIN" />: 声明此 activity 为应用的入口点。
    • <category android:name="android.intent.category.LAUNCHER" />: 声明此 activity 应在系统的应用启动器中列出。

清单文件也是声明权限、Service、BroadcastReceiver、Content Provider 和其他应用组件的地方。

strings.xml 文件(位于 res/values/ 中)集中管理所有用户可见的文本。这对于国际化(翻译您的应用)至关重要,并使文本管理更容易。示例:

<resources>
<string name="app_name">HelloWorldModern</string>
<string name="hello_message">Hello, Modern Android!</string>
</resources>

您可以在布局 XML(例如 @string/hello_message)或 Kotlin/Java 代码(例如 getString(R.string.hello_message))中引用这些字符串。

res/layout/ 中的 activity_main.xml 文件定义了 MainActivity 的 UI。现代 Android 开发通常使用 ConstraintLayout 来实现灵活高效的布局,尽管 LinearLayout 或 FrameLayout 对于更简单的 UI 也很适用。这是一个使用 ConstraintLayout 显示 TextView 的示例:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_message"
android:textSize="24sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
  • androidx.constraintlayout.widget.ConstraintLayout: 一个强大且灵活的布局管理器。UI 元素(View,如 TextView)通过定义相对于父视图或其他同级视图的约束来定位。
  • TextView: 用于显示文本的 UI 元素。
    • android:text="@string/hello_message": 从 strings.xml 设置文本。
    • app:layout_constraint...: 定义 TextView 在 ConstraintLayout 中如何受约束(此处为居中)的属性。
  • tools:context=".MainActivity": 由 Android Studio 的布局编辑器使用,以了解此布局与哪个 Activity 相关联,从而启用预览和 lint 检查。

或者,如果您选择了“Empty Compose Activity”,您的 UI 将使用 Jetpack Compose 函数在 MainActivity.kt 文件中的 Kotlin 代码中以声明方式定义,并且可能没有 activity_main.xml 文件。

要运行您的应用:

  1. 选择部署目标:
  • 模拟器 (Emulator): 如果您没有物理 Android 设备,可以通过 Tools > AVD Manager 创建 Android 虚拟设备 (AVD)。选择设备定义和系统镜像。
  • 物理设备 (Physical Device): 通过 USB 连接您的 Android 手机/平板电脑。在设备上启用开发者选项和 USB 调试。(搜索“启用 Android 开发者选项”以获取步骤)。
  1. 运行: 点击 Android Studio 工具栏中的“运行”按钮(绿色播放图标),或选择 Run > Run ‘app’。

  2. Android Studio 将构建您的应用,将其安装在选定的目标(模拟器或设备)上,然后启动它。您应该会看到您的“Hello, Modern Android!”消息。

恭喜!您已开发并运行了您的第一个现代 Android 应用。继续探索 Android 的功能,成为一名熟练的开发者。如需进一步学习,请查阅官方 Android 文档:https://developer.android.com/docs