没有的versionName应该是一个问题就在这里,因为它会从config.xml文件复制到平台AndroidManifest.xml文件/安卓(至少在科尔多瓦3.4.0)。那部分我没有问题。
获取versionCode递增,但是,这是一项相当艰巨的任务。实际上,我添加到Grunt的Gruntfile.js中的一系列任务。
这是string-replace任务。 “grunt string-replace:versionCode”将增加存储在package.json中的versionCode。 “咕噜字符串替换:androidVersionCode”将采取价值,放入平台/安卓/ AndroidManifest.xml文件:
// STRING-REPLACE
'string-replace': {
versionCode: { // update the version code stored in package.json
options: {
replacements: [
{
pattern: /['"]androidVersionCode['"]:.*?['"](\d*)['"]/ig,
replacement: function (match, p1, offset, string) {
return '"androidVersionCode": "' + (parseInt(p1) + 1) + '"';
}
}
]
},
files: {
'package.json': 'package.json'
}
},
androidVersionCode: { // update the version code stored in AndroidManifest.xml
options: {
replacements: [
{
pattern: /android:versionCode=['"](\d*)['"]/ig,
replacement: function (match, p1, offset, string) {
var pkg = grunt.file.readJSON('package.json');
grunt.log.writeln("pkg.androidVersionCode: " + pkg.androidVersionCode);
grunt.log.writeln('Returning: ' + 'android:versionCode="' + pkg.androidVersionCode + '"');
return 'android:versionCode="' + pkg.androidVersionCode + '"';
}
}
]
},
files: {
'platforms/android/AndroidManifest.xml': 'platforms/android/AndroidManifest.xml'
}
}
}
它需要这个之前从Gruntfile.js文件调用使用,当然(以及NPM安装咕噜字符串替换):
grunt.loadNpmTasks('grunt-string-replace');
你需要添加一行如以下为这一切工作的文件的package.json:
"androidVersionCode": "13", // or whatever value is current for you
它会增加字符串替换:versionCode任务上面。我把这条线放在包里。json以“版本”开头的行之后:
一个重要的技巧得到这个工作是确保调用“cordova build android”而不是调用“cordova prepare android”,然后“grunt replace -string:androidVersionCode“,然后”cordova compile android“。 Build只是调用“prepare”然后“compile”的一个快捷方式,在这两个任务之间就是当你必须修改AndroidManifest.xml文件以防止它被覆盖时。
我的构建过程要复杂得多,因为我实际上grunt-bump用于步兵在递增的的package.json版本值,然后注入到这一点使用xmlpoke的咕噜config.xml和使用我对网页字符串替换 。我使用grunt-shell来实际调用所有Cordova构建步骤,以将所有内容复制到所需位置并按正确顺序运行。
让我知道这是否有帮助。
机器人:=的versionName“1.5.3 “会自动更新小部件版本在config.xml中,所以没有什么可做的。对于versionCode,我还没有找到任何东西,我认为config.xml中的versionCode仅支持phonegap构建,但不支持cordova或phonegap本地构建。我不知道是否已经存在一个钩子,但你应该能够建立自己的,并将其放入after_prepare。 – QuickFix
我重新检查是否android:versionName =“1.X.X”会自动更新,我发现它没有。我删除了平台,并从头开始,并具有相同的结果 - android:versionName =“1.0”。你能证实这个在Cordova 3.4.0上的作品吗? –
我确认它至少适用于我。你只有在添加平台后,或者在构建之后才检查? – QuickFix