Play商店有新版本的应用程序,但没有显示更新

时间:2014-11-19 15:37:20

标签: android google-play

我的应用程序安装在我的单元格中,版本为1.0.5(版本代码9)

在Google Play商店中,我可以看到我的应用版本1.0.7(版本代码11),但它没有显示按钮更新(它显示按钮"打开&#34 ;)

这是我必须要包含在我的应用程序中吗?

这是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>

10 个答案:

答案 0 :(得分:27)

确保您在移动设备上安装的应用不是使用调试密钥库构建的apk。如果Play商店应用程序证书与安装的应用程序证书不匹配,则Play商店将始终显示为“打开”按钮而不是“更新”。 我实现了这一点,当我做了试验和错误与调试和签署apk的唯一签名apk工作。并且始终使用versionCode来比较版本而不是versionName。

答案 1 :(得分:9)

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

如果您上次安装的版本来自Android工作室,则您无法看到更新&#39;游戏商店中的按钮。你会看到&#39; Open&#39;而是按钮。我用我的开发手机对其进行了测试,其中应用程序是直接使用Android工作室和我的一些实际用户安装的。我的用户从Play商店安装了最新版本。当我推送新的更新时,他们会看到更新&#39;游戏商店中的按钮。

答案 2 :(得分:7)

在设置中清除Play商店APP的缓存也很有帮助。这不应该是必要的。问题是这会阻止以后更新到正确的版本。仅更新版本号,但不更新二进制文件。谷歌播放然后认为一切正常,但它仍然使用旧的APK。

答案 3 :(得分:5)

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

答案 4 :(得分:2)

您必须确保android:versionCode(不是应用版本)大于之前的版本 如果版本较低,Google不会向您发出警告,并允许您发布较低版本号。

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

答案 5 :(得分:1)

在Playstore上更新并发布新版本后,请确保还按 Update Rollout (更新推出)按钮,实际上,默认情况下,Playstore将app推广到应用的 50%您的用户。 “更新”发布按钮在Playstore信息中心以及您的管理版本下方均可用

第二个build.gradle文件中,确保增加 versionCode versionName

答案 6 :(得分:0)

在进入更复杂的解决方案之前,请尝试清除Play商店的缓存并查看您应用的Play商店列表。 就我而言,它奏效了。

答案 7 :(得分:0)

如果您刚刚发布了Beta版或正式版,则必须等待至少两个小时才能在商店中查看最新版本。

一旦获得批准,您肯定会看到“更新”按钮。

答案 8 :(得分:0)

有两种可能。首先,清除Google在您的设备上播放缓存,以确保未缓存。如果仍然看到打开状态,请执行以下步骤来查找问题。您需要Google商店上的apk文件与您的版本进行比较。您可以使用在线服务,为您提供Google Play的APK。现在,我们需要检查两件事。 证书:您从Google Play下载的apk应该与您上传的apk(或aab)具有相同的证书。要对此进行检查,可以在apk上使用keytool:

 #include <stdio.h>

double func(){
     double y= 5 ;
     return (double)y/3;

    /*// Code that works as expected:
    double y= (double)5/3;
    return y;
     */
}

    int main()
{

    double x ;
    x= (double)5/3;

    if (x == func())
        printf("%lf equal to %lf\n", x ,func());
    else
        printf("%lf not equal to %lf\n", x, func());

    return 0;
}

版本代码:要检查版本代码,请使用android studio上的分析工具。确保Google Play上的版本号应该更大。

答案 9 :(得分:0)

因此,首先您必须确保以下三点到位: 与您在 google Play 商店中发布的版本相比,您正在从 android studio 安装完全相同的变体。 您从 android studio 安装的应用程序具有较低的“版本代码” 您使用的是完全相同的签名密钥。 最有可能的第三点是阻止它工作的原因。问题是,如果您使用 app bundle 作为发布格式,那么当您上传 bundle 时还没有创建该 apk,它只会在稍后阶段创建和签名,当应用程序即将在特定的平台上分发时设备。 不幸的是,在我的情况下,即使您使用完全相同的密钥来签署应用程序,也有可能签名仍然不会完全匹配,原因是如果您已经为 Google Play 商店签名,谷歌会添加一些元数据:“然而,它确实插入了极少量的元数据,有助于验证分发的来源和完整性。此元数据有两种形式:对于上传到 Google Play 的所有应用程序,Play 一直在签名块之后添加安全元数据启用授权 P2P 应用程序共享等功能。我们最初在 2017 年的一篇博客文章中宣布了这一点。对于作为应用程序包上传的应用程序,我们将通过引入所谓的源标记来提高这种安全性。此源元数据被插入到应用程序的清单由 bundletool 生成。当 APK 在 Play 的服务器上生成时,除了您的应用签名密钥之外,它还使用 Google 密钥进行签名。”

您可以比较两个证书的运行情况相同:

keytool -list -printcert -jarfile yourapk.apk

您应该在本地 apk 和 google play apk 上运行上述内容

根据一些用户的说法,还有第四点需要满足:

  1. 该应用至少需要从 Google Play 商店安装一次,然后才会显示更新按钮。

我还没有能够为我的应用显示上传按钮