Eksperymentuję z przykładowym programem NotesList w Android SDK. Zrobiłem niewielką zmianę w programie, ale kiedy instaluję edytowaną wersję, w konsoli pojawia się komunikat INSTALL_FAILED_CONFLICTING_PROVIDER, gdy próbuję go zainstalować, gdy oryginalny program do notatek jest już na urządzeniu. Co muszę zmienić w Dostawcy, aby był to unikatowa baza danych? Działa dobrze, jeśli odinstaluję oryginalny program do notatek, a następnie zainstaluję zmodyfikowaną wersję.
źródło
android:authorities
atrybutu w moimAndroidManifest
provider
tagu. Użyłem tego projektu jako mojego projektu biblioteki dla systemu Android. Korzystając z tego projektu biblioteki, opracowałem kilka projektów. jak rozwiązaćinstall_failed_conflicting_provider
problem, jeśli użyliśmy wspólnego projektu bibliotecznego.<provider>
plik z manifestu biblioteki i zdefiniuj go na poziomie aplikacji za pomocą unikatowego łańcucha uprawnień.android:authorities
lub<provider>
w moim manifeście biblioteki i otrzymuję ten błąd.Jeśli masz różne smaki i chcesz uniknąć kolizji w nazwie urzędu, możesz dodać
applicationIdSuffix
do typów kompilacji i użyć wynikowegoapplicationId
w swoim manifeście, na przykład:źródło
applicationId
definicję smaku dla każdego produktu. developer.android.com/studio/build/…applicationId
smak dla każdego smaku. Jeśli masz różne typy buildTypów, chceszapplicationId
się również różnić między nimi i to właśnieapplicationIdSuffix
zrobi ta właściwość.Jeśli korzystasz z Google Maps + Google Play Services w projekcie biblioteki (zwłaszcza jeśli niedawno przeprowadziłeś migrację z Eclipse do Android Studio), możesz napotkać ten błąd podczas próby uruchomienia aplikacji korzystającej z biblioteki, podczas gdy inna aplikacja używa ta sama biblioteka jest już zainstalowana na Twoim urządzeniu.
Poprawka: upewnij się, że defaultConfig.applicationId jest zdefiniowany w sekcji Android
build.gradle
pliku dla każdego projektu korzystającego z bibliotekiPolecam użycie nazwy pakietu konkretnej aplikacji. Dzięki tej poprawce nazwy dostawców nie będą już powodować konfliktów, a aplikacja będzie działać zgodnie z oczekiwaniami.
Objawy
1.) Twoi użytkownicy widzą przerażający błąd instalacji „-505” podczas instalowania aplikacji ze Sklepu Play.
2.) Podczas próby zainstalowania drugiej aplikacji korzystającej z biblioteki za pośrednictwem Android Studio zobaczysz ten komunikat o błędzie [INSTALL_FAILED_CONFLICTING_PROVIDER]:
W konsoli zobaczysz następujący komunikat:
Poprawka polega na tym, aby upewnić się, że defaultConfig.applicationId jest zdefiniowany w sekcji android
build.gradle
pliku dla każdego projektu korzystającego z bibliotekiWięcej informacji można znaleźć w oryginalnym raporcie o błędzie: Problem 784: Wiele aplikacji używających tej samej nazwy dostawcy uprawnień
źródło
Może się to również zdarzyć, gdy masz zainstalowaną starszą wersję aplikacji i wprowadziłeś zmiany w (pomocniczej) bibliotece lub pliku manifestu. Usunięcie starych aplikacji z urządzenia (
Settings --> Application --> <your application> --> Uninstall
) rozwiąże wtedy problem.źródło
Jeśli korzystasz z Facebook SDK, problem może dotyczyć wartości „władz”, które podajesz dostawcy Facebooka.
ZASTĄPIĆ -
Z ->
Być może będziesz musiał zmienić
defaultConfig.ApplicationId
również, jak sugerowano w innych odpowiedziach.źródło
Ten sam błąd może wystąpić po zmianie nazwy pakietów. Sprawdź wartość w string.xml dla
android:authorities
z AndroidManifest.xml.W string.xml wartość powinna być taka sama jak nazwa twojego pakietu, zadeklarowana w manifeście.
źródło
Prawdopodobnie nazwa organu i dostawcy, którą zadeklarowałeś w manifeście
źródło
Zasadniczo stało się to ze mną, kiedy próbowałem zmienić nazwę pakietu aplikacji.
Tak więc w emulatorze ta sama aplikacja została zainstalowana wcześniej. Kiedy próbowałem zainstalować aplikację po zmianie nazwy pakietu, powiedziałem, że uprawnienia są już używane przez starszą aplikację w urządzeniu.
Po odinstalowaniu aplikacji rozwiązało to mój problem.
Ponadto nazwa organu powinna zawsze wyglądać następująco
your.package.name.UNIQUENAME
:;przykład:
źródło
Miałem podobny problem, gdy korzystałem z jednej biblioteki w kilku aplikacjach. Konieczne było po prostu zaktualizowanie pliku AndroidManifest.xml za pomocą tej dokładnej deklaracji dostawcy poniżej.
źródło
Próbowałem wielu rozwiązań, ale nie mogłem znaleźć rozwiązania ... ale ten link pomógł mi ... Chcę szczegółowo opisać problem ...
Uruchomiłem instrumentalne przypadki testowe, więc moja aplikacja nie była widoczna w programie uruchamiającym ... ale została zainstalowana i korzystała z tego samego dostawcy treści . Więc powinienem to jakoś odinstalować. Więc
Settings -> Application Manager -> All Downloaded Apps -> uninstall all apps from your current development package
Teraz spróbuj uruchomić ... To zadziała ...
źródło
Myślałem, że odinstalowanie aplikacji poprzez przeciągnięcie jej ikony na „Odinstaluj” rozwiązałoby problem, ale tak się nie stało.
Oto, co rozwiązało problem:
Spróbuj ponownie, powinno teraz działać.
źródło
Jeśli korzystasz z aplikacji Facebook Inside, sprawdź tag dostawcy w
AndroidManifest
pliku i sprawdź, czyproject Id
jest poprawnyandroid:authorities
źródło
Napotkałem ten problem.
Rozwiązano to przez:
1 - otwórz AndroidManifest.xml
2 - ctrl + f znajdź „dostawca”
3 - znajdź dostawcę i zaktualizuj tam nazwę swojego katalogu głównego.
uruchom projekt. miejmy nadzieję, że problem zostanie rozwiązany!
źródło
instalacja za pomocą adb z poleceniem
./adb install -r abc.apk
rozwiąże problem (nadpisze nawet, gdy urządzenie ma wyższą wersję aplikacji)źródło
Jeśli korzystasz z platformy Xamarin i otrzymujesz ten błąd (prawdopodobnie z powodu Firebase.Crashlytics):
Jak wspomniano tutaj , musisz zaktualizować Xamarin.Build.Download:
~/.local/share/NuGet
~/.nuget/packages
packages
folder w roztworzeźródło
Na moim urządzeniu z Androidem miałem różne smaki instalacji tej samej aplikacji . To daje mi błąd INSTALACJA NIEUDANA KOLIZUJĄCEGO DOSTAWCĘ . więc odinstalowałem wszystkie moje smaki tej samej aplikacji. i próbowałem
adb install -r /Users/demo-debug-92acfc5.apk
To rozwiązało mój problem.
źródło
Możesz odinstalować nazwę pakietu „com.example” z urządzenia, na którym uruchomisz aplikację po jej uruchomieniu. To zadziałało dla mnie
źródło