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