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

问题描述 投票:0回答:4

应用可以在两家商店,Google Play和Apple Store中从一家公司转移到另一家公司。但是,据我所知,每个应用程序都有证书。我对此并不太了解,谷歌上的谷歌比实际帮助我更困惑。我负责应用程序移动和更新过程的初始化。

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

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

在Apple https://developer.apple.com/library/content/documentation/LanguagesUtilities/Conceptual/iTunesConnect_Guide/Chapters/TransferringAndDeletingApps.html

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

我在Apple上找到了这个:https://developer.apple.com/support/certificates/但是这让我感到困惑,因为在这种情况下它会有所帮助。

android ios certificate app-store transfer
4个回答
1
投票

达瓦尔的回答并不完全正确(至少对于Google Play来说)。除了Google Play,我无法评论任何地方,让我试着给出正确答案。

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

所以你有三个选择:

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

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

如果该应用已注册Google Play App Signing,则此问题将不存在。如果创建了一个新的应用程序,我强烈建议这样做。


0
投票

好的,感谢Allen R,他通过评论为这个案例提供了答案。

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

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

正如艾伦所述:

您无法重新签名.apk文件。你可以想象如果你能做到这一点会让一些第三方使用别人的签名会带来的安全问题。新应用无法使用其他密钥覆盖现有应用。

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


0
投票

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

  1. 密钥链中的iOS Distribution: <XXXX company name>
  2. app-store的配置文件。 对于Xcode项目配置。
  3. 应用程序的包标识符。 对于Xcode项目配置。如果你没有它,可以在Provisioning profile找到。你可以找到解码Provisioning profile的方法来获得它。

如果另一家公司只需要ipa上传到App商店,您需要以上项目来生成ipa结果。如果您需要上传到他们的App商店,那么您需要在他们的Itunes Connect中拥有一个帐户,并且它有权将应用程序上传到App商店。

您可以通过命令行工具Fastlane自动完成整个过程。我更喜欢the tutorial on the www.raywenderlich.com about Fastlane.


0
投票

---仅适用于iOS ---

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

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

1. Bundle Id(例如:com.domainname.appIdentifier)

2.供应配置文件

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

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

现在将应用程序从一个iTunes帐户转移到另一个帐户将仅使用捆绑包ID迁移应用程序。但它不会影响应用程序的当前工作。它将在转移之前工作得很好。

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


现在专门针对您的问题,DEV公司将应用程序转移到您公司X的iTunes帐户。它将使用包ID转移应用程序,意味着应用程序商店上的应用程序将不再在DEV公司的帐户下可用,也不能使用相同的包ID再次。只有您的公司X可以使用该捆绑ID,因为您从DEV公司转移它。

对于用户的观点,应用程序使用不会有任何变化或问题。即使您发布新版本的应用程序旧应用程序也能正常工作。如果您的应用程序中有推送通知功能,则唯一的问题是,因为您将更改服务器上的.p12 / PEM文件,因此旧用户不会在不更新应用程序的情况下获得推送通知。

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

© www.soinside.com 2019 - 2024. All rights reserved.