Android Studio 项目文件夹结构详解

文章目录

    • 一、项目视图概览
      • [1. Android 视图(简化视图)](#1. Android 视图(简化视图))
      • [2. Project 视图(完整物理结构)](#2. Project 视图(完整物理结构))
    • 二、核心目录详解
      • [1. 项目根目录文件](#1. 项目根目录文件)
      • [2. app 模块目录(主模块)](#2. app 模块目录(主模块))
        • [2.1 `manifests/`](#2.1 manifests/)
        • [2.2 `java/`](#2.2 java/)
        • [2.3 `res/` - 资源目录](#2.3 res/ - 资源目录)
        • [2.4 `assets/`](#2.4 assets/)
        • [2.5 `build.gradle` (模块级)](#2.5 build.gradle (模块级))
    • 三、构建系统相关目录
      • [1. `.gradle/`](#1. .gradle/)
      • [2. `build/`](#2. build/)
      • [3. `gradle/`](#3. gradle/)
    • 四、多模块项目结构
    • 五、特殊目录和文件
      • [1. `proguard-rules.pro`](#1. proguard-rules.pro)
      • [2. `res/values/` 下的配置文件](#2. res/values/ 下的配置文件)
      • [3. `res/xml/`](#3. res/xml/)
    • 六、最佳实践
    • 七、常见问题

Android Studio 的项目结构遵循一定的规范和约定,了解这些结构对于高效开发至关重要。下面我将详细介绍标准的 Android 项目文件夹结构及其各部分功能。

一、项目视图概览

在 Android Studio 中,可以通过多种视图查看项目结构,最常用的是 Android 视图Project 视图

1. Android 视图(简化视图)

复制代码
项目名称/
├── app/
│   ├── manifests/
│   ├── java/
│   ├── res/
│   └── Gradle Scripts/
├── Gradle Scripts/
└── 其他模块/

2. Project 视图(完整物理结构)

复制代码
项目名称/
├── .gradle/             // Gradle 构建系统生成的文件
├── .idea/              // IDE 配置文件
├── app/                // 主模块
│   ├── build/          // 构建输出
│   ├── libs/           // 本地库文件
│   ├── src/            // 源代码和资源
│   │   ├── androidTest // 仪器测试
│   │   ├── main/       // 主源代码
│   │   │   ├── assets/ // 原始资源文件
│   │   │   ├── java/   // Java/Kotlin 源代码
│   │   │   ├── res/    // 应用资源
│   │   │   └── AndroidManifest.xml
│   │   └── test/       // 单元测试
│   └── build.gradle    // 模块级构建配置
├── gradle/             // Gradle 包装器文件
├── build/              // 项目级构建输出
└── settings.gradle     // 项目设置文件

二、核心目录详解

1. 项目根目录文件

文件/目录 说明
settings.gradle 定义项目包含哪些模块
build.gradle (项目级) 项目级别的构建配置
gradle.properties Gradle 配置属性
local.properties 本地环境配置(SDK路径等)
gradlew / gradlew.bat Gradle 包装器脚本

2. app 模块目录(主模块)

2.1 manifests/

包含 AndroidManifest.xml 文件,定义:

  • 应用包名
  • 组件声明(Activity, Service等)
  • 权限要求
  • 应用元数据
2.2 java/

源代码目录,通常包含三个子目录:

  • main/java/ - 主源代码
  • test/java/ - 本地单元测试(JUnit)
  • androidTest/java/ - 仪器化测试(运行在设备上)
2.3 res/ - 资源目录
复制代码
res/
├── drawable/       // 位图和矢量图
├── drawable-v24/   // API 24+特定资源
├── layout/         // UI布局文件
├── mipmap/         // 应用图标(不同密度)
├── values/         // 简单值资源
│   ├── colors.xml  // 颜色定义
│   ├── strings.xml // 字符串资源
│   ├── styles.xml  // 样式定义
│   └── dimens.xml  // 尺寸定义
├── anim/           // 动画资源
├── font/           // 字体文件
├── raw/            // 原始资源文件
└── xml/            // 其他XML配置
2.4 assets/

存放原始资源文件,与 res/ 不同:

  • 文件会按原样打包到APK中
  • 需要通过 AssetManager 访问
  • 适合存放数据文件、游戏资源等
2.5 build.gradle (模块级)

模块级别的构建配置,包含:

  • 应用插件(com.android.application/library)
  • android 配置(compileSdkVersion, defaultConfig等)
  • 依赖项(dependencies)

三、构建系统相关目录

1. .gradle/

Gradle 构建系统生成的文件,包括:

  • 构建缓存
  • 守护进程文件
  • 通常不需要手动修改

2. build/

构建输出目录,包含:

  • outputs/ - 生成的APK/AAB文件
  • intermediates/ - 中间文件
  • reports/ - 构建报告
  • tmp/ - 临时文件

3. gradle/

包含 Gradle 包装器文件:

  • wrapper/gradle-wrapper.jar - 包装器实现
  • wrapper/gradle-wrapper.properties - 配置使用的Gradle版本

四、多模块项目结构

大型项目通常采用多模块结构:

复制代码
项目名称/
├── app/                // 主应用模块
├── feature-auth/       // 功能模块(如认证)
├── library-core/       // 核心库模块
├── library-network/    // 网络库模块
└── build.gradle        // 项目级配置

每个模块都有自己的 build.gradle 和结构,类似于主模块。

五、特殊目录和文件

1. proguard-rules.pro

代码混淆规则文件,用于发布构建。

2. res/values/ 下的配置文件

文件 用途
strings.xml 字符串资源
colors.xml 颜色定义
dimens.xml 尺寸定义
styles.xml 样式和主题
arrays.xml 数组资源
attrs.xml 自定义属性

3. res/xml/

用于存放各种XML配置文件,如:

  • 网络安全性配置
  • 首选项配置
  • 备份规则

六、最佳实践

  1. 合理组织包结构

    • 按功能而非类型分包

    • 示例:

      复制代码
      com.example.app/
      ├── auth/          // 认证相关
      ├── home/          // 首页相关
      ├── profile/       // 个人资料
      ├── data/          // 数据层
      │   ├── local/     // 本地数据
      │   └── remote/    // 远程数据
      └── utils/         // 工具类
  2. 资源文件命名

    • 使用小写字母和下划线:btn_submit.xml
    • 前缀表明用途:ic_(图标), bg_(背景)等
  3. 模块化设计

    • 将独立功能拆分为模块
    • 公共代码提取为库模块
  4. 版本控制忽略

    合理的 .gitignore 应包含:

    复制代码
    .gradle/
    .idea/
    build/
    local.properties
    *.iml

七、常见问题

  1. 找不到R文件

    • 清理并重建项目(Build → Clean Project)
    • 检查XML资源文件是否有错误
  2. 资源文件冲突

    • 确保同名资源不在同一目录
    • 使用资源限定符(如 drawable-en/)
  3. 模块依赖问题

    • 确保在 settings.gradle 中包含了所有模块
    • 检查模块 build.gradle 中的依赖声明
  4. 构建速度慢

    • 启用Gradle缓存:org.gradle.caching=true
    • 配置Gradle守护进程内存

通过理解Android Studio项目结构,您可以更高效地组织代码和资源,构建可维护的Android应用程序。

相关推荐
zizisuo13 小时前
解决在使用Lombok时maven install 找不到符号的问题
java·数据库·maven
moshumu114 小时前
局域网访问Win11下的WSL中的jupyter notebook
ide·python·深度学习·神经网络·机器学习·jupyter
笨蛋少年派14 小时前
JAVA基础语法
java·开发语言
Haooog14 小时前
654.最大二叉树(二叉树算法)
java·数据结构·算法·leetcode·二叉树
我真的是大笨蛋14 小时前
依赖倒置原则(DIP)
java·设计模式·性能优化·依赖倒置原则·设计规范
Aevget14 小时前
PHP智能开发工具PhpStorm v2025.2全新上线——支持PHPUnit 12等
开发语言·ide·php·phpstorm
东方芷兰15 小时前
JavaWeb 课堂笔记 —— 20 SpringBootWeb案例 配置文件
java·开发语言·笔记·算法·log4j·intellij-idea·lua
Roye_ack15 小时前
【项目实战 Day9】springboot + vue 苍穹外卖系统(用户端订单模块 + 商家端订单管理模块 完结)
java·vue.js·spring boot·后端·mybatis
人间有清欢15 小时前
java数据权限过滤
java·mybatis·权限控制·数据过滤
A阳俊yi15 小时前
Spring——声明式事务
java·数据库·spring