是否可以设置Android应用的版本名称以匹配依赖关系的已解析版本?

时间:2018-06-05 21:01:14

标签: android gradle groovy

我正在使用Android应用,其中95%的功能都包含在我编写的库中。这个相同的库将在30多个应用程序中使用,我希望不必手动设置每个应用程序的版本。相反,我想根据库的已解析版本设置应用程序versionName(因为它未在build.grade文件中明确指定)。

以下是该应用的当前build.gradle文件:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 27
    defaultConfig {
        applicationId "com.commentsold.demo"
        minSdkVersion 18
        targetSdkVersion 27
        multiDexEnabled true
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

buildscript {
    repositories {
        maven { url 'https://maven.fabric.io/public' }
    }
    dependencies {
        classpath 'io.fabric.tools:gradle:1.+'
    }
}

apply plugin: 'io.fabric'

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:multidex:1.0.3'
    testImplementation 'junit:junit:4.12'
    implementation 'com.github.CommentSold:Android-CommentSoldKit:1+'
}

android {
    defaultConfig {
        versionCode 1
        versionName ***SET_THIS_NAME_BASED_ON_Android-CommentSoldKit***
    }
}

apply plugin: 'com.google.gms.google-services'

注意,占位符** SET_THIS_NAME_BASED_ON_Android-CommentSoldKit **。这就是我想用#34; 1.0.0"。

替代的地方

1 个答案:

答案 0 :(得分:0)

您可以通过以下内容在项目的根build.gradle中定义共享变量:

buildscript {
    ext {
        my_lib = "com.github.CommentSold:Android-CommentSoldKit:1.0.0"
    }
}

然后在你的应用程序的build.gradle中,你可以做

def common = rootProject.ext
dependencies {
    implementation common.my_lib
}

这是你在找什么?