Почему моя переменная в скрипте Gradle не определена? - PullRequest
0 голосов
/ 04 апреля 2019

Что я хочу сделать, это создать 6 различных вариантов, каждый с небольшим изменением AndroidManifest. Данные рассчитываются динамически, поэтому я не могу просто поместить их в variant/AndroidManifest.xml вручную.

Когда я запускаю скрипт сборки для определенного варианта, скажем, «TinyDebug», он не делает то, что мне хотелось бы. В этом случае я бы хотел, чтобы он имел код версии 1501.

Я сильно отредактировал здесь скрипт, чтобы сделать его более читабельным. Из-за сложности вычислений данных я предпочел бы иметь их в задаче (от которой зависит задача инициализации).

Вопрос. Почему в AndroidManifest неверно рассчитывается version_code? Как мне выполнить мои расчеты, чтобы они могли учесть вкус и передать свои результаты в AndroidManifest.xml?

build.gradle

def int version_code_suffix = -1    //-1 means it is erronous or unset

task initialize{    
    doFirst{
        android.productFlavors.tiny {
            version_code_suffix = 1
        }
    }
}

android {
    productFlavors {
        tiny {
            versionCode 1500 + version_code_suffix
        }
    }
    tasks.whenTaskAdded { task ->
        if (task.name == 'processTinyDebugResources') {
            task.dependsOn initialize
        }
    }
}

AndroidManifest.xml после сборки (должно быть 1501)

android:versionCode = 1499

1 Ответ

0 голосов
/ 04 апреля 2019

Попробуйте определить его как переменную проекта, если вы будете использовать его везде, как показано ниже.

project.ext.version_code_suffix = -1    //-1 means it is erronous or unset

task initialize{    
    doFirst{
        android.productFlavors.tiny {
            version_code_suffix = 1
        }
    }
}

android {
    productFlavors {
        tiny {
            versionCode 1500 + version_code_suffix
        }
    }
    tasks.whenTaskAdded { task ->
        if (task.name == 'processTinyDebugResources') {
            task.dependsOn initialize
        }
    }
}
...