目录结构
外层
内层
AndroidStudio是通过Gradle来构建项目的。
我们可以看到上图中的项目中有两个build.gradle,一个在内层,一个在外层,我们分析一下
先看最外层的build.gradle,这些代码都是自动生成的
buildscript {
repositories {
google()
jcenter() //该闭包处声明了jcnter()这行配置,这个jcenter其实是个代码托管仓库
//很多开源项目会把代码托管到jcenter上,声明了这个配置后,就可以引用jcenter上的开源项目了
}
dependencies {
classpath 'com.android.tools.build:gradle:3.0.1'
//dependencies闭包中使用classpath声明了一个Gradle插件,因为java,C++很多项目都用Gradle来构建
//如果我们想使用它来构建安卓项目,就需要声明这个插件,最后面是这个插件的版本号
}
}
allprojects {
repositories {
google()
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
接着看内层的build.gradle文件
//第一行这里一般有两种值可以选择,第一种是apply plugin: 'com.android.application'表示一个应用程序模块
//第二种是apply plugin: 'com.android.library'表示这是一个库模块
//程序模块与库模块的最大区别在于,应用程序模块可以直接运行,而库模块是需要依附于别的应用程序来运行
apply plugin: 'com.android.application'
//接下来是一个大的android闭包,在这个闭包中我们可以配置项目构建的各种属性
android {
compileSdkVersion 26 //指定项目的编译版本
buildToolVersion "24.0.2" //指定项目构建工具的版本
//嵌套了一个defaultConfig闭包,这里可以对项目进行更多的细节配置
defaultConfig {
applicationId "com.ryshine.toast" //指定项目的包名,后期可以在此处修改包名
minSdkVersion 21 //指定项目最低兼容的安卓系统版本
targetSdkVersion 26 //此处指定值表示已经在该版本做过了充分测试
//下面两个属性在生成安装文件时非常重要
versionCode 1 //指定项目的版本号
versionName "1.0" //指定项目的版本名
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
//buildType闭包,这里用于指定生成安装文件的相关配置,通常有两个子闭包,debug和release
//debug闭包用于指定生成测试板安装文件的配置,可以忽略不写
//release闭包用于指定生成正式版安装文件的配置
buildTypes {
release {
minifyEnabled false //指定是否对代码进行混淆,true 混淆 false 不混淆
//proguardFiles用于指定混淆时使用的规则文件
//proguard-android.txt在AndroidSdk目录下,里面是所有项目通用的混淆规则
//proguard-rules.pro 是在当前根目录下的,里面可以编写当前项目特有的混淆规则
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
//dependencies闭包,可以指定当前项目的所有依赖关系
//通常AndroidStudio项目一共有三种依赖方式:本地依赖、库依赖、远程依赖
//本地依赖可以对本地Jar包或者目录添加依赖关系
//库依赖可以对项目中的库模块添加依赖关系
//远程依赖可以对jcenter库上的开源项目添加依赖关系
dependencies {
//本地依赖,表示将libs目录中所有.jar后缀的文件都添加到项目的构建路径中
implementation fileTree(dir: 'libs', include: ['*.jar'])
//标准的远程依赖格式,构建项目时Gradle首先检查是否有改缓存,如果没有则联网下载,然后添加到项目构建路径
//com.android.support是域名部分,用于和其他公司的库区分
//appcpmpat-v7是组名称,用于区分同一个公司中的不同库
//26.1.0是版本号
implementation 'com.android.support:appcompat-v7:26.1.0'
//声明测试用例库,暂时用不到
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}