认识一个App的目录结构

天气炎热,想玩水的朋友可以来我家洗碗


本篇为:第一行代码(第3版) (郭霖) 读书笔记

使用Android Studio创建一个项目

首先使用 Android Studio 创建一个 MyApplication 项目,然后切换到 Project 模式,来认识一下一个 App 的项目结构吧

Assassins小白

一个App的目录结构

.gradle 和 .idea

这两个目录下都是放的 Android Studio 自动生成的一些文件,我们无需关心,也不要去手动编辑

Assassins小白

app

项目中的代码、资源等内容都是放置在这个目录下的,我们后面开发也基本是在这个目录下进行的,下文会对这个目录进行单独讲解

Assassins小白

build

这个目录主要包含了一些在编译时自动生成的文件,也不需要我们过多关心

Assassins小白

gradle

这个目录下包含了 gradle wrapper 的配置文件,使用 gradle wrapper 的方式不需要提前将 gradle 下载好,而是会自动根据本地的缓存情况决定是否需要联网下载 gradle
Android Studio 默认就是启用 gradle wrapper 方式的,如果需要更改成离线模式,可以点击 Android Studio 导航栏→FileSettingsbuild,ExeutionDeploymentGradle 进行配置更改

Assassins小白

.gitignore

这个文件是用来将指定的目录或文件排除在版本控制之外的

Assassins小白

build.gradle

这是项目全局的 gradle 构建脚本,通常这个文件的内容是不需要修改的

Assassins小白

gradle.properties

这个文件是全局的 gradle 配置文件,在这里配置的属性将会影响到项目中所有的 gradle 编译脚本

Assassins小白

gradlew 和 gradlew.bat

这两个文件是用来在命令行界面执行 gradle 命令的,其中 gradlew 是在 LinuxMac 系统中使用的,gradlew.bat 是在 Windows系统中使用的

Assassins小白

local.properties

这个文件用于指定本机中的 Android SDk 路径,通常内容是自动生成的,我们并不需要修改,除非你本机中的 Android SDK 位置发生了变化,那么就将这个文件中的路径改成新的位置即可

Assassins小白

settings.gradle

这个文件用于指定项目中所有引入的模块,由于 My Application 项目中只有一个 app 模块,因此该文件中也就只引入了 app 这一个模块,通常情况下,模块的引入是自动完成的,需要我们手动修改这个文件的场景可能比较少

Assassins小白

app 目录下的文件结构

build

这个目录和外层的 build 目录类似,也包含了一些在编译时自动生成的文件,不过它里面的内容会更加复杂,我们不需要过多关心

Assassins小白

libs

如果你的项目中使用到了第三方 jar 包,就需要把这些 jar 包都放在 libs 目录下,放在这个目录下的 jar 包会被自动添加到项目的构建路径里

Assassins小白

src/androidTest

此处是用来编写 Android Test 测试用例的,可以对项目进行一些自动化测试

Assassins小白

src/main/java

这里是放置我们所有 Java 代码的地方(Kotlin 代码也放在这里),展开该目录,会看到 app 的包名,在包名目录下面你会看到系统自动帮我们生成了一个 MainActivity 文件

Assassins小白

src/main/res

这个目录就是你在项目中使用到的所有图片、布局、字符串等资源都要存放在这个目录下,这个目录还有很多子目录,图片放在 drawable 目录下,布局放在 layout 目录下,字符串放在 values 目录下

Assassins小白

src/main/AndroidManifest.xml

这是整个 Android 项目的配置文件,你在程序中定义的所有四大组件都需要在这个文件里注册,另外还可以在这个文件中给应用程序添加权限声明

Assassins小白

src/test

此处是用来编写一个 Unit Test 测试用例的,是对项目进行自动化测试的另一种方式

Assassins小白

.gitignore

这个文件用于将 app 模块内指定的目录或文件排除在版本控制之外,作用和外层的 .gitignore 文件类似

Assassins小白

build.gradle

这是 app 模块的 gradle 构建脚本,这个文件中会指定很多项目构建相关的配置

Assassins小白

proguard-rules.pro

这个文件用于指定项目代码的混淆规则,当代码开发完成后打包安装包文件,如果不希望代码被别人破解,通常会将代码进行混淆,从而让破解者难以阅读

Assassins小白