Внешняя ссылка / переменная в файле build.gradle - PullRequest
0 голосов
/ 08 сентября 2018

Можно ли использовать некоторые внешние ссылки или переменные в build.gradle файлах?

У меня есть несколько build.gradle файлов в исходных файлах моего приложения, включая файл для module app , module base , module player и т. Д. (Это зависит от структуры вашего кода и имен ваших пакетов).

Внутри каждого из этих файлов есть следующая или похожая структура:

defaultConfig {
    minSdkVersion 23
    targetSdkVersion 28
    versionCode 1
    versionName "1.0.001"
}

Можно ли как-нибудь кодировать это так, чтобы мне не приходилось изменять эти значения в каждом файле? Можно ли использовать какую-то внешнюю ссылку или переменную, и таким образом я могу редактировать мой versionCode , versionName и т. Д. Только в одном месте?

Ответы [ 4 ]

0 голосов
/ 08 сентября 2018

Да, это так.

В конфигурации Gradle уровня проекта (расположенной в корне вашего проекта вне папок модулей) вы можете определить переменные в блоке buildscript:

ext.thisVersionCode = 1
ext.thisVersionName = "1.0.001"

Тогда вы сможете ссылаться на них из ваших конфигов уровня модуля:

defaultConfig {
    versionCode = rootProject.ext.thisVersionCode
    versionName = rootProject.ext.thisVersionName
}
0 голосов
/ 08 сентября 2018

Перейдите в Файл / Структура проекта / app / flavors, затем вы можете получить versionCode, versionName и т. Д., Затем изменить их так, как вам нужно, и это повлияет на все ваши файлы.

Проверьте это изображение

0 голосов
/ 08 сентября 2018

В вашем проекте gradle

ext {

    minSdkVersion = 14
    targetSdkVersion = 26
    compileSdkVersion = 26
    buildToolsVersion = '26.0.2'

    // App dependencies
    supportLibraryVersion = '26.1.0'
    mockitoVersion = '1.10.19'
    roomVersion = "1.0.0"
}

В вашем приложении gradle

    android {        
            compileSdkVersion rootProject.ext.compileSdkVersion
            buildToolsVersion rootProject.ext.buildToolsVersion

        defaultConfig {

        minSdkVersion rootProject.ext.minSdkVersion
        targetSdkVersion rootProject.ext.targetSdkVersion
       .
       .

    }

        }

        dependencies {
            // App's dependencies, including test
            compile "com.android.support:appcompat-v7:$rootProject.supportLibraryVersion"

        }
0 голосов
/ 08 сентября 2018

Вы можете определить переменные в файле build.gradle верхнего уровня и затем ссылаться на эти переменные в build.gradle каждого модуля - таким образом вы будете изменять их только один раз в одном файле.

в качестве примера, это файл верхнего уровня https://github.com/Ejstn/android-starter/blob/master/build.gradle и это файл уровня модуля: https://github.com/Ejstn/android-starter/blob/master/app/build.gradle

Вы также можете объявить всю зависимость как переменную, как в этом приложении Google: https://github.com/google/santa-tracker-android/blob/master/build.gradle

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...