From fcece7e1891b0c38d2d430e5228657a968d561dd Mon Sep 17 00:00:00 2001 From: Andrew Grieve Date: Mon, 19 Jan 2015 21:49:36 -0500 Subject: [PATCH 1/7] Allow `--ant`, `--gradle` for `cordova/run` --- bin/templates/cordova/lib/run.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/templates/cordova/lib/run.js b/bin/templates/cordova/lib/run.js index db783d91..df8996d0 100644 --- a/bin/templates/cordova/lib/run.js +++ b/bin/templates/cordova/lib/run.js @@ -39,7 +39,7 @@ var path = require('path'), var list = false; for (var i=2; i Date: Mon, 19 Jan 2015 21:50:14 -0500 Subject: [PATCH 2/7] Fix exception for unknown flag in `cordova/run` --- bin/templates/cordova/lib/run.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/templates/cordova/lib/run.js b/bin/templates/cordova/lib/run.js index df8996d0..ced23a09 100644 --- a/bin/templates/cordova/lib/run.js +++ b/bin/templates/cordova/lib/run.js @@ -50,7 +50,7 @@ var path = require('path'), } else if (args[i] == '--list') { list = true; } else { - console.warn('Option \'' + options[i] + '\' not recognized (ignoring).'); + console.warn('Option \'' + args[i] + '\' not recognized (ignoring).'); } } From 3ec7dfff8bd070ecaa16c731950ce76851242ab5 Mon Sep 17 00:00:00 2001 From: Andrew Grieve Date: Mon, 19 Jan 2015 21:51:57 -0500 Subject: [PATCH 3/7] Fix `cordova/run` not finding apk when multi-arch is specified but only arch-independent apk exists --- bin/templates/cordova/lib/build.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/bin/templates/cordova/lib/build.js b/bin/templates/cordova/lib/build.js index 5ad3e76f..330e23b3 100644 --- a/bin/templates/cordova/lib/build.js +++ b/bin/templates/cordova/lib/build.js @@ -69,11 +69,13 @@ function findOutputApksHelper(dir, build_type, arch) { if (ret.length === 0) { return ret; } + // Assume arch-specific build if newest api has -x86 or -arm. var archSpecific = !!/-x86|-arm/.exec(ret[0]); + // And show only arch-specific ones (or non-arch-specific) ret = ret.filter(function(p) { return !!/-x86|-arm/.exec(p) == archSpecific; }); - if (arch) { + if (arch && ret.length > 1) { ret = ret.filter(function(p) { return p.indexOf('-' + arch) != -1; }); From 9a952f10047b70a0b2453b75724803d3833177cd Mon Sep 17 00:00:00 2001 From: Andrew Grieve Date: Mon, 19 Jan 2015 21:53:08 -0500 Subject: [PATCH 4/7] Fix `cordova/build` not printing out all gradle args in console message --- bin/templates/cordova/lib/build.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bin/templates/cordova/lib/build.js b/bin/templates/cordova/lib/build.js index 330e23b3..ba0cab86 100644 --- a/bin/templates/cordova/lib/build.js +++ b/bin/templates/cordova/lib/build.js @@ -262,7 +262,7 @@ var builders = { var wrapper = path.join(ROOT, 'gradlew'); var args = this.getArgs(build_type == 'debug' ? 'debug' : 'release', arch, extraArgs); return Q().then(function() { - console.log('Running: ' + wrapper + ' ' + extraArgs.join(' ')); + console.log('Running: ' + wrapper + ' ' + args.concat(extraArgs).join(' ')); return spawn(wrapper, args); }); }, @@ -272,7 +272,7 @@ var builders = { var wrapper = path.join(ROOT, 'gradlew'); var args = builder.getArgs('clean', null, extraArgs); return Q().then(function() { - console.log('Running: ' + wrapper + ' ' + extraArgs.join(' ')); + console.log('Running: ' + wrapper + ' ' + args.concat(extraArgs).join(' ')); return spawn(wrapper, args); }); }, From af60f71ea3bdd8f0f4d24d5fdead9c36c5046d71 Mon Sep 17 00:00:00 2001 From: Andrew Grieve Date: Mon, 19 Jan 2015 21:54:29 -0500 Subject: [PATCH 5/7] CB-8255 Fix `cordova/build --gradleVar=--foo=bar` stripping off `=bar` --- bin/templates/cordova/lib/build.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bin/templates/cordova/lib/build.js b/bin/templates/cordova/lib/build.js index ba0cab86..f2d60ae0 100644 --- a/bin/templates/cordova/lib/build.js +++ b/bin/templates/cordova/lib/build.js @@ -321,8 +321,8 @@ function parseOpts(options, resolvedTarget) { for (var i=0; options && (i < options.length); ++i) { if (/^--/.exec(options[i])) { var keyValue = options[i].substring(2).split('='); - var flagName = keyValue[0]; - var flagValue = keyValue[1]; + var flagName = keyValue.shift(); + var flagValue = keyValue.join('='); if (multiValueArgs[flagName] && !flagValue) { flagValue = options[i + 1]; ++i; From 893c0e9b6701762596d7bb1305af99070a0c12af Mon Sep 17 00:00:00 2001 From: Andrew Grieve Date: Mon, 19 Jan 2015 21:56:46 -0500 Subject: [PATCH 6/7] CB-8255 Pass `arch` to gradle regardless of `cdvBuildMultipleApks` This also pushes the "which target to build" logic into gradle, since build.js doesn't actually know the value of `cdvBuildMultipleApks`. --- bin/templates/cordova/lib/build.js | 23 ++++++++--------------- bin/templates/project/build.gradle | 24 ++++++++++++++++++++++++ 2 files changed, 32 insertions(+), 15 deletions(-) diff --git a/bin/templates/cordova/lib/build.js b/bin/templates/cordova/lib/build.js index f2d60ae0..e441caa7 100644 --- a/bin/templates/cordova/lib/build.js +++ b/bin/templates/cordova/lib/build.js @@ -177,20 +177,16 @@ var builders = { }, gradle: { getArgs: function(cmd, arch, extraArgs) { - if (arch == 'arm' && cmd == 'debug') { - cmd = 'assembleArmv7Debug'; - } else if (arch == 'arm' && cmd == 'release') { - cmd = 'assembleArmv7Release'; - } else if (arch == 'x86' && cmd == 'debug') { - cmd = 'assembleX86Debug'; - } else if (arch == 'x86' && cmd == 'release') { - cmd = 'assembleX86Release'; + if (cmd == 'release') { + cmd = 'cdvBuildRelease'; } else if (cmd == 'debug') { - cmd = 'assembleDebug'; - } else if (cmd == 'release') { - cmd = 'assembleRelease'; + cmd = 'cdvBuildDebug'; } var args = [cmd, '-b', path.join(ROOT, 'build.gradle')]; + if (arch) { + args.push('-PcdvBuildArch=' + arch); + } + // 10 seconds -> 6 seconds args.push('-Dorg.gradle.daemon=true'); args.push.apply(args, extraArgs); @@ -361,10 +357,7 @@ function parseOpts(options, resolvedTarget) { } } - var multiApk = ret.buildMethod == 'gradle' && process.env['BUILD_MULTIPLE_APKS']; - if (multiApk && !/0|false|no/i.exec(multiApk)) { - ret.arch = resolvedTarget && resolvedTarget.arch; - } + ret.arch = resolvedTarget && resolvedTarget.arch; return ret; } diff --git a/bin/templates/project/build.gradle b/bin/templates/project/build.gradle index adbee75f..9b7f8dcf 100644 --- a/bin/templates/project/build.gradle +++ b/bin/templates/project/build.gradle @@ -86,6 +86,10 @@ ext { if (!project.hasProperty('cdvDebugSigningPropertiesFile')) { cdvDebugSigningPropertiesFile = null } + // Set by build.js script. + if (!project.hasProperty('cdvBuildArch')) { + cdvBuildArch = null + } } def hasBuildExtras = file('build-extras.gradle').exists() @@ -93,6 +97,26 @@ if (hasBuildExtras) { apply from: 'build-extras.gradle' } +def computeBuildTargetName(debugBuild) { + def ret = 'assemble' + if (cdvBuildMultipleApks && cdvBuildArch) { + def arch = cdvBuildArch == 'arm' ? 'armv7' : cdvBuildArch + ret += '' + arch.toUpperCase().charAt(0) + arch.substring(1); + } + return ret + (debugBuild ? 'Debug' : 'Release') +} + +// Make cdvBuild a task that depends on the debug/arch-sepecific task. +task cdvBuildDebug +cdvBuildDebug.dependsOn { + return computeBuildTargetName(true) +} + +task cdvBuildRelease +cdvBuildRelease.dependsOn { + return computeBuildTargetName(false) +} + // PLUGIN GRADLE EXTENSIONS START // PLUGIN GRADLE EXTENSIONS END From 92d1080b2f97ab91d373eeae408fc59d51d9073e Mon Sep 17 00:00:00 2001 From: Andrew Grieve Date: Mon, 19 Jan 2015 21:59:02 -0500 Subject: [PATCH 7/7] Adds `cdvPrintProps` gradle task: dumps out all cdv properties Useful for debugging. --- bin/templates/project/build.gradle | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/bin/templates/project/build.gradle b/bin/templates/project/build.gradle index 9b7f8dcf..52bb3fdd 100644 --- a/bin/templates/project/build.gradle +++ b/bin/templates/project/build.gradle @@ -117,6 +117,24 @@ cdvBuildRelease.dependsOn { return computeBuildTargetName(false) } +task cdvPrintProps << { + println('cdvCompileSdkVersion=' + cdvCompileSdkVersion) + println('cdvBuildToolsVersion=' + cdvBuildToolsVersion) + println('cdvVersionCode=' + cdvVersionCode) + println('cdvMinSdkVersion=' + cdvMinSdkVersion) + println('cdvBuildMultipleApks=' + cdvBuildMultipleApks) + println('cdvReleaseSigningPropertiesFile=' + cdvReleaseSigningPropertiesFile) + println('cdvDebugSigningPropertiesFile=' + cdvDebugSigningPropertiesFile) + println('cdvBuildArch=' + cdvBuildArch) + println('computedVersionCode=' + android.defaultConfig.versionCode) + if (android.productFlavors.has('armv7')) { + println('computedArmv7VersionCode=' + android.productFlavors.armv7.versionCode) + } + if (android.productFlavors.has('x86')) { + println('computedx86VersionCode=' + android.productFlavors.x86.versionCode) + } +} + // PLUGIN GRADLE EXTENSIONS START // PLUGIN GRADLE EXTENSIONS END