我的应用程序安装在我的单元格中,版本为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>
答案 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不会向您发出警告,并允许您发布较低版本号。
示例:强>
如果您之前的versionCode
为132
,则必须确保您发布的版本大于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 上运行上述内容
根据一些用户的说法,还有第四点需要满足:
我还没有能够为我的应用显示上传按钮