【新手入门】Android Studio 项目结构拆解,快速理解文件作用!

发布于:2025-08-14 ⋅ 阅读:(23) ⋅ 点赞:(0)

目    录

一、【Project】视图下项目结构(真实目录)

二、【Android】视图下项目结构

三、【app/】下重要文件解析

1、 build.gradle

2、AndroidManifest.xml 

3、res/


   作为刚刚接触Android开发的小白,使用Android Studio创建项目后,对于项目中的各种文件就是两眼一抹黑,因此把自己的学习记录在这篇笔记中。

一、【Project】视图下项目结构(真实目录)

        如图1所示是Android Studio项目真实目录。

图1 【Project】视图下项目结构(真实目录)

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视图下的项目结构。

图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 36

    defaultConfig {
        // 应用的唯一标识符(正式发布时不能随便改)
        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.appcompat
    implementation libs.material
    implementation libs.constraintlayout
    implementation libs.navigation.fragment
    implementation libs.navigation.ui

    // testImplementationd定义项目测试(test目录下)代码依赖
    testImplementation libs.junit

    // androidTestImplementation定义AndroidTest目录下的代码依赖
    androidTestImplementation libs.ext.junit
    androidTestImplementation 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">

    <!-- 指定应用的图标、标签、圆图标等-->
    <application
        android: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(应用的界面组件) -->
        <activity
            android: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 形状定义等可绘制资源

icon.pngbg.xml

mipmap/

启动图标资源(不同分辨率),优先用于 android:icon

ic_launcher.png

layout/

布局文件(XML 定义界面结构)

activity_main.xml

values/

各类 XML 常量定义,如字符串、颜色、尺寸、样式等

strings.xmlcolors.xmlstyles.xml

menu/

菜单资源(选项菜单、上下文菜单等)

main_menu.xml 

xml/

其他任意 XML 配置文件

network_security_config.xml

raw/

原始文件(音频、视频、二进制文件等,不会被编译处理)

music.mp3

font/

自定义字体文件

roboto.ttf

color/

独立颜色资源文件(API 23+)

app_colors.xml

❗ 在 Android 中,drawable 和 mipmap 都可按屏幕密度划分为 -ldpi(低,~120dpi)、-mdpi(中,~160dpi)、-hdpi(高,~240dpi)、-xhdpi(超高,~320dpi)、-xxhdpi(超超高,~480dpi)、-xxxhdpi(超超超高,~640dpi)等子目录,用于适配不同分辨率的图片资源,其中 drawable 主要存放普通界面图片,而 mipmap 主要存放应用启动图标,并针对启动器显示进行缓存与缩放优化,以确保在各种设备上图标清晰显示。


网站公告

今日签到

点亮在社区的每一天
去签到