沒有的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