【问题标题】:Crashlytics Beta build for Android will not install if production build exists: 'The package conflicts with an existing package by the same name'如果存在生产版本,则不会安装适用于 Android 的 Crashlytics Beta 版本:“该包与同名的现有包冲突”
【发布时间】:2017-07-12 08:38:36
【问题描述】:

我们的团队通过 Crashlytics 分发测试版,我们大多数人都在手机上安装了生产版。如果不删除生产应用程序,我们将无法安装 beta 版本。 (两个版本都有不同的 applicationId,如下所示: 产品:com.abc 测试版:com.abc.beta)

我们尝试使用相同的密钥库(作为生产)和不同的密钥库来签署 beta 版本,但它并没有改变任何东西。

有没有办法在同一台设备上同时安装测试版和生产版?

【问题讨论】:

    标签: android crashlytics-android crashlytics-beta


    【解决方案1】:

    在调查了一段时间后,在 Fabric 团队的帮助下,我设法找到了问题并找到了解决方法。

    使用adb logcat,我发现了失败的根本错误:

    Package attempting to redeclare permission com.abc.permission.C2D_MESSAGE already owned by 
    

    测试版应用似乎正在尝试写入生产版本所拥有的同一个权限文件。为避免这种情况,我将AndroidManifest.xml 编辑如下:

    <uses-permission android:name="${applicationId}.permission.C2D_MESSAGE" />
    <permission android:name="${applicationId}.permission.C2D_MESSAGE" android:protectionLevel="signature" />
    

    这样 Beta 版应用就有自己的写入权限文件夹。

    希望这对那里的人有所帮助!

    【讨论】:

      【解决方案2】:

      来自 Fabric 的 Mike。 Apple 有一项限制,仅允许 Testflight 或移动设备管理器安装具有相同捆绑包 ID 的应用程序,因此如果捆绑包 ID 相同,我们将无法安装从 App Store 安装的版本。例如,您无法在 App Store 生产版本上安装应用的 beta 生产版本。

      【讨论】:

      • 感谢您的回复,但这不是我要问的。首先,我们有不同的包 id 用于生产和 beta 版本,目前在 iOS 上安装两者都没有问题。但是,我们不能在 Android 上做同样的事情。我们不想在 prod 上安装 beta 版本,只是希望它们分别安装在同一设备上。这有可能实现吗?
      • 抱歉耽搁了,我是OOO。您有不同的软件包名称并且无法安装 Android 的 beta 版本?应该没问题,所以如果是这种情况,请发送电子邮件至 support(at)fabric(dot)io,以便我们在安装失败时查看 Logcat 的一些日志。
      猜你喜欢
      • 1970-01-01
      • 2019-07-27
      • 1970-01-01
      • 2016-05-26
      • 2021-10-02
      • 1970-01-01
      • 2019-10-26
      • 2023-04-09
      • 1970-01-01
      相关资源
      最近更新 更多