Установка показывает ошибку в консоли: ошибка установки конфликтующего поставщика

я экспериментирую с образцом программы NotesList в Android SDK. Я сделал небольшое изменение в программе, но когда я устанавливаю свою отредактированную версию, я продолжаю получать сообщение INSTALL_FAILED_CONFLICTING_PROVIDER в консоли, когда я пытаюсь установить его, когда оригинальная программа notes уже находится на устройстве. Что мне нужно изменить в провайдере, чтобы сделать его уникальной базой данных? Он отлично работает, если я удаляю оригинальную программу notes, а затем устанавливаю отредактированную версию.

15 ответов


авторитет, как указано в android:authorities должен быть уникальным. Цитата документация для этого атрибута:

чтобы избежать конфликтов, имена полномочий должны использовать соглашение об именах в стиле Java (например, com.образец.поставщик.cartoonprovider). Как правило, это имя подкласса ContentProvider, который реализует provider


Если у вас разные вкусы, и вы хотите избежать столкновений в имени органа, вы можете добавить applicationIdSuffix для построения типов и использования результирующего applicationId в вашем манифесте, вот так:

<...
 android:authorities="${applicationId}.contentprovider"/>

если вы используете Google Maps + Google Play Services внутри библиотечного проекта (особенно если вы недавно перенеслись из Eclipse в Android Studio), вы можете столкнуться с этой ошибкой при попытке запустить приложение, которое использует вашу библиотеку, в то время как другое приложение, которое использует ту же библиотеку, уже установлено на вашем устройстве.

исправления: убедитесь, что defaultConfig.applicationId определяется в разделе android build.gradle файл для каждого проекта, используя ваш библиотека

android {
    defaultConfig.applicationId = "com.company.appname"
}

Я бы рекомендовал использовать имя пакета определенному приложению. С этим исправлением имена поставщиков больше не будут конфликтовать, и ваше приложение будет работать так, как ожидалось.

симптомы

1.) Ваши пользователи видят страшную ошибку установки "-505" при установке приложения из Play Store.

2.) Вы увидите это сообщение об ошибке при попытке установить второе приложение, которое использует вашу библиотеку через Android Studio [INSTALL_FAILED_CONFLICTING_PROVIDER]:

Conflicting Provider

в консоли вы увидите следующее сообщение:

Package couldn't be installed in /data/app/com.company.appname-1
com.android.server.pm.PackageManagerException: 
Can't install because provider name 
com.google.android.gms.measurement.google_measurement_service 
(in package com.company.appname) is already used by
com.company.otherInstalledAppName

исправление состоит в том, чтобы убедиться, что defaultConfig.applicationId определяется в разделе android build.gradle файл для каждого проекта с помощью библиотеки

android {
    defaultConfig.applicationId = "com.company.appname"
}

больше чтения можно найти здесь, в исходном отчете об ошибке:проблема 784: несколько приложений, использующих один и тот же поставщик полномочий имя


Это также может произойти, когда у вас установлена более старая версия вашего приложения и внесены изменения в (поддержку) библиотеку или файл manifest. Удаление старых приложений с устройства (Settings --> Application --> <your application> --> Uninstall) решит проблему.


Если вы используете Facebook SDK, то проблема может быть в значении "полномочия", которое вы предоставляете для поставщика Facebook.

заменить -

<provider
        android:name="com.facebook.FacebookContentProvider"
        android:authorities="com.facebook.FacebookContentProvider"
        android:exported="true" />

С ->

<provider
        android:name="com.facebook.FacebookContentProvider"
        android:authorities="com.facebook.FacebookContentProvider[YOUR_APP_ID]"
        android:exported="true" />

возможно, Вам придется изменить defaultConfig.ApplicationId также, как предложено в других ответах.


та же ошибка может возникнуть после переименования пакетов. Проверьте значение в строке.xml для android:authorities из AndroidManifest.XML.

<provider
        android:authorities="@string/content_authority"
        android:name=".data.Provider"
        ... />

в строку.xml значение должно совпадать с именем пакета, объявленным в манифесте.

<string name="content_authority">com.whatever.android.sunshine.app</string>

имя поставщика Authority +, которое вы объявили в манифесте, вероятно


в основном это произошло со мной, когда я пытался изменить имя пакета приложения.

Итак, в эмуляторе было установлено то же приложение. Когда я попытался установить приложение после изменения имени пакета, он сказал, что авторитет уже используется старым приложением в устройстве.

просто после удаления приложения, он решил мою проблему.

кроме того, имя органа всегда должно быть:your.package.name.UNIQUENAME;

пример :

  <provider
        android:name="com.aviary.android.feather.cds.AviaryCdsProvider"
        android:authorities="your.package.name.AviaryCdsProvider"
       />

если вы используете Facebook внутри приложения проверьте тег поставщика внутри AndroidManifest файл и проверьте свой project Id правильно android:authorities

<provider android:name="com.facebook.FacebookContentProvider" android:authorities="com.facebook.app.FacebookContentProvider112623702612345" android:exported="true" />

У меня была аналогичная проблема, когда я использовал одну библиотеку в нескольких приложениях. Нужно было просто обновить свой AndroidManifest.xml с этим точным объявлением поставщика ниже.

<manifest ...>
    <application ...>
        <provider android:name="android.support.v4.content.FileProvider" android:authorities="${applicationId}.here.this.library.provider" android:exported="false" android:grantUriPermissions="true" tools:replace="android:authorities">
        </provider>
    </application>  
</manifest> 

Я пробовал много решений, но не смог найти решение... но это!--2-->ссылке помог мне... Я хочу дать подробную информацию о проблеме...

я запускал инструментальные тестовые случаи, поэтому мое приложение не было видно в launcher... но он был установлен, и, таким образом, используя Тот Же Контент-Провайдер. Итак, я должен как-то удалить его. Так что Settings -> Application Manager -> All Downloaded Apps -> uninstall all apps from your current development package

теперь попробуйте запустить... Это сработает...


установить с помощью adb с командой ./adb install -r abc.apk решит проблему (он будет перезаписывать, даже если устройство имеет более высокую версию приложения)


в моем устройстве android у меня было различные ароматы одного и того же приложения установить. Это дает мне ошибку ОШИБКА УСТАНОВКИ КОНФЛИКТУЮЩЕГО ПОСТАВЩИКА. поэтому я удаляю все мои вкусы одного и того же приложения. и попробовал!--6-->

adb install -r /Users/demo-debug-92acfc5.apk

это решило мою проблему.


возникла эта проблема.

решили by:

1 - открыть AndroidManifest.в XML

2-ctrl+f найти "провайдер"

3-найти поставщика и обновить имя корневого каталога там.

запустить проект. надеюсь, проблема будет исправлена!


Я думал, что удаление приложения, перетащив его значок "Удалить", решит проблему, но это не так.

вот что решило проблему:

  1. перейдите в Настройки
  2. Выбрать Приложения
  3. найдите свое приложение (да, я был удивлен, что все еще нашел его здесь!) и нажмите его
  4. в правом верхнем углу нажмите 3 точки
  5. выбираем "Удалить для всех пользователей"

попробуйте еще раз, должно работать сейчас.