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 ':'