У меня есть старые приложения, использующие несовместимый идентификатор приложения. Я пытаюсь перенести их с помощью flavourDimensions, чтобы поделиться такими общими ресурсами и кодом. У меня есть эта настройка ароматов:
defaultConfig {
applicationId "com.example"
}
flavorDimensions 'fruit', 'env'
productFlavors {
pear {
dimension 'fruit'
}
banana {
dimension 'fruit'
}
staging {
dimension 'env'
}
prod {
dimension 'env'
}
}
Я хотел бы иметь эти applicationId по комбинации ароматов:
- pearStaging :
com.example.pear_staging
(обратите внимание на " _ ") - pearProd :
com.example.pear
- bananaStaging :
com.example.banana_staging
(обратите внимание на" _ ") - bananaProd :
com.example.banana
Я пытался использовать applicationIdSuffix
:
productFlavors {
pear {
dimension 'fruit'
applicationIdSuffix 'pear'
}
banana {
dimension 'fruit'
applicationIdSuffix 'banana'
}
staging {
dimension 'env'
applicationIdSuffix '_staging'
}
prod {
dimension 'env'
}
}
, но суффиксы по умолчанию разделены точкой. Поэтому он генерирует неправильный идентификатор приложения, например:
flavour pearStaging : com.example.pear._staging
(обратите внимание на "." Перед "_")
Я видел ответы в этой теме: Как установить разные applicationId для каждой комбинации ароматов с помощью flavourDimensions? Они говорят об обходном пути, использующем mergedFlavor.setApplicationId(...)
для переопределения applicationId в конце. Но это не работает, если я использую в сочетании с плагином gradle для служб Google .
Поскольку на этапе обработки плагина я получил эту ошибку:
* What went wrong:
Execution failed for task ':app:processPearStagingDebugGoogleServices'.
> No matching client found for package name 'com.example'
Как видите , он использует идентификатор приложения / имя пакета по умолчанию, а не appId, переопределенный в фазе android.applicationVariants.all
.
Так есть ли лучший способ определить мой идентификатор приложения для каждой комбинации вкусов, который работает с задачей служб Google? (Мне нужно сохранить эти applicationId с "_", не могу их изменить).