即使在清单中定义提供者和GradleFile中的ApplicationId时也INSTALL_FAILED_CONFLICTING_PROVIDER

时间:2019-05-22 04:59:53

标签: android react-native android-manifest react-native-android manifest

我在清单文件中设置了provider,在build.gradle中设置了applicationId,但是仍然从使用相同库(提供程序)安装的另一个应用程序中收到了INSTALL_FAILED_CONFLICTING_PROVIDER错误,因此卸载了该应用程序但这不是我需要的解决方案。

尝试在build.gradle中设置applicationId,在清单中将provider名称authoritiesexported设置为false。

AndroidManifest.xml

<application...
    <provider
        android:name="com.sample.unique"
        android:authorities="com.sample.app"
        android:exported="false" />

android / app / build.gradle

defaultConfig {
        applicationId "com.another.data.provider"
        minSdkVersion rootProject.ext.minSdkVersion
        targetSdkVersion rootProject.ext.targetSdkVersion
        versionCode 1
        versionName "1.0"
    }

应安装该应用程序吗?还是我错过了什么?这是与我冲突的图书馆(提供者):mauron85/react-native-background-geolocation

这是输出日志:

com.android.builder.testing.api.DeviceException:
com.android.ddmlib.InstallException: 
INSTALL_FAILED_CONFLICTING_PROVIDER: Package couldn't be installed in 
/data/app/com.a.data.provider-v2vDNK1p47vixkJzr9jU_Q==: Can't 
install because provider name 
com.marianhello.app.mauron85.bgloc.provider (in package 
com.a.data.provider) is already used by 
com.another.data.provider

1 个答案:

答案 0 :(得分:0)

该库对所有应用程序使用相同的程序包名称。您可以在app/build.gradle中定义使用唯一的软件包名称。

示例:

...
defaultConfig {
  ...
  resValue "string", "mauron85_bgloc_content_authority", "com.marianhello.app.mauron85.bgloc.provider.devbuild"
}

参考: https://github.com/mauron85/react-native-background-geolocation/issues/344