【问题标题】:After setup app flavouring i got this ERROR "install_failed_conflicting_provider" while run the app/设置应用程序调味后,我在运行应用程序时收到此错误“install_failed_conflicting_provider”/
【发布时间】:2020-09-24 06:51:03
【问题描述】:

完美运行。我可以查看 pdf 但现在由于此错误,我无法在手机中安装其他版本:

Installation did not succeed. The application could not be installed: INSTALL_FAILED_CONFLICTING_PROVIDER Installation failed due to: 'null' Retry

参考代码:

应用级 build.gradle 文件

    defaultConfig {
    applicationId "com.abc.xyz"
    minSdkVersion 21
    targetSdkVersion 29
    testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"}



flavorDimensions "version"
productFlavors {
    appdev {
        dimension "version"
        applicationIdSuffix ".dev"
        versionCode buildVersionCodeDev()
        versionName version_dev

     
    }
    appqa {
        dimension "version"
        applicationIdSuffix ".qa"
        versionCode buildVersionCodeQA()
        versionName version_qa   
    }
    apppro {
        dimension "version"
        applicationIdSuffix ".pro"
        versionCode buildVersionCodePro()
        versionName version_pro
       

    }

}

AndroidManifest.xml

    <provider
        android:name="androidx.core.content.FileProvider"
        android:authorities="com.freshdesk.helpdesk.provider"
        android:exported="false"
        android:grantUriPermissions="true"
        tools:replace="android:authorities">


           <meta-data
                android:name="android.support.FILE_PROVIDER_PATHS"
                android:resource="@xml/provider_paths" />
    </provider>

Note:-我点击了这个链接,但仍然面临同样的问题,即使我从 AndroidManifest.xml 中删除了提供程序标签,但仍然遇到同样的错误,但无法在同一设备上安装另一个 falvour。

Link1

Link2

Link3

【问题讨论】:

    标签: android build.gradle android-install-apk android-build-flavors android-gradle-3.0


    【解决方案1】:

    您的文件提供者权限必须依赖于包名。现在,它不是动态的,对你所有的口味都是一样的。您不能拥有多个具有相同 authorities 值的文件提供程序的应用程序。 使这个值取决于applicationId,如下所示:

    <provider
        android:name="androidx.core.content.FileProvider"
        android:authorities="${applicationId}.provider"
        android:exported="false"
        android:grantUriPermissions="true"
        tools:replace="android:authorities">
    
           <meta-data
                android:name="android.support.FILE_PROVIDER_PATHS"
                android:resource="@xml/provider_paths" />
    </provider>
    

    参考documentation

    在此示例中,android:authorities 属性指定了您要用于由 FileProvider 生成的内容 URI 的 URI 权限。在示例中,权限为 com.example.myapp.fileprovider。对于您自己的应用程序,指定一个权限,该权限由应用程序的 android:package 值和附加的字符串“fileprovider”组成。要了解有关权限值的更多信息,请参阅主题内容 URI 和 android:authorities 属性的文档。

    【讨论】:

    • 我从 AndroidManifest.xml 中删除了提供程序代码,但仍然出现同样的错误,您能告诉我这有什么问题吗?
    • 感谢我的工作,我的一个文件中的硬编码包 (com.freshdesk.helpdesk.provider ) 名称确实存在问题,因此我用 applicationId.com.freshdesk.helpdesk.provider 替换。
    猜你喜欢
    • 1970-01-01
    • 2015-01-29
    • 1970-01-01
    • 2021-02-27
    • 1970-01-01
    • 2021-10-20
    • 1970-01-01
    • 2021-10-22
    • 1970-01-01
    相关资源
    最近更新 更多