mirror of
https://github.com/apache/cordova-android.git
synced 2026-04-04 00:02:03 +08:00
CB-3445: android: Copy Gradle wrapper from Android SDK rather than bundling a JAR
This commit is contained in:
@@ -24,6 +24,7 @@ var shell = require('shelljs'),
|
||||
Q = require('q'),
|
||||
path = require('path'),
|
||||
fs = require('fs'),
|
||||
which = require('which'),
|
||||
ROOT = path.join(__dirname, '..', '..');
|
||||
|
||||
// Get valid target from framework/project.properties
|
||||
@@ -40,6 +41,23 @@ module.exports.get_target = function() {
|
||||
}
|
||||
}
|
||||
|
||||
// Returns a promise.
|
||||
module.exports.sdk_dir = function() {
|
||||
var d = Q.defer();
|
||||
which('android', function(err, path) {
|
||||
if (err) {
|
||||
d.reject(new Error('ERROR: Cannot find Android SDK. android command not found.'));
|
||||
} else {
|
||||
var toolsDir = path.substring(0, path.lastIndexOf('/'));
|
||||
if (toolsDir.substring(toolsDir.length-6) != "/tools") {
|
||||
d.reject(new Error('ERROR: Cannot find Android SDK. android command not found in tools dir.'));
|
||||
}
|
||||
d.resolve(toolsDir.substring(0, toolsDir.length-6));
|
||||
}
|
||||
});
|
||||
return d.promise;
|
||||
};
|
||||
|
||||
// Returns a promise.
|
||||
module.exports.check_ant = function() {
|
||||
var d = Q.defer();
|
||||
|
||||
@@ -109,6 +109,13 @@ function copyScripts(projectPath) {
|
||||
shell.cp(path.join(ROOT, 'bin', 'lib', 'android_sdk_version.js'), path.join(projectPath, 'cordova', 'lib', 'android_sdk_version.js'));
|
||||
}
|
||||
|
||||
function copyGradleWrapper(sdkPath, projectPath) {
|
||||
var wrapperDir = path.join(sdkPath, 'tools', 'templates','gradle','wrapper');
|
||||
shell.cp(path.join(wrapperDir, 'gradlew'), projectPath);
|
||||
shell.cp(path.join(wrapperDir, 'gradlew.bat'), projectPath);
|
||||
shell.cp('-r', path.join(wrapperDir, 'gradle'), projectPath);
|
||||
}
|
||||
|
||||
/**
|
||||
* $ create [options]
|
||||
*
|
||||
@@ -177,9 +184,12 @@ exports.createProject = function(project_path, package_name, project_name, proje
|
||||
shell.cp('-f', path.join(project_template_dir, 'build.gradle'), project_path);
|
||||
shell.cp('-f', path.join(project_template_dir, 'libraries.gradle'), project_path);
|
||||
shell.cp('-f', path.join(project_template_dir, 'settings.gradle'), project_path);
|
||||
shell.cp('-f', path.join(project_template_dir, 'gradlew'), project_path);
|
||||
shell.cp('-f', path.join(project_template_dir, 'gradlew.bat'), project_path);
|
||||
shell.cp('-r', path.join(project_template_dir, 'gradle'), project_path);
|
||||
check_reqs.sdk_dir().then(function(dir) {
|
||||
console.log("Copying Gradle wrapper from " + dir);
|
||||
copyGradleWrapper(dir, project_path);
|
||||
}).catch(function(err) {
|
||||
console.log("Cannot find Android SDK. Not installing Gradle wrapper.");
|
||||
});
|
||||
|
||||
// Manually create directories that would be empty within the template (since git doesn't track directories).
|
||||
shell.mkdir(path.join(project_path, 'libs'));
|
||||
|
||||
Reference in New Issue
Block a user