Permalink
Browse files

Merge pull request apache#417 from DavidStrausz/master

CB-13580: (android) fix build for multiple apks (different product flavors)

Note from @benjamn: this commit was cherry-picked from version 7.0.0 onto
version 6.4.0 in Meteor's fork of cordova-android, since the maintainer
has indicated the changes probably will not be back-ported to 6.x:
apache#417 (comment)

cc @menelike @abernix
  • Loading branch information...
infil00p authored and benjamn committed Nov 16, 2017
1 parent 7a27ee4 commit 317db7df0f7a054444197bc6d28453cf4ab23280
Showing with 19 additions and 2 deletions.
  1. +17 −2 bin/templates/cordova/lib/builders/GenericBuilder.js
  2. +2 −0 bin/templates/project/build.gradle
@@ -93,6 +93,14 @@ 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)) {
@@ -101,15 +109,22 @@ function apkSorter (fileA, 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;
}

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') {
@@ -184,6 +184,8 @@ android {
buildToolsVersion cdvBuildToolsVersion

if (Boolean.valueOf(cdvBuildMultipleApks)) {
flavorDimensions "default"

productFlavors {
armv7 {
versionCode defaultConfig.versionCode*10 + 2

0 comments on commit 317db7d

Please sign in to comment.