Как программно предотвратить сообщение "конфликтующий провайдер"
Кто-нибудь может сказать мне, как я могу установить разные сборки для разных версий на одном устройстве, не получая сообщения об ошибке "Дублирующий поставщик" ни в PlayStore, ни в AndroidStudio?
У меня в приложении разные вкусы для разных стран, и раздражает необходимость всегда удалять приложение перед установкой другого.
Я старался:
productFlavors {
austria {
manifestPlaceholders = [
// prevent "duplicate provider authority" message
providerAuthority: "com.example.app.at",
]
}
germany {
manifestPlaceholders = [
// prevent "duplicate provider authority" message
providerAuthority: "com.example.app.de",
]
}
//...
}
и в моем AndroidManifest я добавил:
android:authorities="${providerAuthority}"
к моему
<application/>
тег. Это не решает мою проблему.
Я не использую ContentProvider, поэтому я также попытался добавить класс Stub ContentProvider в проект и объявил внутри себя android:authority ="${providerAuthority}"
<provider/>
тег, включающий имя заглушки ContentProvider -> безуспешно. Я был бы очень рад некоторым другим идеям или исправлениям.
ОБНОВИТЬ:
сообщение об ошибке, полученное от Android Studio при попытке установить приложение на моем устройстве.
1 ответ
Я нашел решение:
Я солгал, когда сказал, что у меня нет поставщика. Я просто не использовал его больше. Таким образом, решение моей проблемы было здесь (или просто удаление неиспользуемого поставщика): /questions/20707968/ispolzovanie-tipov-sborki-v-gradle-dlya-zapuska-togo-zhe-prilozheniya-kotoroe-ispolzuet-contentprovider-na-odnom-ustrojstve/20707982#20707982
Я наконец понял это, заглянув в мой сгенерированный / объединенный AndroidManifest в сборке / промежуточных / манифестах /, где я мог найти Манифесты для всех моих вариантов. Там я увидел, что один провайдер всегда имел одинаковые полномочия.
Другая проблема могла также быть (но не относится ко мне)