Return-Path: X-Original-To: apmail-cordova-commits-archive@www.apache.org Delivered-To: apmail-cordova-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 80BBC981C for ; Tue, 23 Dec 2014 21:31:26 +0000 (UTC) Received: (qmail 50531 invoked by uid 500); 23 Dec 2014 21:31:26 -0000 Delivered-To: apmail-cordova-commits-archive@cordova.apache.org Received: (qmail 50507 invoked by uid 500); 23 Dec 2014 21:31:26 -0000 Mailing-List: contact commits-help@cordova.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Delivered-To: mailing list commits@cordova.apache.org Received: (qmail 50497 invoked by uid 99); 23 Dec 2014 21:31:26 -0000 Received: from tyr.zones.apache.org (HELO tyr.zones.apache.org) (140.211.11.114) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 23 Dec 2014 21:31:26 +0000 Received: by tyr.zones.apache.org (Postfix, from userid 65534) id 1D081A3649B; Tue, 23 Dec 2014 21:31:26 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: agrieve@apache.org To: commits@cordova.apache.org Date: Tue, 23 Dec 2014 21:31:27 -0000 Message-Id: <07e41b29307c42d6903d73438bc3307f@git.apache.org> In-Reply-To: <6daa61578ac24759ac31b7e8cd7d64a7@git.apache.org> References: <6daa61578ac24759ac31b7e8cd7d64a7@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: [2/2] android commit: CB-7980 Add --minSdkVersion and --versionCode flags to cordova/build command CB-7980 Add --minSdkVersion and --versionCode flags to cordova/build command These are also exposed via environment variables: ANDROID_VERSION_CODE, ANDROID_MIN_SDK_VERSION This also fixes build.gradle modifying the value set by ANDROID_VERSION_CODE when multi-apk is enabled (override should never be modified) Project: http://git-wip-us.apache.org/repos/asf/cordova-android/repo Commit: http://git-wip-us.apache.org/repos/asf/cordova-android/commit/7cfb33d0 Tree: http://git-wip-us.apache.org/repos/asf/cordova-android/tree/7cfb33d0 Diff: http://git-wip-us.apache.org/repos/asf/cordova-android/diff/7cfb33d0 Branch: refs/heads/master Commit: 7cfb33d0ef057ec5cbe23c30b4ac0c8dd504933c Parents: 9224ab1 Author: Andrew Grieve Authored: Tue Dec 23 16:26:43 2014 -0500 Committer: Andrew Grieve Committed: Tue Dec 23 16:26:43 2014 -0500 ---------------------------------------------------------------------- bin/templates/cordova/lib/build.js | 34 +++++++++++++++++++++++---------- bin/templates/project/build.gradle | 17 ++++++++++++++--- 2 files changed, 38 insertions(+), 13 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cordova-android/blob/7cfb33d0/bin/templates/cordova/lib/build.js ---------------------------------------------------------------------- diff --git a/bin/templates/cordova/lib/build.js b/bin/templates/cordova/lib/build.js index 86b5e66..b507c5e 100644 --- a/bin/templates/cordova/lib/build.js +++ b/bin/templates/cordova/lib/build.js @@ -306,15 +306,21 @@ function parseOpts(options, resolvedTarget) { // Iterate through command line options for (var i=0; options && (i < options.length); ++i) { if (/^--/.exec(options[i])) { - var option = options[i].substring(2); - switch(option) { + var keyValue = options[i].substring(2).split('='); + var flagName = keyValue[0]; + var flagValue = keyValue[1]; + if ((flagName == 'versionCode' || flagName == 'minSdkVersion') && !flagValue) { + flagValue = options[i + 1]; + ++i; + } + switch(flagName) { case 'debug': case 'release': - ret.buildType = option; + ret.buildType = flagName; break; case 'ant': case 'gradle': - ret.buildMethod = option; + ret.buildMethod = flagName; break; case 'device': case 'emulator': @@ -324,8 +330,14 @@ function parseOpts(options, resolvedTarget) { case 'nobuild' : ret.buildMethod = 'none'; break; + case 'versionCode': + process.env['ANDROID_VERSION_CODE'] = flagValue; + break; + case 'minSdkVersion': + process.env['ANDROID_MIN_SDK_VERSION'] = flagValue; + break; default : - console.warn('Build option \'' + options[i] + '\' not recognized (ignoring).'); + console.warn('Build option --\'' + flagName + '\' not recognized (ignoring).'); } } else { console.warn('Build option \'' + options[i] + '\' not recognized (ignoring).'); @@ -445,12 +457,14 @@ module.exports.findBestApkForArchitecture = function(buildResults, arch) { }; module.exports.help = function() { - console.log('Usage: ' + path.relative(process.cwd(), path.join(ROOT, 'cordova', 'build')) + ' [build_type]'); - console.log('Build Types : '); - console.log(' \'--debug\': Default build, will build project in debug mode'); + console.log('Usage: ' + path.relative(process.cwd(), path.join(ROOT, 'cordova', 'build')) + ' [flags]'); + console.log('Flags:'); + console.log(' \'--debug\': will build project in debug mode (default)'); console.log(' \'--release\': will build project for release'); - console.log(' \'--ant\': Default build, will build project with ant'); + console.log(' \'--ant\': will build project with ant (default)'); console.log(' \'--gradle\': will build project with gradle'); - console.log(' \'--nobuild\': will skip build process (can be used with run command)'); + console.log(' \'--nobuild\': will skip build process (useful when using run command)'); + console.log(' \'--versionCode=#\': Override versionCode for this build. Useful for uploading multiple APKs. Requires --gradle.'); + console.log(' \'--minSdkVersion=#\': Override minSdkVersion for this build. Useful for uploading multiple APKs. Requires --gradle.'); process.exit(0); }; http://git-wip-us.apache.org/repos/asf/cordova-android/blob/7cfb33d0/bin/templates/project/build.gradle ---------------------------------------------------------------------- diff --git a/bin/templates/project/build.gradle b/bin/templates/project/build.gradle index 573b289..e147691 100644 --- a/bin/templates/project/build.gradle +++ b/bin/templates/project/build.gradle @@ -74,6 +74,9 @@ android { defaultConfig { versionCode Integer.parseInt(System.env.ANDROID_VERSION_CODE ?: ("" + getIntFromManifest("versionCode") + "0")) + if (System.env.ANDROID_MIN_SDK_VERSION) { + minSdkVersion Integer.parseInt(System.env.ANDROID_MIN_SDK_VERSION) + } } compileSdkVersion cordova.cordovaSdkVersion @@ -82,13 +85,13 @@ android { if (multiarch || System.env.BUILD_MULTIPLE_APKS) { productFlavors { armv7 { - versionCode defaultConfig.versionCode + 2 + versionCode System.env.ANDROID_VERSION_CODE ?: defaultConfig.versionCode + 2 ndk { abiFilters "armeabi-v7a", "" } } x86 { - versionCode defaultConfig.versionCode + 4 + versionCode System.env.ANDROID_VERSION_CODE ?: defaultConfig.versionCode + 4 ndk { abiFilters "x86", "" } @@ -99,8 +102,16 @@ android { } } } - } else if (getIntFromManifest("minSdkVersion") >= 20) { + } else if (!System.env.ANDROID_VERSION_CODE) { + def minSdkVersion = Integer.parseInt(System.env.ANDROID_MIN_SDK_VERSION ?: "" + getIntFromManifest("minSdkVersion")) + // Vary versionCode by the two most common API levels: + // 14 is ICS, which is the lowest API level for many apps. + // 20 is Lollipop, which is the lowest API level for the updatable system webview. + if (minSdkVersion >= 20) { defaultConfig.versionCode += 9 + } else if (minSdkVersion >= 14) { + defaultConfig.versionCode += 8 + } } compileOptions { --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscribe@cordova.apache.org For additional commands, e-mail: commits-help@cordova.apache.org