我们都知道android项目采用的是一套gradle构建机制通过android studio,我们可以很方便的对gradle进行配置从而灵活高效的完成项目的编译和打包。一般android的项目构建配置如下:
gradle配置
从图中我们可以看到,主要是.gradle文件和.properties文件。我们分别来看些配置文件的内容和用途。
第一个是项目根目录下的脚本配置文件,用行话来说就是rootProject的build.gradle。它的内容如下:
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.1.2'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
google()
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
这里主要定义了android插件的版本号,以及你项目中一些依赖库的仓库地址。这里android插件的版本号一般跟开发者本机所安装的android studio插件版本号一致。所以在多人协作的时候,由于每个开发人员所使用的android studio版本不一致,而导致在使用持续集成工具打包时需要频繁提交对该文件的修改,这样会造成提交日志的冗余,因为这些提交并没有包含多少有效信息,同时每个开发者在同步版本库的配置时都要重新修改一次这个文件也比较繁琐。
第二个是项目中一个模块的脚本配置文件,用行话来说就是subProject的build.gradle。它的内容如下:
apply plugin: 'com.android.application'
android {
compileSdkVersion 27
defaultConfig {
applicationId "com.xiaofei.gradleconfigtest"
minSdkVersion 15
targetSdkVersion 27
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:27.1.1'
implementation 'com.android.support.constraint:constraint-layout:1.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'
}
这里主要定义了每个module的编译和打包配置,比如compileSdkVersion定义了编译项目使用的android版本,targetSdkVersion定义了项目可以兼容的最高android系统版本,implementation 'com.android.support:appcompat-v7:27.1.1'定义了该模块依赖的support包的版本号。这里同样会存在多人协作时配置不一致的情况,比如compileSdkVersion,targetSdkVersion等。 |