Answers:
列出的权限android:authorities
必须是唯一的。引用此属性的文档:
为避免冲突,授权机构名称应使用Java样式的命名约定(例如com.example.provider.cartoonprovider)。通常,实现提供程序的是ContentProvider子类的名称
<provider>
从库清单中删除,并在应用程序级别使用唯一的授权字符串对其进行定义。
android:authorities
或<provider>
在我的库清单,并收到此错误。
如果您使用不同的样式,并且希望避免在权限名称中发生冲突,则可以添加一个applicationIdSuffix
来构建类型并applicationId
在清单中使用结果,如下所示:
<...
android:authorities="${applicationId}.contentprovider"/>
applicationId
在每个产品口味定义中定义自己的名称。developer.android.com/studio/build/...
applicationId
无论如何您都必须为每种口味创建不同的口味。如果您具有不同的buildType,那么您也希望applicationId
它们之间也有所不同,这就是该applicationIdSuffix
属性的作用。
如果您在图书馆项目中使用Google Maps + Google Play服务(尤其是如果您最近从Eclipse迁移到Android Studio),则当您尝试运行使用图书馆的应用程序而使用图书馆的其他应用程序时,会遇到此错误您的设备上已经安装了相同的库。
修复:
确保build.gradle
使用库在每个项目的文件的android部分中定义了defaultConfig.applicationId
android {
defaultConfig.applicationId = "com.company.appname"
}
我建议使用特定应用程序的软件包名称。使用此修复程序,提供程序名称将不再冲突,并且您的应用程序将按预期运行。
病征
1.)从Play商店安装应用程序时,您的用户看到了可怕的“ -505”安装错误。
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
解决方法是确保build.gradle
使用库在每个项目的文件的android部分中定义了defaultConfig.applicationId
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
按照其他答案中的建议更改。
重命名程序包后,可能会发生相同的错误。android:authorities
从AndroidManifest.xml 检查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"
/>
当我在多个应用程序中使用一个库时,我遇到了类似的问题。只需使用下面的确切提供程序声明更新您的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>
我以为可以通过将其图标拖动到“卸载”来卸载应用程序来解决问题,但是并不能解决问题。
解决问题的方法如下:
再试一次,现在应该可以了。
如果您在应用程序内部使用Facebook,请检查AndroidManifest
文件中的提供者标签,并检查您的应用程序是否project Id
正确android:authorities
<provider android:name="com.facebook.FacebookContentProvider" android:authorities="com.facebook.app.FacebookContentProvider112623702612345" android:exported="true" />
遇到了这个问题。
解决方法:
1-打开AndroidManifest.xml
2-ctrl + f查找“提供程序”
3-查找提供商,并在此处更新您的根目录名称。
运行项目。希望问题将得到解决!
使用带有命令的adb安装./adb install -r abc.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 [...]
如前所述在这里,你需要更新Xamarin.Build.Download:
~/.local/share/NuGet
~/.nuget/packages
packages
解决方案中的文件夹在我的android设备上,我安装了相同的应用程序,但口味不同。这给我错误安装失败的冲突提供程序。所以我卸载了同一应用程序的所有版本。并尝试
adb install -r /Users/demo-debug-92acfc5.apk
它解决了我的问题。
您可以在运行应用程序之后从运行应用程序的设备上卸载软件包名称“ com.example”。这对我有用
android:authorities
在AndroidManifest
provider
标签中使用了属性。我使用该项目作为我的android库项目,并使用该库项目开发了几个项目。install_failed_conflicting_provider
如果使用公共库项目,如何解决该问题。