Я провел некоторое время, исследуя и пробуя разные альтернативы, чтобы получить два разных имени пакета для разновидности или типа сборки в модуле библиотеки, и мой короткий ответ: Вы не можете , по крайней мере, не делая что-то,хитрый и грязный.
Некоторым парням, которые рекомендуют использовать параметр applicationIdSuffix
или applicationId
, эта опция не работает, поскольку дизайн библиотечных модулей ограничивает эти параметры модулем приложения.В библиотеке пакет должен быть определен в манифесте .
Это ограничение разграничивает параметры для вариантов, но атрибут пакета в манифесте не объединяется, и вы получаете сообщение об ошибке при различном имени пакета для scr/main/AndroidManifest.xml
и src/flavor/AndroidManifest.xml
.
Самое сложное решение - получить текущий выбранный вариант из имени задачи, а затем изменить основной манифест в исходных наборах.
sourceSets {
main {
manifest.srcFile "src/$flavor_name/AndroidManifest.xml"
}
}
Этот хак работает, но в целом это плохая идея, и я предпочитаю изменить дизайн моей архитектуры и по-разному реализовать хранилище для обоих вариантов Firebase.
Gradleплагин: 3.2.0