将项目结构模式切换成Project,如下图
1) .gradle和.idea
这两个目录下放置的都是Android studio自动生成的一些文件,我们无须关心,也不要去手动编辑
2)app项目中的代码,资源等内容几乎都是放置在这个目录下。
3)build
主要包含了一些在编译时自动生成的文件。
4)gradle
这个目录下包含了gradle wrapper的配置文件,使用gradle wrapper的方式不需要提前将gradle下载好,而是会自动根据本地的缓存情况决定是否需要联网下载gradle.
可以点击Android studio导航栏 ->File->Settings->Build,Execution,Deployment->Gradle,进行配置。
5).gitignore这个文件是用来将指定的目录或文件排除在版本控制之外的。
6)build.gradle这是项目全局的gradle构建脚本,通常这个文件中的内容是不需要修改的
7)gradle.properties
这个文件是全局的gradle配置文件,在这里配置的属性将会影响到项目中所有的gradle编译脚本。
8)gradlew和gradlew.bat
这两个文件是用来在命令行界面中执行gradle命令的,其中gradlew是在Linux或Mac系统中使用的,gradlew.bat是在Windows系统中使用的。
9)HelloWorld.iml
iml文件是所有的IntelliJ IDEA项目都会自动生成的一个文件,用于标识这是一个IntelliJ IDEA项目。我们不需要修改这个文件中的任何内容。
10)local.properties
这个文件用于指定本机中的Android SDK路很径,通常内容都是自动生成的,我们并不需要修改。
11)settings.gradle
这个文件用于指定项中所有引入的模块。
将app目录展开,如下图
1)build
这个目录和外层的build目录类似,主要也是包含了一些在编译时自动生成的文件。
2)libs
如果项目中使用了第三方jar包,就需要把这些jar包都放在libs目录下,放在这个目录下的jar包都会被自动添加到构建路径里去。
3)androidTest
此外是用来编写Android Test测试用例的,可以对项目进行一些自动化测试。
4)Java
Java目录是放置我们所有Java代码的地方。
5)res
项目中使用到的所有图片,布局,字符串等资源。
6)AndroidManifest.xml
这是整个Android项目的配置文件,你在程序中定义的所有四大组件都需要在这个文件里注册,另外还可以在这个文件中给应用程序添加权限声明。
7)test
此外是用来编写Unit Test测试用例的,是对项目进行自动化测试的另一种方式。
8).gitignore
这个文件用于将app模块内的指定的目录或文件排除在版本控制之外,作用和外层的.gitignore文件类似。
9)app.iml
IntelliJ IDEA项目自动生成的文件
10)build.gradle
这是app模块的gradle构建脚本。
11)proguard-rules.pro
这个文件用于指定项目代码的混淆规则,将代码进行混淆。
外层目录下的build.gradle文件,如下:
buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle:2.3.3' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } } allprojects { repositories { jcenter() } } task clean(type: Delete) { delete rootProject.buildDir }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时可以不用加()
app目录下的build.gradle
apply plugin: 'com.android.application' android { compileSdkVersion 26 buildToolsVersion "26.0.1" defaultConfig { applicationId "com.example.helloworld" minSdkVersion 15 targetSdkVersion 26 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' }) compile 'com.android.support:appcompat-v7:26.+' compile 'com.android.support.constraint:constraint-layout:1.0.2' testCompile 'junit:junit:4.12' }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')