常规安卓项目目录结构及说明

一个标准的安卓项目(使用 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
    • 定义了用户界面的结构和组件。
  • 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模块构建配置,管理依赖、版本号等。

理解这个目录结构,你就能快速定位到任何类型的文件,并知道如何组织你的代码和资源,这是成为一名高效安卓开发者的第一步。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值