我联系了Google支持团队,他们在24小时内回复了我。
问题是我的AndroidManifest.xml
里的android:versionCode
比之前发布的版本低。修复后,我能够成功发布我的应用程序。
我在config.xml
文件的<manifest
标签中将android-versionCode
更改为更高的值,使得AndroidManifest.xml
具有更高的值。
你好,
感谢您与Google Play开发者支持团队联系。
您看到该错误消息是因为您的新APK版本代码小于先前APK的版本代码。新的APK必须始终具有比上一个版本更高的版本代码,否则Play商店将无法知道新的APK是否为更新。请将您的新APK的版本代码更改为至少206020。
祝好!
Google Play开发者支持团队
如果你的旧版APK版本号比新版APK版本号高,那么就会出现这个错误。
重要的不是版本名称,它实际上可以是任何字符串,只有版本代码必须始终高于以前的版本。
https://developer.android.com/studio/publish/versioning
在pubspec.yaml
文件中,版本行中加号后面的数字必须比Google Play控制台屏幕上显示的"1个应用程序包已停用"的旧版本代码高。 如果这是您的版本行,则为50:
version: 1.0.0+50
我遇到了同样的问题,有趣的是新版本(12.0.0)的versioncode(120001)比之前版本(11.4.5)的versioncode(1104058)要低。
我按照这个链接在Ionic 2中设置Android版本号解决了这个问题。
Update both versionCode and versionName.
minSdkVesion 16
targetSdkVesion 26
versionCode 2
versionName 1.1
build.gradle (:app)
文件中。 - Cullubconfig.xml
文件中的<widget>
元素中,将android-versionCode
属性增加一:<widget id="com.example.foo" version="1.0.1" android-versionCode="10001" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
之后,运行cordova clean android
和cordova build android --release
,我得到了一个.apk
文件,可以被Google Play控制台接受。
你是否已经将versionCode从之前的版本升级了?
minSdkVesion 16
targetSdkVesion 26
versionCode 1 //you need to upgrade it from previous one
versionName 1.0
<widget id="com.myapp.mobile" version="1.17.01" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
在cordova prepare
操作期间,此config.xml文件将合并到平台的清单文件中(例如,Android的platforms\android\app\src\main\AndroidManifest.xml)。合并后的清单文件将包含从config.xml中列出的版本生成的版本代码和版本字符串。例如:<manifest android:hardwareAccelerated="true" android:versionCode="11701" android:versionName="1.17.01" package="com.myapp.mobile" xmlns:android="http://schemas.android.com/apk/res/android">
这个版本代码11701将会在Play控制台上列出。
为了自动设置更高的版本,您可以在gradle.properties文件中添加一个变量设置cdvVersionCodeForceAbiDigit=true
,它将自动将版本乘以10。请注意,此逻辑在平台应用程序文件夹根目录下的build.gradle文件中进行布置。使用cdvBuildMultipleApks
变量切换其他逻辑以基于产品风味(arm、x86等)设置不同的值。但我认为今天推荐的方法是上传“bundle”,让Google自动生成各种设备配置的单独apk。