通过Google Play更新应用,该应用由APK文件安装

时间:2017-12-06 07:55:43

标签: android installation google-play

我有一个未通过Google Play商店部署的应用。

它拥有自己的APK文件服务器,之前它没有"更新"功能。由于它是专用应用程序,因此需要更新应用程序的用户需要卸载当前应用程序并安装新应用程序。

现在我需要通过google play更新这些已安装的应用。

问题是: 我可以通过Google Play商店更新应用,通过APK文件安装吗?

经过测试的环境:

  • Google Play服务11.7.46
  • Play商店8.4.19
  • Galaxy S7
  • 仅发布了Koeran市场。


我试过了:

1)构建三个测试APK版本1,2,3。

2)通过Google Play商店部署版本2 并更新版本3

3) [FAILED] 通过ADB安装APK 版本1 ,无法通过Google Play商店更新。 (在我的测试应用的Google Play页面中,我可以看到按钮"卸载/打开"

这正是我想要做的。

4) [FAILED] 通过ADB安装APK 版本2 ,无法通过Google Play商店更新。 (在我的测试应用的Google Play页面中,我可以看到按钮"卸载/打开"

我的一些同事说这个案子是可能的,但我无法实现。

我发现签名的APK和Google Play提取的APK之间存在差异。截至binary compare,许多文件都不同。

Compared Image

特别是AndroidManifest.xml,此信息已添加到Google Play-extraction apk中。

<meta-data
    android:name="com.android.vending.derived.apk.id"
    android:value="1" />

可以更新从google play发布页面下载的旧版本apk。

我找到了以下答案,但似乎在我的情况下不起作用。

Will apk installed manually (not from play store) receive notification when update becomes available?

  

您将收到更新/在Google Play&#34;中查看该应用   应用&#34;仅当两个条件发生时才显示选项卡:

     

APK包名称与上传到Google Play的名称相同

     

用于在Play商店中对应用程序进行签名的密钥库是相同的   keystore用于释放你手动安装的apk。

1 个答案:

答案 0 :(得分:5)

要通过Play进行更新,应用必须位于&#34;用户的库中#34;。这是一个难以理解的概念,但基本上归结为&#34;用户是否曾在任何设备上安装Play&#34;。如果用户在其用户库中拥有该签名,并且签名与Play商店中的签名相同,则该应用将更新。

如果用户从未在Play中安装过该游戏,则Play不会对其进行更新。

所以你想要发生的事情不会发生,除非用户以前在任何设备上从Play安装过它。