一个标准的安卓项目(使用 Android Studio 和 Gradle 构建系统)具有一个清晰的目录结构,理解它对于高效开发至关重要。
项目根目录概览
当你打开一个安卓项目时,首先看到的是项目根目录,它通常包含以下文件和文件夹:
MyApp/ // 项目根目录
├── app/ // 最重要的模块,存放应用代码和资源
├── gradle/
├── build.gradle // 项目级别的 Gradle 配置
├── settings.gradle // 定义项目包含哪些模块
├── gradle.properties // 全局 Gradle 配置
├── local.properties // 本地环境配置(如 SDK 路径,自动生成,勿提交 Git)
└── ...
核心模块:app/ 目录详解
app 目录是每个应用模块的核心,我们绝大部分的开发工作都在这里进行。
app/
├── src/ // 源代码目录
│ └── main/ // 主要代码源集
│ ├── java/ // Java 源代码 (包名目录在此之下)
│ │ └── com/example/myapp/
│ ├── kotlin/ // Kotlin 源代码 (如果使用 Kotlin)
│ │ └── com/example/myapp/
│ ├── res/ // 资源文件 (Resources)
│ │ ├── drawable/ // 图片、形状等矢量/位图资源
│ │ ├── drawable-v24/ // 针对 API 24+ 的 drawable 资源
│ │ ├── mipmap/ // 应用图标(不同分辨率)
│ │ ├── layout/ // UI 布局文件 (.xml)
│ │ ├── values/ // 定义常量、字符串、颜色、样式等
│ │ │ ├── colors.xml
│ │ │ ├── strings.xml
│ │ │ ├── styles.xml
│ │ │ └── dimens.xml
│ │ ├── menu/ // 菜单布局文件
│ │ └── ...
│ ├── assets/ // 原始资源文件(如数据库、字体),通过 AssetManager 访问
│ ├── AndroidManifest.xml // 应用清单文件(声明组件、权限等)
│ └── res/raw/ // 原始资源文件(如音频),会生成资源 ID
├── build.gradle // 模块级别的 Gradle 配置(依赖、版本等)
└── ...
1. src/main/java/ 或 src/main/kotlin/
- 作用:存放所有的 Java 或 Kotlin 源代码。
- 说明:其下的目录结构对应你的包名(Package Name),例如
com.example.myapp。你创建的 Activity、Fragment、ViewModel、Adapter 等所有类文件都放在这里。
2. src/main/res/ - 资源目录
这是资源管理的核心,所有非代码资源都放在这里。Android 会根据设备配置(语言、屏幕尺寸、版本等)自动选择最匹配的资源。
-
drawable/:- 存放图片资源(PNG, JPEG, WebP)和 XML 定义的图形(如按钮背景、形状)。
- 通常会有不同分辨率的版本,如
drawable-hdpi,drawable-xhdpi等,但推荐使用drawable目录配合 Vector Drawable(矢量图)。
-
mipmap/:- 专门用于存放应用图标。
- 同样有不同分辨率的版本(
mipmap-hdpi,mipmap-xhdpi等)。 - 与
drawable分离的好处是,系统在缩放图标时可以有更好的优化。
-
layout/:- 存放所有 UI 布局的 XML 文件,如
activity_main.xml,item_list.xml。 - 定义了用户界面的结构和组件。
- 存放所有 UI 布局的 XML 文件,如
-
values/:- 存放各种“值”的 XML 文件,用于将硬编码内容与代码分离,便于管理和国际化。
strings.xml:定义所有文本字符串。支持多语言(如values-zh/strings.xml为中文)。colors.xml:定义颜色常量。styles.xml:定义 UI 组件的样式和主题。dimens.xml:定义尺寸常量(如边距、字体大小)。
-
menu/:存放用于定义选项菜单、上下文菜单的 XML 文件。
3. src/main/AndroidManifest.xml
- 作用:应用的“身份证”和“说明书”。
- 包含内容:
- 应用的包名。
- 声明所有组件(Activity, Service, BroadcastReceiver, ContentProvider)。
- 申请应用所需的权限(如网络访问、相机等)。
- 指定应用的最低和目标 API 级别。
- 声明应用的主启动器 Activity。
4. src/main/assets/ 和 res/raw/
- 相同点:都用于存放原始文件。
- 不同点:
assets/中的文件不会被编译,通过file:///android_asset/路径或AssetManager访问。目录结构可以自定义。res/raw/中的文件会被编译,并会生成一个资源 ID(R.raw.filename),访问更方便。文件名必须合法(不能有空格等)。
5. app/build.gradle
这是模块级别的构建配置文件,极其重要。
// 示例
plugins {
id 'com.android.application'
id 'org.jetbrains.kotlin.android'
}
android {
compileSdk 33 // 编译时使用的 SDK 版本
defaultConfig {
applicationId "com.example.myapp" // 应用唯一标识
minSdk 21 // 支持的最低安卓版本
targetSdk 33 // 为之优化的目标安卓版本
versionCode 1 // 内部版本号(整数)
versionName "1.0" // 用户看到的版本号
}
buildTypes {
release {
isMinifyEnabled true // 是否启用代码混淆
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
dependencies { // 项目依赖
implementation 'androidx.core:core-ktx:1.9.0'
implementation 'androidx.appcompat:appcompat:1.5.1'
implementation 'com.google.android.material:material:1.7.0'
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
}
其他重要文件和目录
gradle/目录:包含 Gradle Wrapper 的 JAR 文件,允许你在没有安装 Gradle 的情况下构建项目。- 项目根目录的
build.gradle:定义所有模块共用的仓库和依赖。 settings.gradle:告诉 Gradle 在构建项目时应包含哪些模块。例如include ‘:app’。local.properties:由 Android Studio 自动生成,包含本机 SDK 路径等本地环境配置。此文件不应提交到版本控制系统(如 Git)。proguard-rules.pro:位于app/目录下,用于配置代码混淆和压缩规则。
总结
| 目录/文件 | 主要用途 |
|---|---|
app/src/main/java/ | Java 源代码,项目的逻辑核心。 |
app/src/main/kotlin/ | Kotlin 源代码(现代安卓开发首选)。 |
app/src/main/res/layout/ | UI 布局文件,定义界面长什么样。 |
app/src/main/res/values/ | 资源常量(字符串、颜色、样式等),实现代码与资源分离。 |
app/src/main/res/drawable/ | 图片和图形资源。 |
app/src/main/res/mipmap/ | 应用图标。 |
app/src/main/AndroidManifest.xml | 应用配置清单,声明组件和权限。 |
app/build.gradle | 模块构建配置,管理依赖、版本号等。 |
理解这个目录结构,你就能快速定位到任何类型的文件,并知道如何组织你的代码和资源,这是成为一名高效安卓开发者的第一步。

650

被折叠的 条评论
为什么被折叠?



