From aaeb630eb16e202df92ead8498afd194b585c000 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Strau=C3=9F?= Date: Thu, 16 Nov 2017 01:27:20 +0100 Subject: [PATCH] CB-13580: fix build for multiple apks (different product flavors) --- .../cordova/lib/builders/GenericBuilder.js | 21 ++++++++++++++++--- bin/templates/project/build.gradle | 2 ++ 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/bin/templates/cordova/lib/builders/GenericBuilder.js b/bin/templates/cordova/lib/builders/GenericBuilder.js index 770911b7..fded60c0 100644 --- a/bin/templates/cordova/lib/builders/GenericBuilder.js +++ b/bin/templates/cordova/lib/builders/GenericBuilder.js @@ -93,15 +93,23 @@ GenericBuilder.prototype.extractRealProjectNameFromManifest = function () { module.exports = GenericBuilder; function apkSorter (fileA, fileB) { + // De-prioritize arch specific builds + var archSpecificRE = /-x86|-arm/; + if (archSpecificRE.exec(fileA)) { + return 1; + } else if (archSpecificRE.exec(fileB)) { + return -1; + } + // De-prioritize unsigned builds var unsignedRE = /-unsigned/; if (unsignedRE.exec(fileA)) { return 1; } else if (unsignedRE.exec(fileB)) { return -1; - } + } - var timeDiff = fs.statSync(fileA).mtime - fs.statSync(fileB).mtime; + var timeDiff = fs.statSync(fileB).mtime - fs.statSync(fileA).mtime; return timeDiff === 0 ? fileA.length - fileB.length : timeDiff; } @@ -109,7 +117,14 @@ function findOutputApksHelper (dir, build_type, arch) { var shellSilent = shell.config.silent; shell.config.silent = true; - var ret = shell.ls(path.join(dir, build_type, '*.apk')).filter(function (candidate) { + // list directory recursively + var ret = shell.ls('-R', dir).map(function(file) { + // ls does not include base directory + return path.join(dir, file); + }).filter(function (file) { + // find all APKs + return file.match(/\.apk?$/i); + }).filter(function (candidate) { var apkName = path.basename(candidate); // Need to choose between release and debug .apk. if (build_type === 'debug') { diff --git a/bin/templates/project/build.gradle b/bin/templates/project/build.gradle index 76496b7f..b870dc41 100644 --- a/bin/templates/project/build.gradle +++ b/bin/templates/project/build.gradle @@ -184,6 +184,8 @@ android { buildToolsVersion cdvBuildToolsVersion if (Boolean.valueOf(cdvBuildMultipleApks)) { + flavorDimensions "default" + productFlavors { armv7 { versionCode defaultConfig.versionCode*10 + 2