【新手入门】Android Studio 项目结构拆解,快速理解文件作用!
目 录
一、【Project】视图下项目结构(真实目录)
二、【Android】视图下项目结构
三、【app/】下重要文件解析
1、 build.gradle
2、AndroidManifest.xml
3、res/
作为刚刚接触Android开发的小白,使用Android Studio创建项目后,对于项目中的各种文件就是两眼一抹黑,因此把自己的学习记录在这篇笔记中。
一、【Project】视图下项目结构(真实目录)
如图1所示是Android Studio项目真实目录。

MyApp/ ← 项目根目录
├── .gradle/ ← Gradle 构建缓存文件夹
├── .idea/ ← AS项目配置文件(编码格式、依赖索引等)
│
├── app/ ← 主模块目录(Module,存放源码和资源)
│ ├── build/ ← 编译生成的中间文件(自动生成,可删除)
│ ├── libs/ ← 第三方库的 .jar / .aar 文件
│ ├── src/ ← 源码目录
│ │ ├── main/ ← 主代码和资源
│ │ │ ├── java/ ← Java 或 Kotlin 源码
│ │ │ ├── res/ ← 资源文件(布局、图片、字符串等)
│ │ │ └── AndroidManifest.xml ← 应用清单文件(组件声明、权限配置)
│ │ ├── androidTest/ ← Android 仪器化测试(UI 测试)
│ │ └── test/ ← 本地单元测试代码
│ │
│ ├── build.gradle ← 模块级 Gradle 配置文件(依赖、编译参数)
│ └── proguard-rules.pro ← ProGuard 混淆规则文件
│
├── gradle/ ← Gradle Wrapper 相关文件
│ ├── wrapper/
│ │ ├── gradle-wrapper.jar ← Gradle Wrapper 的可执行 JAR(执行构建)
│ │ └── gradle-wrapper.properties ← Wrapper 配置文件(Gradle 版本、下载路径)
│ └── libs.versions.toml ← Gradle 版本目录文件(管理依赖版本号)
│
├── .gitignore ← Git 忽略规则(哪些文件不提交到仓库)
├── build.gradle ← Gradle配置文件(全局插件、仓库、依赖)
├── gradle.properties ← Gradle 全局属性(构建优化、内存设置、全局变量)
├── local.properties ← 本地配置文件(SDK 路径、私有信息,不提交到 Git)
├── settings.gradle ← 定义项目包含的模块(多模块工程时在这里注册)
│
├── gradlew ← Unix/Linux Gradle 执行脚本
├── gradlew.bat ← Windows Gradle 执行脚本
└── External Libraries ← AS自动管理的外部依赖库(JDK、第三方库等)
二、【Android】视图下项目结构
Android视图是对物理文件结构的逻辑整理,更关注功能和用途分类,隐藏了配置文件,源代码以包结构显示,更贴合Java开发习惯。图2所示为Android视图下的项目结构。

MyApp
├── manifests ← 应用清单文件集合(主要是 AndroidManifest.xml)
│ └── AndroidManifest.xml ← 应用声明和权限配置
│
├── java ← 应用的Java/Kotlin源代码(按包名显示)
│ └── com.example.myapp ← 按包划分的源码目录
│ ├── MainActivity.java
│ └── ...
│
├── res ← 资源文件,按类型分类
│ ├── drawable ← 图片资源(png、jpg、xml等)
│ ├── layout ← 布局文件(XML定义UI界面)
│ ├── values ← 字符串、颜色、尺寸、样式等资源配置
│ ├── mipmap ← 启动图标资源
│ └── ... ← 其他资源目录(menu、raw等)
│
├── build.gradle (Project) ← 项目级Gradle脚本
├── build.gradle (Module: app) ← 模块级Gradle脚本
├── settings.gradle ← 项目模块设置
├── gradle.properties ← Gradle构建参数配置
│
└── External Libraries ← 项目依赖的外部库(JDK、第三方库等)
三、【app/】下重要文件解析
1、 build.gradle
app/build.gradle是当前模块的Gradle构建配置文件,配置依赖库、编译选项、打包配置等。了解该文件能够帮助解决常见构建问题。(说多了都是泪😢)
// 指定构建项文件所需的插件
plugins {alias(libs.plugins.android.application) // 所有的项目都需要该插件(com.android.application)
}// 模块构建配置
android {// 应用的命名空间namespace 'com.example.myapplication'// 编译时使用的 Android SDK 版本compileSdk 36defaultConfig {// 应用的唯一标识符(正式发布时不能随便改)applicationId "com.example.myapplication"// 支持的最低 Android 系统版本(API 级别)minSdk 24// 目标适配的 Android 系统版本(API 级别)targetSdk 36// 应用的内部版本号(整数,提交商店时用来区分版本)versionCode 1// 应用的对外版本名(字符串,用户可见的版本号)versionName "1.0"// 指定 Android 仪器化测试运行器testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"}buildTypes {// release 构建类型(用于正式打包发布)release {// 是否启用代码混淆和压缩(false 表示不启用)minifyEnabled false// 混淆配置文件(默认规则 + 自定义规则)proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'}}compileOptions {// Java 源代码兼容版本sourceCompatibility JavaVersion.VERSION_11// Java 字节码兼容版本targetCompatibility JavaVersion.VERSION_11}buildFeatures {// 启用 ViewBinding 功能(方便绑定布局文件)viewBinding true}
}// 项目依赖
dependencies {// implementation定义项目主源代码的依赖implementation libs.appcompatimplementation libs.materialimplementation libs.constraintlayoutimplementation libs.navigation.fragmentimplementation libs.navigation.ui// testImplementationd定义项目测试(test目录下)代码依赖testImplementation libs.junit// androidTestImplementation定义AndroidTest目录下的代码依赖androidTestImplementation libs.ext.junitandroidTestImplementation libs.espresso.core
}
2、AndroidManifest.xml
AndroidManifest.xml文件是 Android 项目的系统清单文件,它用于控制 Android 应用的名称、图标、访问权限等整体属性。除此之外 Andriod 应用的 Activity、Service、ContentProvider、BroadcastRecevier这4大组件都需要在该文件中配置。
<!-- 声明 XML 文件的版本与编码 -->
<?xml version="1.0" encoding="utf-8"?><!-- manifest 元素是 Android 应用清单文件的根标签xmlns:android -> 声明 Android 的 XML 命名空间xmlns:tools -> 声明 tools 命名空间
-->
<!-- 指定该应用包名,包名用于唯一标识该应用 -->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"><!-- 指定应用的图标、标签、圆图标等--><applicationandroid:allowBackup="true"android:dataExtractionRules="@xml/data_extraction_rules"android:fullBackupContent="@xml/backup_rules"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:roundIcon="@mipmap/ic_launcher_round"android:supportsRtl="true"android:theme="@style/Theme.MyApplication"><!-- 声明一个 Activity(应用的界面组件) --><activityandroid:name=".MainActivity"android:exported="true"android:theme="@style/Theme.MyApplication"><!-- Intent 过滤器:定义该 Activity 能响应的 Intent 类型 --><intent-filter><!-- MAIN 表示这是应用的入口(主启动点) --><action android:name="android.intent.action.MAIN" /><!-- LAUNCHER 指定加载该应用时运行该activity --><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity></application></manifest>
3、res/
res 目录存放 Android 项目的各种资源文件,如下表所示为常见资源类别。
目录名 | 作用 / 存放内容 | 常见文件示例 |
---|---|---|
drawable/ | 位图图像、形状图形、XML 形状定义等可绘制资源 |
|
mipmap/ | 启动图标资源(不同分辨率),优先用于 |
|
layout/ | 布局文件(XML 定义界面结构) |
|
values/ | 各类 XML 常量定义,如字符串、颜色、尺寸、样式等 |
|
menu/ | 菜单资源(选项菜单、上下文菜单等) |
|
xml/ | 其他任意 XML 配置文件 |
|
raw/ | 原始文件(音频、视频、二进制文件等,不会被编译处理) |
|
font/ | 自定义字体文件 |
|
color/ | 独立颜色资源文件(API 23+) |
|
❗ 在 Android 中,drawable 和 mipmap 都可按屏幕密度划分为
-ldpi
(低,~120dpi)、-mdpi
(中,~160dpi)、-hdpi
(高,~240dpi)、-xhdpi
(超高,~320dpi)、-xxhdpi
(超超高,~480dpi)、-xxxhdpi
(超超超高,~640dpi)等子目录,用于适配不同分辨率的图片资源,其中 drawable 主要存放普通界面图片,而 mipmap 主要存放应用启动图标,并针对启动器显示进行缓存与缩放优化,以确保在各种设备上图标清晰显示。