①和②目录下都是AndroidStudio自动生成的一些文件,无需手动编辑,我们在此略过
③目录下放置项目的代码、资源、清单文件
项目在编译时自动生成的文件
项目中使用的第三方jar包放在此libs目录下,jar包会自动添加到构建路径里去
存放项目中的java代码
用来指定不被添加到版本控制中的目录或文件
自动生成的文件,用以标示此项目是基于IntelliJ IDEA开发的
这个是app模块的gradle构建脚本,这个文件中共会指定很多项目构建相关的配置
用来指定项目代码的混淆规则
项目在编译时自动生成的文件
这个目录下包含了gradle wrapper的配置文件,使用gradle wrapper的方式不需要提前将gradle下载好,而是会自动根据本地的缓存情况决定是否需要联网下载gradle
项目中使用的第三方的library库,需要手动添加到项目中
用来指定目录或文件排除在版本控制之外
自动生成的文件,用以标示此项目是基于IntelliJ IDEA开发的
项目全局的gradle构建脚本,通常这个文件中的内容是不需要修改吧
这个是全局的gradle配置文件,在这里配置的属性将会影响到项目中所有gradle编译脚本
是用来在命令行界面中执行gradle命令的,其中gradle是在Linux或Mac系统中使用,gradlew.bat是在Windows系统中使用
用来指定本机Android SDK路径
这个文件是用于指定项目中所有引入的模块
include ':app', ':havorldlibrary'
Gradle是一个非常先进的项目构建工具,它使用了一种基于Groovy的领域特定语言(DSL)来声明项目设置。摒弃了产痛基于XML(如Ant和Maven)的各种繁琐配置。
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.1.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
}
有两处配置的jcenter()方法,jcenter()是一个代码托管仓库,很多Android开源项目都会选择把代码托管到jcenter上,声明了这行配置后我们就可以在项目中轻松引用任何jcenter上的开源项目了。
apply plugin: 'com.android.application'
android {
compileSdkVersion 25
buildToolsVersion "25.0.2"
defaultConfig {
applicationId "com.havorld.directorydemo"
minSdkVersion 14
targetSdkVersion 25
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:25.1.1'
compile project(':havorldlibrary')
}
第一行的声明:
一般情况下有两种
1、apply plugin: 'com.android.application' //表示一个应用程序模块
2、apply plugin: 'com.android.library' //表示一个库模块(如havorldlibrary中的声明)
defaultConfig中的声明:
applicationId: 用于指定项目的包名
versionCode: 用于指定项目的版本号
versionName: 用于指定项目的版本名
compileSdkVersion: 用于指定项目的编译版本
buildToolsVersion: 用于指定项目构建工具的版本
minSdkVersion: 用于指定项目最低兼容的Andriod版本
targetSdkVersion: 用于指定在该版本上已经做过了充分测试,系统会为你的应用启用一些新的功能和特性。
如:把targetSdkVersion设置为23(Android6.0)或者更高系统就会为你的程序启用运行时权限,而如果把targetSdkVersion设置为22那就说明你的程序只在Android5.1版本上做过充分测试,Android6.0中启用的新功能运行时权限就不会启用了
buildTypes中的声明:
buildTypes是用于生成安装文件的相关配置,于通常会有两个闭包,一个debug用于生成测试版安装文件的配置,一个release用于生成正式版版安装文件的配置。其中debug的闭包可以省略不写,因此我们只能看到一个release闭包。AndroidStudio直接运行的项目生成的都是测试版的安装文件。
minifyEnabled: 用于指定是否对代码进行混淆。true为混淆,false为不混淆。
proguardFiles:用于指定混淆时使用的规则文件,"proguard-android.txt"位于Android SDK目录下里面是所有项目通用的混淆规则,"proguard-rules.pro"是在当前根目录下里面可以编写当前项目特有的混淆规则。
dependencies中的声明:
dependencies中可以指定当前项目中所有的依赖关系,一般情况下有四种依赖方式:
本地依赖(compile fileTree):将本地的jar包或目录添加到项目的构建路径中
测试用例依赖(testCompile):将测试用例库添加到项目的构建路径中
库依赖(compile project):将项目中的库模块添加到项目的构建路径中
远程依赖(compile):将jcenter库上的开源文件添加到项目的构建路径中,Gradle会先检查本地是否有这个库的缓存,如果没有自动去网上下载