diff --git a/bin/lib/create.js b/bin/lib/create.js index fd962b42..4fa600c9 100755 --- a/bin/lib/create.js +++ b/bin/lib/create.js @@ -121,7 +121,6 @@ function copyBuildRules(projectPath) { var srcDir = path.join(ROOT, 'bin', 'templates', 'project'); shell.cp('-f', path.join(srcDir, 'build.gradle'), projectPath); - shell.cp('-f', path.join(srcDir, 'settings.gradle'), projectPath); shell.cp('-f', path.join(srcDir, 'cordova.gradle'), projectPath); } diff --git a/bin/templates/cordova/lib/build.js b/bin/templates/cordova/lib/build.js index 9c872bf2..83e0be2e 100644 --- a/bin/templates/cordova/lib/build.js +++ b/bin/templates/cordova/lib/build.js @@ -236,6 +236,22 @@ var builders = { for (var i = 0; i < subProjects.length; ++i) { shell.cp('-f', pluginBuildGradle, path.join(ROOT, subProjects[i], 'build.gradle')); } + + var subProjectsAsGradlePaths = subProjects.map(function(p) { return ':' + p.replace(/[/\\]/g, ':') }); + // Write the settings.gradle file. + fs.writeFileSync(path.join(projectPath, 'settings.gradle'), + '// GENERATED FILE - DO NOT EDIT\n' + + 'include ":"\n' + + 'include "' + subProjectsAsGradlePaths.join('"\ninclude "') + '"\n'); + // Update dependencies within build.gradle. + var buildGradle = fs.readFileSync(path.join(projectPath, 'build.gradle'), 'utf8'); + var depsList = ''; + subProjectsAsGradlePaths.forEach(function(p) { + depsList += ' debugCompile project(path: "' + p + '", configuration: "debug")\n'; + depsList += ' releaseCompile project(path: "' + p + '", configuration: "release")\n'; + }); + buildGradle = buildGradle.replace(/(SUB-PROJECT DEPENDENCIES START)[\s\S]*(\/\/ SUB-PROJECT DEPENDENCIES END)/, '$1\n' + depsList + ' $2'); + fs.writeFileSync(path.join(projectPath, 'build.gradle'), buildGradle); }); }, diff --git a/bin/templates/project/build.gradle b/bin/templates/project/build.gradle index 41984fa7..2e4d5cbb 100644 --- a/bin/templates/project/build.gradle +++ b/bin/templates/project/build.gradle @@ -17,6 +17,8 @@ under the License. */ +// GENERATED FILE! DO NOT EDIT! + import java.util.regex.Pattern import groovy.swing.SwingBuilder @@ -111,11 +113,8 @@ android { dependencies { compile fileTree(dir: 'libs', include: '*.jar') - // https://code.google.com/p/android/issues/detail?id=52962 - for (subproject in getProjectList()) { - releaseCompile project(path: subproject, configuration: 'release') - debugCompile project(path: subproject, configuration: 'debug') - } + // SUB-PROJECT DEPENDENCIES START + // SUB-PROJECT DEPENDENCIES END } @@ -172,17 +171,6 @@ def getVersionCodeFromManifest() { return Integer.parseInt(matcher.group(1)) } -def getProjectList() { - def manifestFile = file("project.properties") - def pattern = Pattern.compile("android.library.reference.(\\d+)\\s*=\\s*(.*)") - def matcher = pattern.matcher(manifestFile.getText()) - def projects = [] - while (matcher.find()) { - projects.add(":" + matcher.group(2).replace("/",":")) - } - return projects -} - def ensureValueExists(filePath, props, key) { if (props.get(key) == null) { throw new GradleException(filePath + ': Missing key required "' + key + '"') @@ -202,3 +190,6 @@ def addSigningProps(propsFilePath, signingConfig) { } } +if (file('build-extras.gradle').exists()) { + apply from: 'build-extras.gradle' +} diff --git a/bin/templates/project/cordova.gradle b/bin/templates/project/cordova.gradle index ec597b2f..cf2dacad 100644 --- a/bin/templates/project/cordova.gradle +++ b/bin/templates/project/cordova.gradle @@ -115,6 +115,6 @@ String getAndroidSdkDir() { androidSdkDir } -cordovaSdkVersion = System.env.MIN_SDK_VERSION ?: getProjectTarget("android-19") -cordovaBuildToolsVersion = latestBuildToolsAvailable("19.1.0") +ext.cordovaSdkVersion = System.env.MIN_SDK_VERSION ?: getProjectTarget("android-19") +ext.cordovaBuildToolsVersion = latestBuildToolsAvailable("19.1.0") diff --git a/bin/templates/project/settings.gradle b/bin/templates/project/settings.gradle deleted file mode 100644 index baa17145..00000000 --- a/bin/templates/project/settings.gradle +++ /dev/null @@ -1,18 +0,0 @@ -import java.util.regex.Pattern - -def getProjectList() { - def manifestFile = file("project.properties") - def pattern = Pattern.compile("android.library.reference.(\\d+)\\s*=\\s*(.*)") - def matcher = pattern.matcher(manifestFile.getText()) - def projects = [] - while (matcher.find()) { - projects.add(":" + matcher.group(2).replace("/",":")) - } - return projects -} - -for (subproject in getProjectList()) { - include subproject -} - -include ':'