Android项目框架思考–配置文件
很早就想写一些相关的技术文档,一来锻炼自己的书写能力,二来也能记录自己的成长痕迹。每过一段时间写一篇技术文章,希望自己能够一直坚持下去。
一个合适的框架能够让项目开发顺畅,代码条理清晰、功能实现效率提升,以及运行时减少很多人为水平原因的错误。
为了能够让项目多人并行快速高质量开发,在开发前期我们可以做很多事情来较少后期重复的工作量,本次梳理一下一个项目的配置信息如何统一管理。一个项目中包含application以及其他作为lib库的module,他们的build.gradle都有一些配置信息,将配置信息统一化,一方面便于后期快速更改项目的编译环境,另一方方面也能快速的使他人接入开发,不会因为电脑环境变量的改变而花费很多时间来回修改mudle的配置参数。
我们通过AndroidStudio创建一个默认的项目时,其配置文件大题如下:
application中的build.gradle
apply plugin: 'com.android.application'
android {
compileSdkVersion 26
defaultConfig {
applicationId "com.kotlin.anonyper.testapplication"
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'
}
}
compileOptions {
targetCompatibility 1.8
sourceCompatibility 1.8
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:26.1.0'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
}
module中的build.gradle
apply plugin: 'com.android.library'
android {
compileSdkVersion 26
defaultConfig {
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 {
implementation fileTree(dir: 'libs', include: ['*.jar'])
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'
}
可以看到上面,每一个build.gradle中都有compileSdkVersion、defaultConfig等信息(在module中有一些参数是非必要),加上我们直接从网络上下载的第三方module他们的配置参数很大可能和上面的不一样,这样就导致同一个项目在不同的电脑上都需要一个一个的module去调整配置信息,而这个过程对于新手来说稍不留神就是非常痛苦的。所以我们可以将这些共同的参数提取出来,写到同一个地方。
项目的根目录下有一个叫做gradle.properties的文件,我们可以在这里写一些项目所需要的公共参数,以便于不同的module来使用: