程序员潇然 发表于 2022-7-28 11:14:30

安卓项目目录结构文件详解资源文件构建文件说明作用

对于安卓开发,了解学习开发时的目录结构,资源结构作用是必须的。

本文将详细介绍各个目录以及资源等文件的作用含义。

### 初始视图

新建的项目都会默认使用Andr oid 模式的项目结构,但这并不是项目真实的目录结构,
而是被Andr oid Studio 转换过的。

!(data/attachment/forum/202207/28/111224hv9v7oc6kkf94dz6.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/300 "image.png")

### Project 视图

切换成Project ,这就是项目真实的目录结构

!(data/attachment/forum/202207/28/111400rwwahvuayxcykd4j.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/300 "image.png")

### 分析

一个项目,首先是需要有业务源代码,这是基础。

有了代码之后,必然有一个需要构建的过程,然后才能有运行的前提,android 使用的是Gradle
构建通常会有一些配置,还会必然有一些中间的临时结果文件;

通常我们都是借助于IDE进行开发的,比如IDEA、Android Studio,所以软件本身必然会生成一些项目相关的文件;

源代码通常是会在版本库上进行保存,所以通常也会有ignore文件,版本库的一些文件;

对于一个项目,还很有可能需要依赖一些外部的文件,比如第三方Jar,通常会有一个专门的目录保存;

对于安卓来说,很大程度上需要进行UI的开发,必然需要用到一些资源,比如图标图片;

对于项目开发,还必不可少的需要测试,所以还有测试相关文件和文件夹;

很显然,这些都是顺其自然就可以想得到的,下面对文件具体进行分析。

!(data/attachment/forum/202207/28/151432bohvojshfatoov2a.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/300 "image.png")

### 详细目录结构

!(data/attachment/forum/202207/28/170840rn66k9e9xbxyw8xk.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/300 "image.png")

### 顶层

#### .gradle(一般情况下不关注)

Android Studio 自动生成的文件,无须关心,也无需去手动编辑

#### .idea(一般情况下不关注)

Android Studio 自动生成的文件,无须关心,也无需去手动编辑

#### app $\color {red} {(必须关注)}$

项目中的代码、资源、测试代码等内容

#### build(一般情况下不关注)

在编译时自动生成的文件,无需过于关心

#### gradle(一般情况下不关注)

包含了gradle wrapper 的配置文件。
使用gradle wrapper 的方式不需要提前将gradle 下载好,而是会自动根据本地的缓存情况决定是否需要联网下载gradle。
默认就是启用gradle wrapper 方式的
如需修改,File→Settings→Build, Execution,Deployment→Build Tools→Gradle

#### .gitignore(一般情况下不关注)

版本控制 排除文件

#### build.gradle(一般情况下不关注)

项目全局的gradle 构建脚本 通常无需修改

#### gradle.properties(一般情况下不关注)

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

#### gradlew(一般情况下不关注)

命令行界面中执行gradle 命令的,在Linux 或Mac 系统中使用的

#### gradlew .bat(一般情况下不关注)

命令行界面中执行gradle 命令的,在Windows 系统中使用

#### local.properties(一般情况下不关注)

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

#### settings.gradle(一般情况下不关注)

用于指定项目中所有引入的模块,通常情况下,模块的引入是自动的,几乎不需要手动修改

#### 综上,可以看出,除了`app` 目录,其他的目录在`绝大多数场景下`都不需要关注

---

### app目录

#### build

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

### libs

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

#### src.androidTest

编写Andr oid Test 测试用例

#### src.test

编写Unit Test 测试用例

#### src.main.java

放置所有Java 代码,即使你使用kotlin也是这个路径

#### src.main.res

项目中使用到的所有图片、布局、字符串等资源

图片放在drawable目录下,布局放在layout 目录下,字符串放在values 目录下

#### src.main.AndroidManifest.xml

整个Android 项目的配置文件

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

#### .gitignore

用于将app 模块内指定的目录或文件排除在版本控制之外

#### build.gradle

app 模块的gradle 构建脚本

文件中会指定很多项目构建相关的配置

#### proguard-rules.pro

指定项目代码的混淆规则

当代码开发完成后打包成安装包文件,如果不希望代码被别人破解,通常会将代码进行混淆,从而让破解者难以阅读

所以,日常开发时,经常使用的就是下面几个文件(目录)

* 代码(src.main.java)
* 资源(src.main.res)
* 配置(AndroidManifest.xml)
* 构建(build.gradle)

!(data/attachment/forum/202207/28/175223w1vys4d5ozuns3u2.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/300 "image.png")

### 资源目录详解

展开资源文件夹如下:

主要路径就是`drawable` `layout` `mipmap-xxx` `values` `xml`

!(data/attachment/forum/202207/28/175632x2xrhj09si79h5u5.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/300 "image.png")

逻辑如下图所示

!(data/attachment/forum/202207/28/194004eli6juojb5wz36it.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/300 "image.png")

#### 资源引用

!(data/attachment/forum/202207/28/194323f69tm67z3jt36xtg.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/300 "image.png")

上图是一个String 资源

有以下两种方式来引用它。

1. 在代码中通过R.string.app_name可以获得该字符串的引用。
2. 在XML中通过@string/app_name可以获得该字符串的引用。

观察可以发现分为四部分:

**引用符号、变量类型、分割符、变量名称**

代码中的引用符号是 `R.` 分割符是`.` ,所以形式为`R.类型.变量名`

XML中的符号是 `@` 分隔符是 `/`,所以形式为`@类型/变量名`

其实所有的资源,都是这种形式

资源中的类型,还有`drawable``mipmap``layout`

#### 示例

打开`AndroidManifest.xml`

!(data/attachment/forum/202207/28/195219khjc6telalj5clwo.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/300 "image.png")

因为是在xml中,所以使用`@类型`,分隔符为`/`

### 构建

Android Studio 是采用Gradle 来构建项目的

Gradle 是一个非常先进的项目构建工具,它使用了一种基于Groovy 的领域特定语言( DSL)来进行项目设置

上面的目录分析时,其中有两个`build.gradle`分别是最外层,以及app目录下。

此处简单提一下,后续专门记录关于构建的知识点,暂时只需要记住app下面的`build.gradle` 可以加载依赖即可

!(data/attachment/forum/202207/28/203131ylhhjdrhhhhhw9hw.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/300 "image.png")

!(data/attachment/forum/202206/16/141330jha7st9soow8772i.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/300 "common_log.png")
`转载务必注明出处:程序员潇然,疯狂的字节X,https://crazybytex.com/thread-96-1-1.html `
页: [1]
查看完整版本: 安卓项目目录结构文件详解资源文件构建文件说明作用