我们的团队通过 Crashlytics 分发 beta 版本,我们大多数人都在手机上安装了生产版本。如果不删除生产应用程序,我们将无法安装 beta 版本。(两个版本都有不同的 applicationId,如:prod: com.abc
beta: com.abc.beta
)
我们尝试使用相同的密钥库(作为生产)和不同的密钥库来签署 beta 版本,但它并没有改变任何东西。
有没有办法在同一台设备上同时安装测试版和生产版?
我们的团队通过 Crashlytics 分发 beta 版本,我们大多数人都在手机上安装了生产版本。如果不删除生产应用程序,我们将无法安装 beta 版本。(两个版本都有不同的 applicationId,如:prod: com.abc
beta: com.abc.beta
)
我们尝试使用相同的密钥库(作为生产)和不同的密钥库来签署 beta 版本,但它并没有改变任何东西。
有没有办法在同一台设备上同时安装测试版和生产版?
在调查了一段时间后,在 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 版应用程序就有自己的权限文件夹可以写入。
希望这可以帮助那里的人!
来自 Fabric 的 Mike。Apple 有一项限制,仅允许 Testflight 或移动设备管理器安装具有相同捆绑包 ID 的应用程序,因此如果捆绑包 ID 相同,我们将无法安装从 App Store 安装的版本。例如,您无法在 App Store 生产版本上安装应用的 beta 生产版本。