Android Studio项目版本号的统一管理
项目前段时间进行了组件化改造,由于分出了很多的model,所以以前的依赖关系也需要变化,所以整理出这一篇版本号管理和依赖关系变更的记录.
1.版本号统一管理
统一管理的方式有比较多,这里我只介绍项目中的方式.
步骤1.首先你需要新建一个版本号记录的文件,我这里是,里面是所有的你需要管理的版本号信息.
= [:]
def versions = [:]
= "27.0.2"
versions.android_gradle_plugin = "3.0.1"
= "4.12"
= "3.0.1"
= "2.7.19"
versions.mockito_all = "1.10.19"
= "2.2.0"
versions.atsl_runner = "1.0.1"
versions.atsl_rules = "1.0.1"
= "1.3"
def deps = [:]
def support = [:]
= ":support-annotations:$"
support.appcompat_v7 = ":appcompat-v7:$"
= ":recyclerview-v7:$"
= ":cardview-v7:$"
= ":design:$"
support.support_v4 = ":support-v4:$"
//以下5个为V4的拆分库,可根据具体需求引用,可减小APK大小
support.core_utils = ":support-core-utils:$"
support.core_ui = ":support-core-ui:$"
support.media_compat = ":support-media-compat:$"
support.support_fragment = ":support-fragment:$"
support.support_compat = ":support-compat:$"
= support
def espresso = [:]
= ":espresso-core:$"
= ":espresso-contrib:$"
= ":espresso-intents:$"
= espresso
def atsl = [:]
= ":runner:$versions.atsl_runner"
= ":rules:$versions.atsl_runner"
= atsl
def mockito = [:]
= ":mockito-core:$"
= ":mockito-all:$versions.mockito_all"
= mockito
= "junit:junit:$"
= ":dexmaker-mockito:$"
= ":hamcrest-all:$"
deps.android_gradle_plugin = ":gradle:$versions.android_gradle_plugin"
= deps
def build_versions = [:]
build_versions.min_sdk = 17
build_versions.target_sdk = 19
build_versions.compile_sdk = 27
build_versions.build_tools = "27.0.2"
ext.build_versions = build_versions
def addRepos(RepositoryHandler handler) {
()
()
()
{ url '' }
}
= this.&addRepos
上面我并没有把所有的都放到这里,以后会逐渐都放过来.
步骤2.使用的时候比较简单如下:
在根目录下的配置一些信息.
buildscript {
apply from: ''//这里是引入我们的配置文件
addRepos(repositories)//调用一下添加依赖的方法
dependencies {
classpath deps.android_gradle_plugin//使用
classpath ':build-gradle:1.2.0'
}
}
//所有的model都添加依赖
allprojects {
addRepos(repositories)
}
task clean(type: Delete) {
delete
}
repositories {
jcenter()
maven { url "" }
mavenCentral()
google()
}
在其他的model中使用,其实和以前一样的
apply plugin: ''
apply plugin: ''
android {
compileSdkVersion build_versions.compile_sdk
buildToolsVersion build_versions.build_tools
defaultConfig {
minSdkVersion build_versions.min_sdk
targetSdkVersion build_versions.target_sdk
versionCode 1
versionName "1.0"
testInstrumentationRunner ""
javaCompileOptions {
annotationProcessorOptions {
arguments = [ moduleName : () ]
}
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile(''), ''
}
}
resourcePrefix "account_"
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
annotationProcessor ':arouter-compiler:1.1.4'
annotationProcessor ':butterknife-compiler:8.8.1'
testImplementation
androidTestImplementation
androidTestImplementation
androidTestImplementation
}
2.依赖关系变化
组件项目的依赖关系和以前的主要区别是,现在不是直接依赖三方库了,是出现了中间的一个名为lib_baselib的model,这里面是所有的依赖,其他的model主要通过在里面配置
implementation project(':lib_baselib')
来完成.
finish
如果写的有问题,希望大家指正,谢谢.