应用商店有新版本的应用,但没有显示更新。

73

我在手机上安装了版本号为1.0.5(版本代码9)的应用程序。

在Google Play商店中,我可以看到版本号为1.0.7(版本代码11)的我的应用程序,但它没有显示更新按钮(而是显示“打开”按钮)。

这是我需要在我的应用程序中包含的内容吗?

这是Play商店的一个错误吗?

这是配置问题吗?

我附上了我的AndroidManifest.xml文件。

<uses-sdk
    android:minSdkVersion="16"
    android:targetSdkVersion="20" />

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="com.spg.googlemaps.permission.MAPS_RECEIVE" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />

<!--
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.BATTERY_STATS" />
-->
<uses-feature
    android:name="android.hardware.camera"
    android:required="true" />
<uses-feature
    android:name="android.hardware.camera.front"
    android:required="false" />

<permission
    android:name="com.spg.googlemaps.permission.MAPS_RECEIVE"
    android:protectionLevel="signature" />

<uses-feature
    android:glEsVersion="0x00020000"
    android:required="true" />

<application
    android:name="com.myapp.MyApplication"
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:logo="@drawable/ic_logo"
    android:theme="@style/Theme.AppCompat" >
    <uses-library android:name="com.google.android.maps" />

    <meta-data
        android:name="com.google.android.gms.version"
        android:value="@integer/google_play_services_version" />

    <activity
        android:name="com.myapp.SplashScreen"
        android:label="@string/app_name"
        android:noHistory="true"
        android:screenOrientation="portrait"
        android:theme="@android:style/Theme.Black.NoTitleBar" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:name="com.myapp.LoginActivity"
        android:label="@string/title_activity_login"
        android:noHistory="true"
        android:screenOrientation="portrait"
        android:windowSoftInputMode="adjustResize|stateVisible" >
    </activity>
    <activity
        android:name="com.myapp.DashBoard"
        android:label="@string/app_name"
        android:screenOrientation="portrait" >
    </activity>
    <activity
        android:name="com.myapp.FragmentTabsPdv"
        android:label="@string/app_name"
        android:screenOrientation="portrait" >
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.myapp.DashBoard" />
    </activity>

    <meta-data
        android:name="com.google.android.maps.v2.API_KEY"
        android:value="@string/maps_key" />

    <activity
        android:name="com.myapp.RutaActivity"
        android:label="@string/title_activity_ruta"
        android:screenOrientation="portrait" >
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.myapp.FragmentTabsPdv" />
    </activity>
    <activity
        android:name="com.myapp.BaseActivity"
        android:label="@string/title_activity_base"
        android:screenOrientation="portrait" >
    </activity>
    <activity
        android:name="com.myapp.SettingsActivity"
        android:label="@string/title_activity_settings"
        android:screenOrientation="portrait" >
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.myapp.DashBoard" />
    </activity>
    <activity
        android:name="com.myapp.InformacionPdvActivity"
        android:label="@string/infoPdv"
        android:screenOrientation="portrait" >
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.myapp.RutaActivity" />
    </activity>

    <receiver android:name="com.myapp.BaseActivity$NetworkChangeReceiver" >
        <intent-filter>
            <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
        </intent-filter>
    </receiver>

    <activity
        android:name="com.myapp.MetricaTabs"
        android:label="@string/title_activity_metrica_tabs"
        android:screenOrientation="portrait"
        android:windowSoftInputMode="adjustPan" >
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.myapp.RutaActivity" />
    </activity>

    <meta-data
        android:name="com.crashlytics.ApiKey"
        android:value="7d80161d908dd5424f232598dba254c7d2a43307" />

    <activity
        android:name="com.myapp.SendMessageActivity"
        android:label="@string/title_activity_send_message" >
    </activity>
</application>


5
在商店里购买该商品需要几个小时才能获得。 - tyczj
4
是的,但那不是问题所在。就像我之前所说,Play Store已经以公共模式(而不是管理员模式)显示了新版本,但它没有显示更新。我昨天上传了apk文件。 - Juliatzin
2
是的,如果我卸载/重新安装,它将重新安装新版本。但问题是我的用户不执行此操作。 - Juliatzin
4
你有找到任何解决方案吗?我也遇到了同样的问题。 - anubh
不好意思,我不记得我做了什么,但是没有找到解决方案。 - Juliatzin
显示剩余6条评论
14个回答

69

确保您在移动设备中安装的应用程序不是使用调试密钥存储构建的apk。如果Play商店应用程序证书与已安装应用程序证书不匹配,则Play商店将始终显示“打开”按钮,而不是“更新”按钮。 当我只使用签名的apk进行试验和错误时,我意识到了这一点。并且始终使用versionCode比较版本,而不是versionName。


3
我始终使用签名版! - Juliatzin
4
你说的“debug keystore”是什么意思?在发布模式下构建和归档项目后,你会生成一个密钥库。没有“Debug”密钥库,只有一个密钥库。 - Roy Doron
3
这段话是关于Android Studio自动生成APK文件时使用默认密钥库文件签名的说明。这个密钥库文件被称作debug.keystore,每次生成APK文件时都会用它来签名。Windows电脑上可以在以下路径找到该文件:C:\Users\XXXXX.android\debug.keystore - Amit Tumkur
2
更新也不会显示已签名的包。我认为这是因为谷歌商店在apk到达应用商店之前会剥离一些信息,这构成了包中的一些微小差异,这就是为什么它不会显示更新的原因。 - dtech
2
即使我们签名了APK,仍然有一些用户会遇到这个问题。当他们第一次在Play商店搜索并打开应用程序时,再次按返回按钮并单击应用程序时,将显示更新按钮。开发人员是否可以做些什么来解决这个问题? - Amol Chakane
显示剩余3条评论

18

在设置中清除Play Store应用程序的缓存也有助于解决问题,但通常情况下不需要这样做。这会阻止以后正确版本的更新。只有版本号会被更新,而不是二进制文件。Google Play会认为一切正常,但它仍然使用旧版APK。


你可以在Google Play商店哪里清除缓存? - amit pandya
抱歉回复晚了,请按照以下说明进行操作:https://support.google.com/googleplay/answer/7513003。 - Tomas Andersen
9
如果我们的应用程序已经上线并且有相当数量的用户使用,我们不能告诉最终用户清除Play Store应用程序缓存/数据。 - Mahesh Jamdade
嗨。是的,我看到了。我还没有找到其他的解决方法。所以你至少应该更新你的FAQ或文档/帮助部分,包括有关清除缓存部分的信息。如果有人发现,请在这里发布回复。 - Tomas Andersen
清除Play Store应用程序缓存并没有帮助。即使我的versionCode、version和所有其他项目都正确设置,更新也不会显示出来。 - raddevus

13

希望这篇文章能对某些人有所帮助,因为我从这个社区中受益匪浅。

如果您上一次安装的应用程序版本是来自Android Studio,则在Play商店中将不会看到“更新”按钮,而是会看到“打开”按钮。我已经在我的开发手机和一些实际用户的设备上测试过此现象。我的用户是从Play商店安装最新版本的。当我推送一个新的更新时,他们会在Play商店看到“更新”按钮。


1
Android Studio使用调试密钥进行调试,这些密钥与发布构建所使用的发布密钥不匹配。由于您的Android Studio版本与Play Store版本具有不同的密钥,因此它不会自动更新。 - Mooing Duck
如果您从版本控制台下载旧版APK,也不会看到“更新”按钮。 - Bruno Eduardo
对我来说也是一样的,即使我使用相同的键。 - Sinapse
谢谢!你救了我的命!是的,你必须将所有更新推送到Play商店并从中下载,而不是从Android Studio或Visual Studio Code的版本进行测试。Google很重要,可能会涉及安全问题。我一直拥有启动按钮,现在我有升级(注意,部署应用程序包到播放控制台后,您需要等待一段时间。祝好运!) - Laurent

10

我的应用程序更新按钮一开始没有显示,这是因为我没有直接从Play商店安装它。现在的解决方案是从Play商店下载旧版本的应用程序,然后在发布应用程序更新后上传新版本,更新按钮将显示。


我有同样的问题,我安装了发布版APK并更新了版本名称和版本代码,然后上传到Play商店。但是,我仍然看到“安装”按钮而不是“更新”按钮。 - Nimisha V
@nimishaV 直接从Play商店安装APK,然后当你上传新版本时,它会显示更新按钮。 - kishan verma
我找到了解决方案,为什么我从其他来源安装APK时没有更新选项。这是由于应用签名的原因。 - Nimisha V

9

在尝试更复杂的解决方案之前,您可以尝试清除Play Store的缓存并查看您的应用程序在Play Store上的列表。在我的情况下,这个方法有效。


4

在发布 Android 应用时,你必须确保 android:versionCode(不是应用程序版本)高于之前的版本号。

如果版本号较低,Google 不会警告你并允许你发布该版本。

示例:
如果你之前的 versionCode132,你必须确保你发布的版本号大于 132。


我的versionCode比较大,但仍然没有显示更新。实际上,所有被认为是要求的项目都已经在我的应用中更改了,但更新仍然不想显示。(截至2021年7月2日) - raddevus
非常感谢。 它帮助了我。我不知道之前的版本代码,我已经挣扎了一个星期,然后我检查了之前的构建版本代码并进行了更改,再次上传后几分钟内就上线了。 非常感谢。 - Yash Vaghela

3
如果您刚发布了Beta或生产版本,那么您必须等待至少两个小时,然后才能在商店上检查您的最新版本。一旦获得批准,您一定会看到更新按钮。
====================================
如果应用程序已经获得批准,但是测试设备仍未显示更新按钮该怎么办?
这表示Google Play Store应用程序已缓存页面,请尝试杀死/关闭Google Play Store应用程序并重新打开,并尝试清除缓存。

1
如果我在内部测试中发布了2个版本,那么我是否会得到更新选项? - Gopal Awasthi
是的,您将为所有添加的测试 Gmail 帐户获得更新选项。 - Harpreet

1
在更新并发布新版本到Play商店后,请确保您也按下更新推出按钮。实际上,默认情况下,Play商店只向您的用户推出50%的应用程序。 更新推出按钮也可以在Play商店仪表板上,在您的管理发布下方找到。
其次,在build.gradle文件中,请确保增加versionCodeversionName

1
我刚刚发现Google Play不会向安装Android 11的设备显示我的应用程序的更新,因为我的应用程序当前版本的目标是Android 10。更具体地说,我上传和发布在Google Play上的最新版本针对Android API级别29,该级别映射到Android版本10及以下的设备。根据Google的规定,我必须更改我的应用程序Android.manifest文件,以将其目标设置为Android API级别30,这样它就可以与Android 11兼容。在我执行此操作之后,使用Android 11的用户将开始在Google Play商店中看到我的应用程序的更新。当然,这可以归纳为一句话:“仅当应用程序的目标Android Level API与应用程序的Android.manifest文件中定义的目标Android Level API兼容时,Google Play才会向设备显示应用程序的更新。”以下是官方链接:

0

有几种可能性。首先,在您的设备上清除Google Play的缓存,以确保它没有被缓存。如果您仍然看到打开,请执行以下步骤查找问题。您需要在Google商店上获取apk文件以与您的版本进行比较。您可以使用在线服务从Google Play获取apk。现在我们需要检查两件事情。 证书:您从Google Play下载的apk应该与您上传的apk(或aab)具有相同的证书。要检查此内容,您可以在您的apk上使用keytool:

keytool -list -printcert -jarfile yourApp.apk

版本代码:使用Android Studio上的分析工具来检查版本代码。确保在Google Play上的版本号应该更大。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接