Как программно предотвратить сообщение "конфликтующий провайдер"

Кто-нибудь может сказать мне, как я могу установить разные сборки для разных версий на одном устройстве, не получая сообщения об ошибке "Дублирующий поставщик" ни в 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 при попытке установить приложение на моем устройстве.

это сообщение об ошибке, полученное от Android Studio

1 ответ

Решение

Я нашел решение:

Я солгал, когда сказал, что у меня нет поставщика. Я просто не использовал его больше. Таким образом, решение моей проблемы было здесь (или просто удаление неиспользуемого поставщика): /questions/20707968/ispolzovanie-tipov-sborki-v-gradle-dlya-zapuska-togo-zhe-prilozheniya-kotoroe-ispolzuet-contentprovider-na-odnom-ustrojstve/20707982#20707982

Я наконец понял это, заглянув в мой сгенерированный / объединенный AndroidManifest в сборке / промежуточных / манифестах /, где я мог найти Манифесты для всех моих вариантов. Там я увидел, что один провайдер всегда имел одинаковые полномочия.

Другая проблема могла также быть (но не относится ко мне)