Android 之路2---android的目录结构(上)

Android的目录结构主要有三种视图,这里将从总到分的先介绍三种视图,然后再介绍视图里边一些重要的文件,ok,let’s go!

1.Project视图
project视图反映了该项目在电脑中的物理储存,这里会结合外部打开文件夹介绍,如图,我将它存在了未命名文件夹中。

Android 之路2---android的目录结构(上)

打开未命名文件夹

Android 之路2---android的目录结构(上)

进一步打开MyApplication,红色框与绿色框中都是系统生成的,不需要我们处理,这里简要说明一下:
Gradle: 我们的项目需要哪些第三方库,它会帮我们自动下载编译,到时我们import一下就可以了。

.gradle和.idea:是studio自动生成的文件,不需要我们操作。

Build: 主要包含了一些编译时生成的文件,无需关心

.gitignore:用来将指定的目录或文件排除在版本控制之外

build.gradle:我们况且称他为外部build.gradle,因为App里边还有一个,这个的作用要说明一下,如图4
1)两处repositories的闭包中都声明了jcenter()这行配置 ,它是一个代码托管仓库,很多Android开源项目都会选择将代码托管到jcenter上,声明了这行配置之后,我们就可以在项目中轻松引用任何jcenter上的开源项目了。
2)dependencies闭包中使用classpath声明了一个Gradle插件,2.3.3代表插件的版本号
3)运行gradle clean时,执行此处定义的task,该任务继承自Delete,删除根目录中的build目录,相当于执行Delete.delete(rootProject.buildDir),gradle使用groovy语言,调用method时可以不用加()

gradle.properties: gradle配置文件,在这里配置全局的gradle编译脚本

gradlew和gradle.bat: 用来指示命令行执行gradle的,其中gradle用于Mac和Linux系统,.bat用于windows系统。

local.properties:指示Android Sdk路径,自动生成的。

settings.gradle: 指定项目中引入的模块。

Android 之路2---android的目录结构(上)

Android 之路2---android的目录结构(上)

接下来才是重头戏,进入app文件夹,图5

Android 之路2---android的目录结构(上)

build:系统自动生成无需关心。

libs: 如果项目中使用了第三方jar包,就把它放在这里边,系统会自动帮你构建路径

src文件夹(图六):包括三个文件夹。
androidTest:此外是用来编写Android Test测试用例的,可以对项目进行一些自动化测试。
test:此外是用来编写Unit Test测试用例的,是对项目进行自动化测试的另一种方式。
main:就是我们自己编写的了,包括java,res,manifest,下边会细细讲述。

app.iml:IntelliJ IDEA项目自动生成的文件

proguard-rules.pro:这个文件用于指定项目代码的混淆规则,将代码进行混淆。

内层build.gradle:这是我们要重点讲的(图7)
1)第一行应用了一个插件,一般有两种值可选:com.android.application表示这是一个应用程序模块,com.android.library表示这是一个库模块。
2)android闭包,compileSdkVersion用于指定项目的编译版本。
3)defaultConfig闭包中,applicationId用于指定项目的包名,minSdkVersion用于指定项目最低兼容的Android系统版本,targetSdkVersion指定的值表示你在该目标版本上已经做过了充分的测试。
versionCode用于指定项目的版本号,versionName用于指定项目的版本名。
4)buildTypes闭包用于指定生成安装文件的相关配置,通常有2个子闭包,一个是debug,一个是release,debug闭包用于指定生成测试版安装文件的配置,release闭包用于指定生成正式安装文件的配置,另外,debug闭包是可以忽略不写的。minifyEnabled用于指定是否对项目的代码进行混淆,true表示混淆,false表示不混淆,proguardFiles用于指定混淆时使用的规则文件,这里指定了两个文件,第一个proguard–android.txt是在Android SDK目录下的,里面是所有项目通用的特有的混淆规则,第二个proguard-rules.pro是在当前项目的根目录下,里面可以编写当前项目特有的混淆规则。
5)dependencies闭包指定当前项目所有的依赖关系,通常有三种依赖关系:本地依赖,库依赖,远程依赖,本地依赖可以对本地的Jar包或目录添加依赖关系,库依赖可以对项目中的库模块添加依赖关系,远程依赖则可以对jcenter库上的开源项目添加依赖关系。compile fileTree就是一个本地依赖,com.android.support.appcompat-v7:26.+就是一个远程依赖,其中com.android.support是域名部分,appcompact-v7是组名称,26.+是版本号。库依赖基本格式是compile project后面跟要依赖的库名称。例如有个库模块叫helper,那么添加的库依赖声明为compile project(‘:helper’)

Android 之路2---android的目录结构(上)

Android 之路2---android的目录结构(上)

2Android 视图

android视图并不反应工程在电脑中的物理存储,分为两部分app和gradle.后者中的文件上边都介绍了,这里主要讲app文件夹。
app文件夹包括manifest,java,res

Android 之路2---android的目录结构(上)

第一行:定义了xml的版本及编码方式。
第二行:定义了我们需要的架构来自于哪。
第三行:定义了我们的程序所在的包。
android:allowBackup:将程序加入到系统的备份和恢复架构中。
android:icon:显而易见表示APP的图标了。(可以来自mipmap,也可以来自drawable).
label:app的名称,可以如图直接输入,也可以定义为@string/app_name,即res文件夹中,string文件下的app_name.
android:supportsRtl:启用各种RTLAPI来用RTL布局显示应用,这个是android4.2的新特性。