在讲解android目录结构前,我们需要补充一个基本知识,就是安卓四大组件的概念,
Android系统四大组件分别是活动(Activity)、服务(Service)、广播接收器(Broadcast Receiver)和内容提供器(Content Provider)。其中活动是所有Android应用程序的门面,凡 是在应用中你看得到的东西,都是放在活动中的。而服务就比较低调了,你无法看到它, 但它会一直在后台默默地运行,即使用户退出了应用,服务仍然是可以继续运行的。广播 接收器允许你的应用接收来自各处的广播消息,比如电话、短信等,当然你的应用同样也 可以向外发出广播消息。内容提供器则为应用程序之间共享数据提供了可能,比如你想要 读取系统电话簿中的联系人,就需要通过内容提供器来实现。
回看我们的工程目录
这个目录结构不是真正的目录结构,而是由Android自动转换的为方便开发人员快速开发的Andriod模式目录结构。每个新建的安卓工程都默认是这种目录结构。
我们点击上方的下拉框,切换到安卓工程的真正目录结构
1 .gradle和.idea:
这两个目录都是android studio自动生成的东西,我们无需关心。
2 app
:我们要进行开发的代码几乎都是写在这里,稍后我们会对该目录进行详细讲解。
3 gradle:
这个目录下包含了gradle wrapper的配置文件,使用gradle wrapper的方式不需要提前将gradle 下载好,而是会自动根据本地的缓存情况决定是否需要联网下载gradle。Android Studio默认 没有启用gradle wrapper的方式,如果需要打开,可以点击Android Studio导航栏 →File→Settings→Build, Execution, Deployment→Gradle,进行配置更改。
4 .gitignore:
这个文件是用来将指定的目录或文件排除在版本控制之外的,关于版本控制我们将在以后的章节中开始正式的学习。
5.build.gradle
这是项目全局的gradle构建脚本,通常这个文件中的内容是不需要修改的。稍后我们将会详 细分析gradle构建脚本中的具体内容。
6 gradle.properties
这个文件是全局的gradle配置文件,在这里配置的属性将会影响到项目中所有的gradle编译 脚本。
7 gradlew和gradlew.bat
这两个文件是用来在命令行界面中执行gradle命令的,其中gradlew是在Linux或Mac系统中 使用的,gradlew.bat是在Windows系统中使用的。
8 HelloWorld.iml
iml文件是所有IntelliJ IDEA项目都会自动生成的一个文件(Android Studio是基于IntelliJ IDEA开发的),用于标识这是一个IntelliJ IDEA项目,我们不需要修改这个文件中的任何内 容。
9 local.properties
这个文件用于指定本机中的Android SDK路径,通常内容都是自动生成的,我们并不需要修 改。除非你本机中的Android SDK位置发生了变化,那么就将这个文件中的路径改成新的位 置即可。
10 settings.gradle
这个文件用于指定项目中所有引入的模块。由于HelloWorld项目中就只有一个app模块,因此该文件中也就只引入了app这一个模块。通常情况下模块的引入都是自动完成的,需要我 们手动去修改这个文件的场景可能比较少。
现在我们的基本的目录结构算是介绍完了,我们发现大多数的目录中的内容都不需要我们去手动改动内容,只有app目录是我们开发工作的重点,下面我们就要详细的介绍一下app目录。
展开我们的app目录,得到如下图所示的内容:
1 build
主要存放的一些在编译时自动生成的文件名,我们不需要关心
2 libs
如果你得项目中使用了第三方jar包,就需要的包第三方jar放在libs目录下,放在libs目录下的jar包都会自动构建到你的项目中去。
3 androidTest
此处是用来编写Android Test测试用例的,可以对项目进行一些自动化测试。
4 main/java
毫无疑问的,这个目录就是我们的主要的工作目录,是放置我们所有java代码的地方
5 main/res
就是你项目中用到的所有图片,布局,字符串等资源都要存放在这个目录下,该文件夹下有很多的子目录,drawable是专门 存放
图片的,layout是存放布局文件的,字符串放在values目录下
6 AndroidManifest.xml
这是你整个Android项目的配置文件,你在程序中定义的所有四大组件都需要在这个文件里 注册,另外还可以在这个文件中给应用程序添加权限声明。由于这个文件以后会经常用 到,我们用到的时候再做详细说明。
7 test
此处是用来编写Unit Test测试用例的,是对项目进行自动化测试的另一种方式。
8 .gitignore
这个文件用于将app模块内的指定的目录或文件排除在版本控制之外,作用和外层 的.gitignore文件类似。
9 app.iml
IntelliJ IDEA项目自动生成的文件,我们不需要关心或修改这个文件中的内容。
10 build.gradle
这是app模块的gradle构建脚本,这个文件中会指定很多项目构建相关的配置,我们稍后将 会详细分析gradle构建脚本中的具体内容。
11 proguard-rules.pro
这个文件用于指定项目代码的混淆规则,当代码开发完成后打成安装包文件,如果不希望 代码被别人破解,通常会将代码进行混淆,从而让破解者难以阅读。