我在谷歌播放商店有一个AndroidAPK,目标SDK为23。
我已经发布了一个新版本(相同的目标SDK)和谷歌显示我这个错误:
如果我继续(我艰难地学会了),那么当前用户都不能升级到这个版本。我必须恢复代码,增加内部版本号,重建APK以“回滚”到可用版本。
然而,我不知道为什么谷歌向我显示这个错误。请注意,“0支持的Android设备”是一个转移注意力的问题——这是过去24小时谷歌游戏中的一个已知问题——如果你发布APK显示的是设备的真实数量。
请给我一些关于差异或导致此错误的原因的线索:
我能够解决这个问题:-
问题在于版本代码-我相信您没有在应用程序中定义任何版本代码,它是由以下公式生成的:
versionCode = MAJOR * 10000 + MINOR * 100 + PATCH
但是有时最新版本的自动生成版本代码值会变得比以前的版本小(在您的情况下是10403
你需要做的是:-
在标签中的config. xml中添加版本代码,如下所示:-
android-versionCode="104280"
104280将为您工作,因为它比旧版本更大。
现在让它发布没有任何错误。
谢了Sanny
我正在使用VS-TACO并遇到了这个问题。
稍微澄清一下Sanny的回答,它为我解决了这个问题。显然,在android-versionCode的某个地方是使用以下公式计算的:
MAJOR * 100000 + MINOR * 1000 + PATCH * 10
但现在它正在使用Sanny显示的版本进行计算:
MAJOR * 10000 + MINOR * 100 + PATCH
因此,例如,如果您的版本是1.3.1,android-versionCode被计算为“103010”
现在您将版本更改为1.3.2,它以新的方式计算,因此版本为“10302”,小于“103010”。
因此,要解决这个问题(我想如果android版本一直以新方式计算,那么永远),您可以将版本标签添加到config. xml:
<?xml version="1.0" encoding="utf-8"?>
<widget android-versionCode="103020" ...
或者,您可以进入Visual Studio并使用config. xml的可视化编辑器,转到“Android”部分并更改“版本代码:”值。
我遇到了类似的问题,但能够使用以下用作持续部署管道一部分的Node脚本解决它。
这将从包含当前应用版本的VERSION.md
文件读取。
它也可以使用--version
参数运行,以仅更新config. xml
中的当前版本,而不设置构建版本。
#!/usr/bin/env node
var fs = require('fs');
var xml2js = require('xml2js');
const cliArgs = require('command-line-args');
const options = cliArgs([
{name: 'version', type: Boolean}
]);
// Read config.xml
var xml = fs.readFileSync('config.xml', 'utf8');
// Parse XML to JS Obj
xml2js.parseString(xml, function (err, result) {
if(err) {
return console.log(err);
}
// Get JS Obj
var obj = result;
const version = fs.readFileSync('VERSION.md', 'utf8');
if (options.version){
// Write current version
obj['widget']['$']['version'] = version;
} else {
// Increment build numbers (separately for iOS and Android)
obj['widget']['$']['ios-CFBundleVersion'] = version;
// remove all periods to create an integer for Android
const [major, minor, patch] = version.split('.')
obj['widget']['$']['android-versionCode'] = major+pad_number(minor)+pad_number(patch);
}
// Build XML from JS Obj
var builder = new xml2js.Builder();
var xml = builder.buildObject(obj);
// Write config.xml
fs.writeFile('config.xml', xml, function(err) {
if(err) {
return console.log(err);
}
console.log('Build number successfully incremented');
});
});
/**
* Pad a number with prepending zeros if less than 10
* @see [Javascript function to pad a string](https://stackoverflow.com/questions/2686855/is-there-a-javascript-function-that-can-pad-a-string-to-get-to-a-determined-leng)
*/
function pad_number(orig) {
return ("00"+orig).slice(-2);
}