Android详细分解 Android 项目目录结构

Posted Allen Su

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android详细分解 Android 项目目录结构相关的知识,希望对你有一定的参考价值。

一:何为"真实"的安卓项目目录

以我的 android Studio (以下简称 AS)版本 4.2.2 为例,新建一个 Android 项目,如下图所示

需要说明的是,这并不是项目的真实目录结构,而是被 AS 转换过的,因为这种项目结构简洁明了,适合快速开发。

但对于新手来说,看起来可能会费点劲,所以需要切换到项目的真实目录,也就是 Project 模式,点击左上角的 Android 下拉弹框选择 Project 模式,如下图所示

二:Project 模式的目录结构

Project 项目的总目录结构如下图所示,下面将会对每一个标注的目录进行分析

1、.gradle 和 .idea

如下图所示

标注 1 .gradle和标注 2 .idea 这两个目录下是 AS 自动生成的一些文件,一般我们不会对这两个文件做更改,所以我们不需要去关心这两个目录。

3、app

标注 3 app 目录下的内容将会是我们工作的重点,如下图所示

下面按照顺序一一介绍 app 目录下的功能

3-1 / build

如下图所示

app/build 目录包含了一些在编译时自动生成的文件,它里面的内容会更加复杂,我们不需要过多关心。

3-2 / libs

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

3-3 / src / androidTest

如下图所示

androidTest 目录用来编写 Android 测试用的,可以对项目进行一些自动化测试。

3-4 / src / main / java

如下图所示

java 目录用来放置所有 Java 代码的地方(Kotlin 的代码也会放在这里),在 java 目录下你会看到系统帮我们自动生成了一个 MainActivity 文件。

3-5 / src / main / res

如下图所示

res 目录下的内容相对较多,不过层次也很清晰。我们会把在项目中用到的图片、布局、字符串等资源都存放到 res 目录下,详情如下

  • 以 “drawable” 开头的目录都是用来放图片的
  • 以 “layout” 开头的目录都是用来放布局文件的
  • 以 “mipmap” 开头的目录都是用来放应用图标的
  • 以 “values” 开头的目录都是用来放字符串、样式、颜色等配置的

之所以会有多个以 drawable 或者 mipmap 开头的目录,主要是为了让程序能够更好地兼容各种设备。

在程序运行的时候,系统会自动根据当前运行设备的分辨率的高低,来选择加载哪个目录下的图片。

3-6 / src / main / AndroidManifest.xml

如下图所示

AndroidManifest.xml 是整个 Android 项目的配置文件。

程序中定义的所有四大组件(Activity、Service、BroadcastReceiver 和 ContentProvider)都需要在这个文件里注册,如果你需要在应用程序添加权限声明,也是写入到该文件中。

3-7 / test

如下图所示

test 目录用来编写 Unit Tes t测试用的,是对项目进行自动化测试的另一种方式。

3-8 / .gitignore

如下图所示

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

也就是说如果你有文件不想被加入到 .git 中去,就把需要被 .git 忽略的名称加入到 .gitignore 中去。

如果你不知道什么样的项目,忽略什么文件或者文件夹,可以看这个网站 github/gitignore,几乎包含了所有的项目类型,够你用是没问题的。

3-9 / build.gradle

如下图所示

build.gradle 文件是 app 模块的 gradle 构建脚本,会指定很多与项目构建相关的配置,内容较多,我会单独把 build.gradle 构建脚本中的具体内容写到另外一篇博客中,到时会把链接写到这里。

3-10 / proguard-rules.pro

如下图所示

proguard-rules.pro 文件用于指定项目代码的混淆规则。

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

4、gradle

如下图所示

标注 4 gradle 目录包含了gradle wrapper 的配置文件。

使用 gradle wrapper 的方式不需要提前将 gradle 下载好,而是会自动根据本地的缓存情况,决定是否需要联网下载gradle。

AS 默认启用 gradle wrapper 方式,如果需要更改成离线模式,可以点击

Android Studio → Preferences → Build,Execution,Deployment → Build Tools → Gradle,进行配置更改,如下图所示

5、.gitignore

如下图所示

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

也就是说如果你有文件不想被加入到 .git 中去,就把需要被 .git 忽略的名称加入到 .gitignore 中去。

如果你不知道什么样的项目,忽略什么文件或者文件夹,可以看这个网站 github/gitignore,几乎包含了所有的项目类型,够你用是没问题的。

6、build.gradle

标注 6 build.gradle 这是项目全局的 gradle 构建脚本,一般情况下这个文件中的内容是不需要修改的。不过有时候我们因为网络原因配置源的时候,会把源写到这里,不过 AS 已经帮我们写过一部分常用的源了,如下图所示

7、gradle.properties

如下图所示

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

8、gradlew 和 gradlew.bat

标注 8 gradlew 和标注 9 gradlew.bat 两个文件用来在命令行界面中执行 gradle 命令。

其中 gradlew 是在 Linux 或 Mac 系统中使用的,gradlew.bat 是在 Windows 系统中使用的。

10、local.properties

如下图所示

标注 10 local.properties 文件用于指定本机中的 Android SDK 路径,通常内容是自动生成的,我们不需要修改。

如果你本机的 Android SDK 位置发生了变化,那么就将这个文件中的路径改成新的位置即可。

11、settings.gradle

如下图所示

标注 11 settings.gradle 文件用于指定项目中所有引入的模块。

由于 AllenSuAndroidDemo 项目中只有一个 app 模块,因此该文件中也就只引入了 app 这一个模块。

通常情况下,模块的引入是自动完成的,需要我们手动修改这个文件情况一般不多。

最后,如果你在项目中看到了后辍名是 .iml 的文件,这是 IntelliJ IDEA 项目自动生成的文件,这个我们不需要在意。

至此,关于 Android 项目的目录结构就都介绍完毕了。 你的问题得到解决了吗?欢迎在评论区留言。

赠人玫瑰,手有余香,如果觉得文章不错,希望可以给个一键三连,感谢。


结束语

技术是一点一点积累的,大神也不是一天就可以达到的。原地不动就是退步,所以每天进步一点点。

最后,附上一句格言:"好学若饥,谦卑若愚",望共勉。

以上是关于Android详细分解 Android 项目目录结构的主要内容,如果未能解决你的问题,请参考以下文章

(最新)开源Android github项目到Maven上详细过程

(最新)开源Android github项目到Maven上详细过程

(最新)开源Android github项目到Maven上详细过程

Android Activity 到 WebView 和 WebView 到 Activity 参数传递

2020-06-19 react-native下开发运行Android跟iOS详细步骤

android WebView总 结