跳转至

02 项目结构解析

跑通第一个项目后,我们来拆解一个安卓工程(Android 视图下)各部分是什么。

2.1 顶层结构

MyFirstApp/
├── app/                    # 主模块,绝大多数代码都在这
├── gradle/                 # Gradle 版本配置
├── build.gradle.kts        # 项目级构建脚本(或 .gradle)
├── settings.gradle.kts     # 声明包含哪些模块
└── gradlew                 # Gradle 命令行包装器(Linux/macOS 用 ./gradlew)

2.2 app 模块内部

app/
├── src/
│   ├── main/
│   │   ├── java/com/example/myfirstapp/
│   │   │   └── MainActivity.java    # Java 源码
│   │   ├── res/                     # 资源:布局/图片/文字/颜色
│   │   │   ├── layout/              # XML 布局文件
│   │   │   ├── values/              # strings.xml / colors.xml / themes.xml
│   │   │   ├── drawable*/           # 图片、形状
│   │   │   └── mipmap*/             # 应用图标
│   │   └── AndroidManifest.xml      # 清单
│   └── test/ / androidTest/         # 单元测试 / 仪器测试
├── build.gradle.kts                # app 模块构建脚本(依赖、SDK 版本)
└── proguard-rules.pro              # 混淆规则(发布用)

2.3 AndroidManifest.xml 要点

<manifest xmlns:android="http://schemas.android.com/apk/res/android">
    <application
        android:label="@string/app_name"   <!-- 应用显示名 -->
        android:icon="@mipmap/ic_launcher"> <!-- 应用图标 -->

        <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>
  • 每个 Activity 都要在这里注册,忘了注册启动会崩(ClassNotFoundException/无法找到 Activity);
  • MAIN + LAUNCHER 组合表示这是 App 的入口 Activity;
  • Android 12+ 要求显式声明 android:exported。

2.4 res 资源:代码怎么引用

资源文件编译后都能用 R.xxx.yyy 引用(R 是自动生成的资源类):

资源 例子 Java 里引用
布局 res/layout/activity_main.xml R.layout.activity_main
文字 res/values/strings.xml 的 <string name="app_name"> R.string.app_name
颜色 res/values/colors.xml 的 <color name="red"> R.color.red
图片 res/drawable/logo.png R.drawable.logo

为什么要把文字放 strings.xml 而不是写死在代码里? 方便多语言、统一管理,也符合规范。

2.5 Gradle:依赖与 SDK 版本

app/build.gradle.kts 关键部分:

android {
    namespace = "com.example.myfirstapp"   // 包名
    compileSdk = 34                         // 编译用的 SDK 版本

    defaultConfig {
        applicationId = "com.example.myfirstapp"  // 应用唯一 ID
        minSdk = 24                              // 最低支持版本
        targetSdk = 34                           // 目标版本
        versionCode = 1                          // 版本号(整数,升级要递增)
        versionName = "1.0"                      // 版本名(给人看)
    }
}

dependencies {
    implementation("androidx.appcompat:appcompat:1.6.1")
    implementation("com.google.android.material:material:1.11.0")
    // 想加第三方库就在这里加,比如图片加载 Glide、网络 OkHttp
}

新版 AS 用 Kotlin DSL(.kts);老项目可能是 Groovy(.gradle),写法略不同但概念一样。想加第三方依赖,去 https://mvnrepository.com 或库官网复制坐标即可。


本章练习:打开自己的项目,找到 AndroidManifest.xml、MainActivity.java、activity_main.xml、build.gradle.kts,对照本文各看一遍,把 versionName 改成 0.1 试试同步。

🏠 返回总站