Маркировка Android White с помощью Gradle: как мне эмулировать "суб" измерения вкуса?
Я хотел бы иметь возможность назначить BASE_URL
построить поле конфигурации для каждого партнера и для каждого сервера. У каждого партнера разная постановка и постановка BASE_URL
, В приведенном ниже сценарии это означает, что у нас есть 4 разных базовых URL, которые я хотел бы привязать к одному BASE_URL
Поле конфигурации сборки в зависимости от окончательного варианта сборки. Код ниже будет работать только для одного партнера.
flavorDimensions 'partner', 'server'
productFlavors {
partnerA {
applicationId 'com.example.partnerA'
dimension 'partner'
}
partnerB {
applicationId 'com.example.partnerB'
dimension 'partner'
}
staging {
// Will not work for more than one partner because each
// partner has a different staging base url!
applicationIdSuffix "staging"
buildConfigField('String', 'BASE_URL', '"https://staging.example.com"')
dimension 'server'
}
production {
buildConfigField('String', 'BASE_URL', '"https://production.example.com"')
dimension 'env'
}
}
Как указано в заголовке, я бы хотел как-то создать "суб" измерение вкуса. Я не думаю, что это возможно с текущим API, но что-то вроде этого было бы полезно.
flavorDimensions 'partner', 'server'
productFlavors {
partnerA {
applicationId 'com.example.partnerA'
dimension 'partner'
staging {
buildConfigField('String', 'BASE_URL', '"https://stagingA.com"')
}
production {
buildConfigField('String', 'BASE_URL', '"https://prodA.com"')
}
}
partnerB {
applicationId 'com.example.partnerB'
dimension 'partner'
staging {
buildConfigField('String', 'BASE_URL', '"https://stagingB.com"')
}
production {
buildConfigField('String', 'BASE_URL', '"https://prodB.com"')
}
}
staging {
applicationIdSuffix "staging"
dimension 'server'
}
}
Есть только несколько способов обойти это:
- использование
applicationVariants.all {...}
циклически перебирать каждый произведенный вариант, разбирая имя варианта на каждом из них, чтобы определить во время сборки, какой URL-адрес поместить в поле конфигурации сборки. - Определите значение
BASE_URL
в файле в каждом наборе src. - Изготовление
partnerAStaging
,partnerAProd
,PartnerBStaging
и т.д.
Я считаю эти варианты нежелательными по той или иной причине. Есть ли другой способ сделать это?