跳到主要内容

如何处理APK文件的签名密钥

注意

该门户网站正在开发中。文档的完整版本请看这里.

什么是Android应用程序的签名?

RuStore支持一种应用程序格式 --- APK文件。

每个APK文件必须用数字证书签名,Android使用它来识别应用程序的作者。签名需要像个人密码一样安全地保存。

Android如何验证版本?

Android会比较每个已签名APK文件的证书数字指纹。

数字指纹是一串字节,通过对公钥应用加密哈希函数生成。

数字指纹大致如下所示:

43:51:43:a1:b5:fc:8b:b7:0a:3a:a9:b1:0f:66:73:a8

为什么需要进行签名验证?

如果应用程序已在Google Play上发布,这一过程就是必需的。在RuStore上传此类应用程序时,需要使用与Google Play相同的签名。这样,用户就能无误地更新他们设备上已安装的应用程序,RuStore上提供了更新版本。

是否必须使用Google Play的签名,如果有自己的签名?

不必。如果您的应用程序在Google Play上,但您有自己的签名,您不需要进行签名验证。您可以直接将带有自己签名的文件上传到RuStore。这个过程只在您使用Google Play的签名时才必要。您还可以上传带有两种签名的APK包。

为什么用户无法更新应用程序?

出版商常见的一个错误是在RuStore和其他商店发布应用程序时使用不同的签名。

例如,最初上传的应用程序版本用一个证书签名。而下一个版本则用另一个证书签名。由于这些差异,Android不允许安装此应用程序的更新。

为什么会这样发生:

  1. 开发者可能丢失了证书,并为在商店发布应用程序生成了新证书。

  2. 开发者可以在不同的商店发布相同的应用程序。例如,最初开发者在Google Play发布应用程序时使用了一个证书。但转到RuStore后开始使用另一个证书。

因此,用户分为两类:

  • 从Google Play安装应用程序的用户;

  • 从RuStore下载的用户。

如果用户安装了RuStore并想更新之前从Google Play下载的应用程序,他将无法这样做,因为证书不同。

如何解决这个问题?

  1. 推荐的方式是对所有版本的应用程序使用同一个证书,以避免来自不同来源的版本更新问题。

  2. 激进的方式是要求用户删除无法更新的"旧"版本应用程序,并请求下载新版本。但这种方法可能会导致部分用户流失。

  3. 还可以通过RuStore的技术支持来更新应用程序的签名。详细信息在下面的部分中有描述。

RuStore建议使用本地保存的证书,以更好地控制应用程序的发布。

如果您使用Google Play App Signing,它允许Google Play独立生成和存储签名,您可能会面临无法在Google Play外使用证书的问题。

如何通过RuStore支持解决问题?

如果需要更新签名,请向support@rustore.ru的技术支持发送相应的邮件。

专家会创建一个请求并检查应用程序是否属于请求者开发者。

如果身份验证成功,专家将启动停用旧证书的过程。之后,开发者只需上传一个新证书签名的APK文件版本,该证书适用于RuStore和其他商店。

如果需要使用不同的签名怎么办?

如果您为RuStore发布了单独的签名,但应用程序已在Google Play上发布 --- 上传带有两种签名的APK文件,并默认选择在Google服务之外发布的签名。这将减少用户更新时的错误数量。