Android项目工程目录简介
主工程目录:

一、.gradle
此文件夹是构建工具 Gradle 的配置文件夹,也会存储一些项目的构建缓存信息,在首次build项目时,会根据配置文件去下载这些文件,此文件夹是自动生成的文件夹,我们无需关心里面的内容,也不用去手动编辑
二、.idea
此文件夹是关于AS的配置文件夹(版权,jar包等),此文件夹是自动生成的文件夹,我们无需关心里面的内容,也不用去手动编辑
三、app
这是我们开发一款应用程序最重要的文件夹了。所有的代码、资源(包括图片、视频、字体、第三方资源等)文件。

1、build
项目编译时自动生成的文件,无需关心里面的内容

2、libs
项目中使用的第三方jar、aar架包文件,放在这个目录下的jar包都会被自动添加到构建路径里去。

3、src
①androidTest和test
androidTest:此处是用来编写Android Test测试用例的,可以对项目进行一些自动化测试。

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

②main
资源和代码文件夹

a、java
该目录是放置我们所有Java代码的地方

b、res
存放项目中的所有资源文件(图片、图标,布局、文字)

- drawable:一般不放置图片资源,存放一些动画文件、选择器文件、图形配置文件等xml绘制资源文件,图片资源一般放在其他drawable文件夹,可能还有drawable-v24、drawable-hdpi、drawable-mdpi 、drawable-xhdpi、drawable-xxhdpi、drawable-xxxhdpi都是为了适配在不同分辨率的屏幕用的。
- layout:放置布局文件,我们使用的app所看到的页面长什么样,几乎都是在这个文件夹下的xml所绘制的。
- mipmap:一般存放应用程序启动图标,而其他图片资源尽量都放在drawable下,点九图必须放在drawable下,放在mipmap会报错
- values:公共资源文件夹,这个文件夹里一般有颜色资源、文字资源、样式资源等文件夹,其他地方使用这些资源可以从这里调用,方便统一管理。
c、AndroidManifest.xml
整个Android项目的配置文件,你在程序中定义的所有四大组件都需要在这个文件里注册,另外还可以在这个文件中给应用程序添加权限声明。

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

5、build.gradle(app)
app模块的gradle构建脚本

6.proguard-rules.pro
项目代码的混淆规则文件,为了防止apk文件被别人破解时采取混淆代码。注意:混淆不能阻止反编译,但可以让反编译的代码更加难以读懂。

四、gradle

gradle是一个开源的自动构建工具,可以作为android studio工程的依赖管理和打包工具,包括三方库和jar包的依赖和链接, java和res等资源的编译和打包
可以看到,gradle文件夹里包含了提供构建支持的gradle-wrapper.jar文件和配置文件gradle-wrapper.properties,
gradle-wrapper.jar:是具体业务逻辑实现的jar包,gradlew最终还是使用Java执行的这个jar包来执行相关呢的Gradle操作。
gralde-wrapper.properties:该文件中声明了gradle的版本和下载地址.

在第一次使用gradlew进行项目构建的时候,Gradle Wrapper会自动下载gralde-wrapper.properties指定的gradle版本.
Gradle Wrapper 它是一个脚本,调用了已经声明的 Gradle 版本,并且我们编译时需要事先下载它。所以,开发者能够快速的启动并且运行 Gradle 项目,调用事先声明的 Gradle 版本,编译前去下载它,不用再手动安装,从而节省了时间成本。当然AndroidStudio会首先检查本地是否有缓存gradle,没有就会自动联网下载gradle,这样就不用自己先下载gradle,当然如果要使用离线模式,也可以自己setting:File---Settings---Build,Execution,Deployment---Gradle,如图所示:

五、.gitignore
当工程使用到了git版本控制时,该文件用于配置忽略管控指定的目录、文件等,如下图:

六、build.gradle
项目全局的gradle构建脚本,这里指的是gradle项目自动编译构建文件,指定了android gradle tools的版本,以及gradle仓库配置

七、gradle.properties
此文件是全局的gradle配置文件,在这里配置的属性将会影响到项目中所有的gradle编译脚本。gradle.properties里面定义的属性是全局的,可以在各个模块的build.gradle里面直接引用.我们可以在里面做一些Gradle文件的全局性的配置,也可以将比较私密的信息放在里面,防止泄露。

八、gradlew和gradlew.bat
这两个文件是用来在命令行界面中执行gradle命令的,其中 gradlew是在Linux或Mac系统中使用的,gradlew.bat是在 Windows系统中使用的。
九、local.properties
指明了android SDK ,NDK等在本地的路径,一般自动生成,除非发生变化,则要修改

十、settings.gradle
项目中引入module的管理文件

外部资源目录:
External Libraries
JDK、SDK版本,手动引入lib下三方库版本,远程依赖引入三方库版本

原创文章,有什么不对的地方欢迎指正,一起进步!