gradle: Write sub-project list explicitly to make Android Studio happy
diff --git a/bin/lib/create.js b/bin/lib/create.js
index d7550a6..74037df 100755
--- a/bin/lib/create.js
+++ b/bin/lib/create.js
@@ -124,7 +124,6 @@
shell.cp('-f', path.join(srcDir, 'custom_rules.xml'), projectPath);
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 89556fe..c5b6b09 100644
--- a/bin/templates/cordova/lib/build.js
+++ b/bin/templates/cordova/lib/build.js
@@ -237,6 +237,22 @@
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 41984fa..ce59e32 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 @@
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 @@
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 + '"')
diff --git a/bin/templates/project/settings.gradle b/bin/templates/project/settings.gradle
deleted file mode 100644
index baa1714..0000000
--- 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 ':'