Android项目目录结构

image

1- Android 项目目录结构示例

MyAndroidApp/
│
├── .gitignore
├── build.gradle
├── settings.gradle
├── local.properties
├── gradle/
│   └── wrapper/
│       ├── gradle-wrapper.jar
│       └── gradle-wrapper.properties
│
└── app/
    ├── build/
    ├── libs/
    ├── src/
    │   ├── main/
    │   │   ├── java/
    │   │   │   └── com/
    │   │   │       └── example/
    │   │   │           └── myandroidapp/
    │   │   │               ├── MainActivity.java
    │   │   │               └── OtherActivity.java
    │   │   │
    │   │   ├── res/
    │   │   │   ├── layout/
    │   │   │   │   ├── activity_main.xml
    │   │   │   │   └── activity_other.xml
    │   │   │   │
    │   │   │   ├── values/
    │   │   │   │   ├── strings.xml
    │   │   │   │   ├── colors.xml
    │   │   │   │   └── styles.xml
    │   │   │   │
    │   │   │   ├── drawable/
    │   │   │   │   ├── ic_launcher.png
    │   │   │   │   └── background.png
    │   │   │   │
    │   │   │   └── mipmap/
    │   │   │       ├── ic_launcher.png
    │   │   │       └── ic_launcher_round.png
    │   │   │
    │   │   └── AndroidManifest.xml
    │   │
    │   ├── androidTest/
    │   │   └── java/
    │   │       └── com/
    │   │           └── example/
    │   │               └── myandroidapp/
    │   │                   └── MainActivityTest.java
    │   │
    │   └── test/
    │       └── java/
    │           └── com/
    │               └── example/
    │                   └── myandroidapp/
    │                       └── MainActivityUnitTest.java
    │
    └── proguard-rules.pro

2- Android 项目目录结构详解

3- 项目根目录

项目根目录是整个 Android 项目的起点,包含了所有的源代码、资源文件和配置文件。主要包括以下内容:

  • .gitignore: 指定在使用 Git 版本控制时需要忽略的文件和目录,通常包括编译生成的文件和本地配置文件。
  • build.gradle: 项目级的 Gradle 构建脚本,定义了项目的构建配置和依赖项。可以在这里添加全局依赖和插件。
  • settings.gradle: 指定项目中所有引入的模块,通常情况下,Android Studio 会自动管理这个文件。
  • local.properties: 用于指定本机中的 Android SDK 路径,通常内容都是自动生成的。
  • gradle/: 包含 Gradle 的相关文件和配置,通常包括 Gradle Wrapper 的配置文件,允许项目在不同环境中使用相同版本的 Gradle。
  • .idea/: 存放 Android Studio 的项目配置文件,通常不需要手动修改。

4- app/

这是 Android 项目的核心目录,包含了应用的所有源代码和资源。

4.1- src/

  • main/: 主要的代码和资源文件。
    • java/: 包含应用的 Java 或 Kotlin 代码,通常按包名组织。例如,com.example.myapp。在这里,你会找到主要的 Activity 类、Fragment 类、ViewModel 类等。
    • res/: 存放资源文件,包括布局、图片、字符串等,进一步细分为多个子目录:
      • layout/: XML 布局文件,定义每个 Activity 的用户界面。例如,activity_main.xml,其中包含了 UI 组件的排列和属性。
      • values/: 存放各种属性值的 XML 文件,如:
        • strings.xml: 存放应用中的字符串资源,便于国际化。
        • colors.xml: 定义应用使用的颜色,便于统一管理。
        • styles.xml: 定义应用的样式和主题,便于统一管理 UI 风格。
        • dimens.xml: 定义尺寸值,便于在不同屏幕上保持一致的 UI。
      • drawable/: 存放图形资源,如位图文件(PNG、JPEG 等),可以根据不同的屏幕密度创建不同的子目录(如 drawable-mdpidrawable-hdpi 等)。
      • mipmap/: 存放应用图标,通常包括不同分辨率的图标文件。
    • AndroidManifest.xml: 重要的配置文件,定义了应用的基本信息、组件、权限等。它指定了应用的入口 Activity、主题、图标等信息。

4.2- androidTest/

用于编写仪器化测试代码,通常用于 UI 测试。测试代码可以访问应用的真实环境,确保应用在不同设备上的表现一致。

4.3- test/

用于编写单元测试代码,通常用于逻辑测试。这里的测试代码不依赖于 Android 框架,可以在本地 JVM 上运行,适合快速验证业务逻辑。

5- build/

这个目录是 Gradle 构建过程中生成的文件,通常不需要手动修改。它包含了构建输出、临时文件等。

6- gradle/

包含 Gradle 的相关文件和配置,通常包括 Gradle Wrapper 的配置文件,允许项目在不同环境中使用相同版本的 Gradle。

7- gen/

该目录用于存放由 Android 开发工具自动生成的文件,如 R.java 文件。这个文件包含了所有资源的 ID,供代码中引用。

8- 其他重要文件

  • gradlew 和 gradlew.bat: 这两个文件用于在命令行界面中执行 Gradle 命令。gradlew 用于 Linux 或 Mac 系统,gradlew.bat 用于 Windows 系统。
  • gradle.properties: 全局的 Gradle 配置文件,在这里配置的属性将会影响到项目中所有的 Gradle 编译脚本。
  • proguard-rules.pro: 代码混淆配置文件,定义了在构建 APK 时如何混淆代码,保护应用的源代码。

9- 资源文件的组织

res 目录下,资源文件的组织方式非常重要,以下是一些常见的子目录及其用途:

  • res/layout/: 存放 XML 布局文件,定义 Activity 和 Fragment 的 UI 结构。
  • res/values/: 存放各种属性值的 XML 文件,包括:
    • dimens.xml: 定义尺寸值,便于在不同屏幕上保持一致的 UI。
    • styles.xml: 定义应用的主题和样式,便于统一管理 UI 风格。
  • res/drawable/: 存放图形资源,如位图文件(PNG、JPEG 等),可以根据不同的屏幕密度创建不同的子目录(如 drawable-mdpidrawable-hdpi 等)。
  • res/mipmap/: 存放应用图标,通常包括不同分辨率的图标文件。

10- AndroidManifest.xml 的详细解析

AndroidManifest.xml 是每个 Android 应用的核心文件,包含了以下重要信息:

  • 应用的包名: 唯一标识应用的名称。
  • 组件声明: 包括 Activity、Service、Broadcast Receiver 等,定义了应用的各个组件。
  • 权限声明: 指定应用需要的权限,如访问网络、读取存储等。
  • 应用的主题和图标: 定义应用的外观和标识。
  • 最小 SDK 版本: 指定应用运行所需的最低 Android 版本。

11- 总结

理解 Android 项目的目录结构及其各个文件的作用对于开发者来说至关重要。合理的目录结构不仅有助于组织代码和资源,还能提高团队协作的效率。通过清晰的结构,开发者可以更轻松地管理项目,确保代码的可读性和可维护性。掌握这些基本知识将为后续的开发工作打下坚实的基础。