Android Studio项目版本号的统一管理

时间:2025-02-08 21:54:50

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

如果写的有问题,希望大家指正,谢谢.