Android SDKのNotesListサンプルプログラムを試しています。プログラムを少し変更しましたが、編集したバージョンをインストールすると、元のノートプログラムが既にデバイスにあるときにインストールしようとすると、コンソールにINSTALL_FAILED_CONFLICTING_PROVIDERというメッセージが表示され続けます。プロバイダーを一意のデータベースにするには、プロバイダーで何を変更する必要がありますか?元のノートプログラムをアンインストールしてから、編集したバージョンをインストールすると正常に機能します。
Android:authorities
にリストされている権限は一意でなければなりません。引用 この属性のドキュメント :
競合を避けるために、機関名はJavaスタイルの命名規則(com.example.provider.cartoonproviderなど)を使用する必要があります。通常、プロバイダーを実装するContentProviderサブクラスの名前です
さまざまなフレーバーがあり、オーソリティ名の衝突を避けたい場合は、applicationIdSuffix
を追加してビルドタイプを作成し、結果のapplicationId
をマニフェストで次のように使用できます。
<...
Android:authorities="${applicationId}.contentprovider"/>
ライブラリプロジェクト内でGoogleマップとGoogle Play Servicesを使用している場合(特に最近EclipseからAndroid Studioに移行した場合)、ライブラリを使用するアプリを実行しようとすると、このエラーが発生することがあります。同じライブラリを使用する別のアプリが既にデバイスにインストールされています。
修正:defaultConfig.applicationIdがライブラリを使用する各プロジェクトのbuild.gradle
ファイルのAndroidセクションで定義されていることを確認してください
Android {
defaultConfig.applicationId = "com.company.appname"
}
特定のアプリのパッケージ名を使用することをお勧めします。この修正により、プロバイダー名は競合しなくなり、アプリは期待どおりに実行されます。
症状
1.)Playストアからアプリをインストールすると、ユーザーに恐ろしい「-505」インストールエラーが表示されます。
2.)Android Studio [INSTALL_FAILED_CONFLICTING_PROVIDER]を介してライブラリを使用する2つ目のアプリをインストールしようとすると、このエラーメッセージが表示されます。
コンソールに次のようなメッセージが表示されます。
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:同じ機関プロバイダー名を使用する複数のアプリ
これは、アプリの古いバージョンがインストールされ、(サポート)ライブラリまたはマニフェストファイルに変更を加えた場合にも発生する可能性があります。デバイス(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
も変更する必要があるかもしれません。
パッケージの名前を変更した後、同じエラーが発生する場合があります。 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>
おそらくマニフェストで宣言した機関+プロバイダー名
基本的に、これはアプリのパッケージ名を変更しようとしたときに起こりました。
したがって、エミュレーターでは、同じアプリが以前にインストールされていました。パッケージ名を変更した後にアプリをインストールしようとすると、デバイス内の古いアプリケーションで既に使用されている権限があります。
アプリケーションをアンインストールしただけで、問題が解決しました。
また、権限名は常に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" />
複数のアプリケーションで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>
私は多くの解決策を試しましたが、解決策を見つけることができませんでした...しかし、これは link 助けてくれました...私は問題についての詳細を伝えたいです...
インストルメント済みテストケースを実行していたため、ランチャーにアプリが表示されませんでしたが、インストールされたため、Same Content Providerを使用しました。だから、なんとかアンインストールする必要があります。だからSettings -> Application Manager -> All Downloaded Apps -> uninstall all apps from your current development package
今、実行してみてください...これは動作します...
コマンド./adb install -r abc.apk
を使用してadbを使用してインストールすると、問題が解決します(デバイスのバージョンが高い場合でも上書きされます)
アイコンを「アンインストール」にドラッグしてアプリをアンインストールすると問題は解決すると思いましたが、解決しませんでした。
問題を解決したのは次のとおりです。
もう一度試してください、今すぐ動作するはずです。
この問題が発生しました。
解決済み
1-AndroidManifest.xmlを開きます
2-ctrl + f「プロバイダー」を見つける
3-プロバイダーを見つけて、ルートディレクトリ名を更新します。
プロジェクトを実行します。問題が修正されることを願っています!
Androidデバイスには同じアプリの異なるフレーバーインストールがありました。これによりエラーが発生しますINSTALL FAILED CONFLICTING PROVIDER。同じアプリのすべてのフレーバーをアンインストールします。そして試した
adb install -r /Users/demo-debug-92acfc5.apk
それは私の問題を解決しました。
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を更新する必要があります。
~/.local/share/NuGet
~/.nuget/packages
packages
フォルダー