应用程序从一家公司转移到另一家公司和证书



应用程序可以在两家商店(Google Play和Apple Store)中从一家公司转移到另一家公司。但是,正如我被告知的那样,每个应用程序都有一个证书。我对此了解不多,谷歌搜索让我感到困惑,而不是它实际上对我的帮助。我负责应用程序移动和更新过程的初始化。

给我任务的X公司有一个应用程序。该应用程序由DEV公司开发。一段时间后,两家公司之间的关系在应用程序源代码的所有权方面变得有点冻结。最后,两家公司都同意,他们将简单地将应用程序从 DEV Company 拥有的应用商店帐户转移到他们自己的应用商店帐户。为了在没有任何律师参与的情况下保持和平,X公司将从头开始重新设计应用程序,而不使用当前应用程序中的任何代码。因此,DEV公司不会交出源代码,只会交出APK。因此,X公司将创建一个新应用程序,一旦该应用程序上线,请停用旧应用程序。

我在谷歌上阅读了有关应用程序转移的两个文档 https://support.google.com/googleplay/android-developer/answer/6230247?hl=en-GB

和苹果 https://developer.apple.com/library/content/documentation/LanguagesUtilities/Conceptual/iTunesConnect_Guide/Chapters/TransferringAndDeletingApps.html

只要没有应用内购买,转移应用就没有问题。但是,我找不到有关证书的任何信息。证书是否与应用一起提供并将自动转移,或者证书是否属于 DEV 帐户的所有者,在这种情况下为 DEV 公司?这意味着该应用程序需要使用新证书重新编译,我相信,这意味着所有用户都需要为此原因更新他们的应用程序,对吗?

我在苹果上发现了这个:https://developer.apple.com/support/certificates/但在这种情况下,这让我感到困惑而不是帮助。

Davatar的回答不太正确(至少对于Google Play而言)。除了谷歌播放之外,我无法在任何地方发表评论,让我尝试给出正确的答案。

应用具有标识应用所有者的证书。这类似于 SSL 证书。这个想法是告诉最终用户,但更重要的是Android操作系统,应用程序的当前版本是由与原始应用程序相同的人创建的。否则,任何人都可以更新设备上的应用。

因此,您有三种选择:

  1. 在我看来,更好的选择是从原始开发人员那里获得证书。然后可以将应用程序转移到新的开发人员帐户,当新版本发布时,所有用户都将获得更新
  2. 如果无法交出证书,情况更糟。在这种情况下,别无选择,只能发布应用程序的新版本并取消发布旧版本。如果你这样做
    • 现有用户将无法获得更新,他们将不得不手动安装新版本
    • 现有用户仍然可以使用旧应用
    • 现有用户仍然可以安装旧应用(新用户不能)
  3. 注册应用以进行 Google Play 应用签名。然后签名和证书将由谷歌存储。转移应用时,可以为新所有者创建新的上传密钥,该密钥具有选项 1 的所有优点。

如您所见,第二个选项对于您的客户和用户来说是一个更糟糕的选择。选项 1 或 3 要好得多。

如果应用已注册 Google Play 应用签名,则不会出现此问题。如果创建了新应用程序,我强烈建议这样做。

好的,感谢Allen R,他通过评论给出了这个案例的答案。

下面是有关对密钥进行签名的信息 Android https://developer.android.com/studio/publish/app-signing.html 和 Apple https://developer.apple.com/support/code-signing/,但这只是对应用程序签名密钥的解释。

基本上,应用程序具有证书,用于标识应用程序的创建者/开发人员。这类似于 SSL 证书。这个想法是告诉最终用户,应用程序的当前版本是由原始开发人员创建的。

正如艾伦所说:

不能对.apk文件进行签名。您可以想象,如果您可以这样做,允许某些第三方使用其他人的签名,将会带来安全问题。新应用将无法使用其他键覆盖现有应用。

因此,在当前情况下,将应用程序转移到新帐户后,必须将其停用并发布新帐户。用户将无法再使用原始应用。如果应用设计正确,它应该在启动/登录/尽可能显示错误消息,并通知用户应用已弃用,必须从应用商店下载新版本。

对于 iOS 应用程序,必须具有以下项目。

  1. iOS Distribution: <XXXX company name>在钥匙串中。
  2. 应用商店的预配配置文件。
    用于 Xcode 项目配置。
  3. 应用的捆绑标识符。
    用于 Xcode 项目配置。如果您没有它,可以在Provisioning profile中找到它。您可以找到解码Provisioning profile以获取它的方法。

如果其他公司只需要上传到应用商店的ipa,则需要上述项目才能产生ipa结果。如果您需要上传到他们的应用商店,那么您需要在他们的iTunes Connect中拥有一个帐户,并且它具有将应用程序上传到App Store的访问权限。

您可以通过命令行工具Fastlane自动完成整个过程。我更喜欢关于快车道的 www.raywenderlich.com 教程。

--- 仅适用于 iOS ---

我也有类似的情况,我需要将我的应用程序从一个iTunes帐户转移到另一个iTunes帐户。

基本上,每个iOS应用程序都有4个身份:

1. 捆绑 ID(例如:com.domainname.appIdentifier)

2. 预配配置文件

3. APNS 证书(如果为应用实施了推送通知)

4.帐户证书(这些是特定于开发人员帐户的,表示在同一帐户下发布的所有应用程序的唯一)

现在,将应用程序从一个iTunes帐户转移到另一个帐户将仅使用捆绑ID迁移应用程序。但它不会影响应用程序的当前工作。它将像传输前一样工作。

现在,如果您希望上传新版本的应用程序,则需要创建新的配置文件,新的APNS,并且您将使用新帐户的帐户证书。(请记住,您需要更新服务器上的 APNS 证书(.p12/PEM 文件)才能使推送通知正常工作。


现在具体来说,DEV公司会将应用程序转移到您公司X的iTunes帐户。它将使用捆绑 ID 传输应用程序,这意味着应用程序商店中的应用程序将不再在 DEV 公司的帐户下可用,也无法再次使用相同的捆绑 ID。只有您的公司 X 可以使用您从 DEV 公司转移获得的捆绑 ID。

从用户的角度来看,应用程序使用不会有任何变化或问题。即使您发布新版本的应用程序旧应用程序也可以正常工作。如果您的应用程序中有推送通知功能,唯一的问题可能是,因为您将更改服务器上的 .p12/PEM 文件,因此老用户如果不更新应用程序,将无法收到推送通知。

如果您需要更多解释,或者如果您在任何地方有困惑,请告诉我。

相关内容

最新更新