【问题标题】:How to programmatically prevent "conflicting provider" message如何以编程方式防止“提供者冲突”消息
【发布时间】:2016-04-22 15:05:56
【问题描述】:

谁能告诉我如何在一台设备上安装不同版本的不同版本,而不会在 PlayStore 或 AndroidStudio 中收到“重复提供程序”错误消息?

我的应用针对不同的国家/地区有不同的风格,在安装另一个应用之前总是卸载应用很烦人。

我试过了:

productFlavors {
    austria {
        manifestPlaceholders = [
            // prevent "duplicate provider authority" message
            providerAuthority: "com.example.app.at",
        ]
    }
    germany {
        manifestPlaceholders = [
            // prevent "duplicate provider authority" message
            providerAuthority: "com.example.app.de",
        ]
    }
    //...
}

在我的 AndroidManifest 中我添加了:

android:authorities="${providerAuthority}"

给我的

<application/> 

标签。 这并不能解决我的问题。

我不使用 ContentProvider,所以我也尝试将 Stub ContentProvider 类添加到项目中,并在

中声明 android:authorities="${providerAuthority}"
<provider/> 

标签包括 Stub ContentProvider 的名称 --> 不成功。 对于其他一些想法或更正,我会非常高兴。

更新:

尝试在我的设备上安装应用程序时从 Android Studio 收到的错误消息。

【问题讨论】:

  • “我不使用 ContentProvider”——那么具体是什么给了你这个例外? “并且在我的 AndroidManifest 中我添加了”——如果你不使用 ContentProvider,你在哪里添加了这个属性?您可以考虑发布安装异常的整个堆栈跟踪,这应该会显示在 LogCat 中。
  • android:authorities 应添加到您的提供商标签中,请澄清您的问题并发布您 manifest.xm 的相关部分

标签: android android-contentprovider android-build-flavors android-variants android-flavors


【解决方案1】:

我找到了解决办法:

当我说我没有提供者时,我撒了谎。我只是不再使用它了。所以我的问题的解决方案就在这里(或简单地删除未使用的提供程序):https://stackoverflow.com/a/24850080/3734116

通过查看我在 build/intermediates/manifests/ 中生成/合并的 AndroidManifest,我终于意识到了这一点,在那里我可以找到适合我所有口味的 Manifest。在那里我看到一个提供者总是拥有相同的权限。

也可能是另一个问题(但不适用于我)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-29
    相关资源
    最近更新 更多