Как получить имя версии внутри типов сборки для Android

#android #gradle #groovy

Вопрос:

Я настроил 2 типа сборки, как это:

     buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
            versionNameSuffix "-prod"
            signingConfig signingConfigs.prod
            archivesBaseName "$versionName"
        }

        dev {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
            versionNameSuffix "-dev"
            signingConfig signingConfigs.dev
            archivesBaseName "$versionName"
        }
}
 

Проблема в том, что я получаю эту ошибку: > Could not get unknown property 'versionName'

Почему это не работает? Проблема возникает в archivesBaseName, и кажется, что $versionName не распознан

Комментарии:

1. потому что это не часть buildTypes.xxx «но defaultConfig «… он недоступен там, потому versionName что еще не готов, так как это зависит от пересечения buildTypes с productFlavors

Ответ №1:

Попробуйте вот это :

Имя версии-это параметры, которые определяются в defaultConfig. Поле имени версии захватывает данные из defaultConfig.

Прежде всего, Android отдает приоритет данным defaultConfig, а затем переопределяет данные, если данные совпадают.

 flavorDimensions "versionCode"
flavorDimensions "versionName"
flavorDimensions "appId"
productFlavors {
    UAT {
        dimension "versionCode"
        dimension "versionName"
        dimension "appId"
        buildConfigField "String", "BASE_URL", '"https://www.google.com/staging/app/api/v1/"'
        buildConfigField "boolean", "IS_LOCAL_DEV", "false"
        buildConfigField "boolean", "IS_UAT", "true"
    }
    QA {
        dimension "versionCode"
        dimension "versionName"
        dimension "appId"
        buildConfigField "String", "BASE_URL", '"https://www.google.com/staging/app/api/v1/"'
        buildConfigField "boolean", "IS_LOCAL_DEV", "false"
        buildConfigField "boolean", "IS_UAT", "false"
    }
}
 

Комментарии:

1. Пожалуйста, не публикуйте только код без объяснения того, как это поможет OP