Подтвердить что ты не робот

Установка показывает ошибку в консоли: УСТАНАВЛИВАЙТЕ НЕИСПРАВНОСТЬ ПОСТАВЩИКА КОНФЛИКТА

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

4b9b3361

Ответ 1

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

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

Ответ 2

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

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

Ответ 3

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

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

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

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

Симптомы

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

2.) Вы увидите это сообщение об ошибке при попытке установить второе приложение, которое использует вашу библиотеку через Android Studio [INSTALL_FAILED_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: несколько приложений, использующих имя одного поставщика полномочий

Ответ 4

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

Ответ 5

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

REPLACE -

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

WITH →

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

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

Ответ 6

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

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

В файле string.xml значение должно совпадать с именем вашего пакета, объявленным в манифесте.

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

Ответ 7

Имя органа управления/провайдера, указанное в манифесте, вероятно,

Ответ 8

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

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

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

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

пример:

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

Ответ 9

Если вы используете Facebook внутри приложения, проверьте тег провайдера внутри файла AndroidManifest и проверьте, что ваш project Id правильный для android:authorities

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

Ответ 10

У меня была похожая проблема, когда я использовал одну библиотеку в нескольких приложениях. Необходимо было просто обновить 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> 

Ответ 11

Я пробовал много решений, но не смог найти решение... но эта ссылка помогла мне... Я хочу подробно рассказать о проблеме...

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

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

Ответ 12

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

Ответ 13

Обнаружена эта проблема.

Решено это путем:

1 - открыть AndroidManifest.xml

2 - Ctrl + F найти "провайдер"

3 - найдите провайдера и обновите там имя вашего корневого каталога.

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

Ответ 14

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

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

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

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

Ответ 15

На моем устройстве Android были разные версии одного приложения. Это дает мне ошибку УСТАНОВИТЬ СБОЙ ПРОВАЙДЕРА КОНФЛИКТОВ. поэтому я удаляю все версии одного и того же приложения. и попробовал

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

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

Ответ 16

Если вы используете Xamarin и получаете эту ошибку (возможно, из-за Firebase.Crashlytics):

INSTALL_FAILED_CONFLICTING_PROVIDER
Package couldn't be installed in [...]
Can't install because provider name dollar_openBracket_applicationId_closeBracket (in package [...]]) is already used by [...]

Как уже упоминалось здесь, вам необходимо обновить Xamarin.Build.Download:

  1. Обновите пакет Nuget для Xamarin.Build.Download до версии 0.4.12-preview3.
    • На Mac может потребоваться установить флажок Показать предварительные версии в окне "Добавить пакеты".
  2. Закрыть Visual Studio
  3. Удалите все кэшированные расположения пакетов NuGet:
    • В Windows откройте Visual Studio, но не решение:
      • Сервис → Параметр → Диспетчер пакетов Nuget → Общие → Очистить все кэш Nuget
    • На Mac протрите следующие папки:
      • ~/.local/share/NuGet
      • ~/.nuget/packages
      • папка packages в решении
  4. Удалить папки bin/obj в решении
  5. Загрузить решение
  6. Восстановление пакетов Nuget для решения (должно запускаться автоматически)
  7. перестраивать