web-dev-qa-db-ja.com

コンソールにインストールのエラーが表示される:INSTALL CONFLICTING PROVIDER

Android SDKのNotesListサンプルプログラムを試しています。プログラムを少し変更しましたが、編集したバージョンをインストールすると、元のノートプログラムが既にデバイスにあるときにインストールしようとすると、コンソールにINSTALL_FAILED_CONFLICTING_PROVIDERというメッセージが表示され続けます。プロバイダーを一意のデータベースにするには、プロバイダーで何を変更する必要がありますか?元のノートプログラムをアンインストールしてから、編集したバージョンをインストールすると正常に機能します。

117
johnsonjp34

Android:authoritiesにリストされている権限は一意でなければなりません。引用 この属性のドキュメント

競合を避けるために、機関名はJavaスタイルの命名規則(com.example.provider.cartoonproviderなど)を使用する必要があります。通常、プロバイダーを実装するContentProviderサブクラスの名前です

155
CommonsWare

さまざまなフレーバーがあり、オーソリティ名の衝突を避けたい場合は、applicationIdSuffixを追加してビルドタイプを作成し、結果のapplicationIdをマニフェストで次のように使用できます。

<...
 Android:authorities="${applicationId}.contentprovider"/>
102
Jose L Ugia

ライブラリプロジェクト内でGoogleマップとGoogle Play Servicesを使用している場合(特に最近EclipseからAndroid St​​udioに移行した場合)、ライブラリを使用するアプリを実行しようとすると、このエラーが発生することがあります。同じライブラリを使用する別のアプリが既にデバイスにインストールされています。

修正:defaultConfig.applicationIdがライブラリを使用する各プロジェクトのbuild.gradleファイルのAndroidセクションで定義されていることを確認してください

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

特定のアプリのパッケージ名を使用することをお勧めします。この修正により、プロバイダー名は競合しなくなり、アプリは期待どおりに実行されます。

症状

1.)Playストアからアプリをインストールすると、ユーザーに恐ろしい「-505」インストールエラーが表示されます。

2.)Android St​​udio [INSTALL_FAILED_CONFLICTING_PROVIDER]を介してライブラリを使用する2つ目のアプリをインストールしようとすると、このエラーメッセージが表示されます。

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がライブラリを使用する各プロジェクトのbuild.gradleファイルのAndroidセクションで定義されるようにすることです

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

詳細については、元のバグレポートを参照してください。 問題784:同じ機関プロバイダー名を使用する複数のアプリ

30
DiscDev

これは、アプリの古いバージョンがインストールされ、(サポート)ライブラリまたはマニフェストファイルに変更を加えた場合にも発生する可能性があります。デバイス(Settings --> Application --> <your application> --> Uninstall)から古いアプリケーションを削除すると、問題は解決します。

23
nburk

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も変更する必要があるかもしれません。

19
Ankit Aggarwal

パッケージの名前を変更した後、同じエラーが発生する場合があります。 AndroidManifest.xmlのAndroid:authoritiesのstring.xmlの値を確認します。

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

String.xmlでは、値はマニフェストで宣言されているパッケージ名と同じである必要があります。

<string name="content_authority">com.whatever.Android.sunshine.app</string>
15
burseaner

おそらくマニフェストで宣言した機関+プロバイダー名

8
Benoit

基本的に、これはアプリのパッケージ名を変更しようとしたときに起こりました。

したがって、エミュレーターでは、同じアプリが以前にインストールされていました。パッケージ名を変更した後にアプリをインストールしようとすると、デバイス内の古いアプリケーションで既に使用されている権限があります。

アプリケーションをアンインストールしただけで、問題が解決しました。

また、権限名は常にyour.package.name.UNIQUENAMEである必要があります。

例:

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

アプリ内でFacebookを使用している場合は、AndroidManifestファイル内のプロバイダータグを確認し、project IdAndroid:authoritiesに対して正しいことを確認してください

<provider Android:name="com.facebook.FacebookContentProvider" Android:authorities="com.facebook.app.FacebookContentProvider112623702612345" Android:exported="true" />
5
Dattatray Nande

複数のアプリケーションで1つのライブラリを使用すると、同様の問題が発生しました。以下の正確なプロバイダー宣言で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> 
4

私は多くの解決策を試しましたが、解決策を見つけることができませんでした...しかし、これは link 助けてくれました...私は問題についての詳細を伝えたいです...

インストルメント済みテストケースを実行していたため、ランチャーにアプリが表示されませんでしたが、インストールされたため、Same Content Providerを使用しました。だから、なんとかアンインストールする必要があります。だからSettings -> Application Manager -> All Downloaded Apps -> uninstall all apps from your current development package

今、実行してみてください...これは動作します...

3
Kushal

コマンド./adb install -r abc.apkを使用してadbを使用してインストールすると、問題が解決します(デバイスのバージョンが高い場合でも上書きされます)

2
Quang Vĩnh Hà

アイコンを「アンインストール」にドラッグしてアプリをアンインストールすると問題は解決すると思いましたが、解決しませんでした。

問題を解決したのは次のとおりです。

  1. 設定に移動
  2. アプリを選択
  3. アプリを見つけて(はい、まだここにあることに驚いた!)、それを押す
  4. 右上で、3つのドットを押します
  5. すべてのユーザーのアンインストール」を選択します

もう一度試してください、今すぐ動作するはずです。

1
Nicolas Raoul

この問題が発生しました。

解決済み

1-AndroidManifest.xmlを開きます

2-ctrl + f「プロバイダー」を見つける

3-プロバイダーを見つけて、ルートディレクトリ名を更新します。

プロジェクトを実行します。問題が修正されることを願っています!

1
Ali Nawaz

Androidデバイスには同じアプリの異なるフレーバーインストールがありました。これによりエラーが発生しますINSTALL FAILED CONFLICTING PROVIDER。同じアプリのすべてのフレーバーをアンインストールします。そして試した

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

それは私の問題を解決しました。

0
Vrushali Raut

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 [...]

here で述べたように、Xamarin.Build.Downloadを更新する必要があります。

  1. Xamarin.Build.Download Nuget Packageを0.4.12-preview3に更新します
    • Macでは、Add Packagesウィンドウでプレリリースパッケージを表示をチェックする必要があるかもしれません
  2. Visual Studioを閉じます
  3. NuGetパッケージのキャッシュされた場所をすべて削除します。
    • Windowsでは、ソリューションではなくVisual Studioを開きます。
      • ツール->オプション-> Nugetパッケージマネージャー->一般->すべてのNugetキャッシュをクリア
    • Macでは、次のフォルダーをワイプします。
      • ~/.local/share/NuGet
      • ~/.nuget/packages
      • ソリューション内のpackagesフォルダー
  4. ソリューションのbin/objフォルダーを削除する
  5. ソリューションをロードする
  6. ソリューションのNugetパッケージを復元します(自動的に実行されます)
  7. 再構築
0