Предоставление нескольким flavorGroups влияет на имя пакета в Android gradle build

65
7

У меня есть конфигурация сборки с 2 типами сборки (debug/release) и 2 flavorGroups (locale/environment).

Это три разные оси, и я хочу определить имя пакета для варианта сборки всеми из них.

Тем не менее, кажется, я могу установить только полное имя пакета для данного аромата, а затем иметь packageNameSuffix для типа сборки - попытка сделать пакетNameSuffix для вкуса приводит к тому, что Could not find method packageNameSuffix() for arguments [...].

В любом случае, чтобы я мог получить имя пакета для каждого из результирующих вариантов сборки в соответствии с: com.app.LOCALE.ENVIRONMENT.TYPE, без необходимости "развернуть" одну из осей в типы сборки ( что приведет к дублированию)?

Заранее спасибо.

спросил(а) 2021-01-19T21:42:07+03:00 8 месяцев назад
1
Решение
64

Вы можете использовать решение, которое я написал здесь: qaru.site/questions/250935/...

Короче говоря, вы можете узнать комбинированный вариант с помощью variantFilter, а затем обновить конфигурацию (например, applyiationId) оттуда:

android.variantFilter { variant ->
def flavorString = ""
def flavors = variant.getFlavors()
for (int i = 0; i < flavors.size(); i++) {
flavorString += flavors[i].name;
}
if(flavorString.equalsIgnoreCase("fooBar")) {
variant.getDefaultConfig().applicationId "com.example.foobar"
}
}

ответил(а) 2021-01-19T21:42:07+03:00 8 месяцев назад
46

Вы можете использовать комбинацию packageName и packageNameSuffix из productFlavors и buildTypes, как показано ниже:

android {
productFlavors {
foo {
packageName "com.example.foo"
versionName "Foo"
}
bar {
packageName "com.example.bar"
versionName "Bar"
}
}
buildTypes {
debug {
packageNameSuffix ".debug"
versionNameSuffix "-debug"
}
release {
packageNameSuffix ".release"
versionNameSuffix "-release"
}
}
}

Но если вы используете что-то вроде flavorGroups, то это может не сработать для вас. Вы также можете проверить эту конфигурацию образца кода, которая добавляет новые buildTypes https://github.com/bradmcmanus/Gradle-Build-Example/blob/master/GradleBuildExample/build.gradle

ответил(а) 2021-01-19T21:42:07+03:00 8 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема