目? ? 錄
一、【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 主要存放應用啟動圖標,并針對啟動器顯示進行緩存與縮放優化,以確保在各種設備上圖標清晰顯示。