others-how to solve `Error: INSTALL_FAILED_CONFLICTING_PROVIDER` when trying to install an app in the phone?
1. Problem
When trying to install an app in a phone, we got this error:
Installation did not succeed.
The application could not be installed: INSTALL_FAILED_CONFLICTING_PROVIDER
List of apks:
[0] '/Users/bswen/myproject3/app/app/build/outputs/apk/proCn/debug/app-proCn-debug.apk'
Installation failed due to: 'Failed to commit install session 854235070 with command cmd package install-commit 854235070. Error: INSTALL_FAILED_CONFLICTING_PROVIDER: Scanning Failed.: Can't install because provider name com.app.app (in package com.bswen.app3) is already used by com.app.app'
Retry
Failed to launch an application on all devices
The core error message is:
Error: INSTALL_FAILED_CONFLICTING_PROVIDER: Scanning Failed.: Can't install because provider name com.app.app (in package com.bswen.app3) is already used by com.app.app'
The configuration file: AndroidManifest.xml
:
<provider
android:name=".MyContentProvider"
android:enabled="true"
android:authorities="com.app.app;com.app.apps;com.app.app3;com.app.appxm;com.bswen.app3"
android:exported="false"
android:grantUriPermissions="true" />
2. Solution
2.1 The reason of this problem
Android manifest providers defined in main use all the package names. We should only use one package name for one build variant.
A provider is part of an Android application, which often provides its own UI for working with the data. However, content providers are primarily intended to be used by other applications, which access the provider using a provider client object
And android:authorities
is a list of one or more URI authorities that identify data offered by the content provider. Multiple authorities are listed by separating their names with a semicolon.
2.2 The working solution for me
Change the provider authorities
to use only the current package name:
<provider
android:name=".MyContentProvider"
android:enabled="true"
android:authorities="com.bswen.app3"
android:exported="false"
android:grantUriPermissions="true" />
In other build variant, define its own and override the default:
<provider
tools:node="replace"
android:name=".MyContentProvider"
android:enabled="true"
android:authorities="com.app.app3"
android:exported="false"
android:grantUriPermissions="true" />
You can get more information from here.
3. Summary
In this post, I demonstrated how to solve the Error: INSTALL_FAILED_CONFLICTING_PROVIDER
when trying to install an app in the phone. The key point is to change the authorities
in our <Provider>
in AndroidManifest.xml
.That’s it, thanks for your reading.