diff --git a/appveyor.yml b/appveyor.yml index f8bef7ed..086abd5f 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -1,3 +1,6 @@ +image: + - Previous Visual Studio 2015 + environment: ANDROID_HOME: "C:\\android" matrix: diff --git a/bin/android_sdk_version.bat b/bin/android_sdk_version.bat index 33a1fa25..a6bc1043 100644 --- a/bin/android_sdk_version.bat +++ b/bin/android_sdk_version.bat @@ -18,7 +18,7 @@ @ECHO OFF SET script_path="%~dp0android_sdk_version" IF EXIST %script_path% ( - node "%script_path%" %* + node %script_path% %* ) ELSE ( ECHO. ECHO ERROR: Could not find 'android_sdk_version' script in 'bin' folder, aborting...>&2 diff --git a/bin/check_reqs.bat b/bin/check_reqs.bat index cb2c6f54..846dfa1f 100644 --- a/bin/check_reqs.bat +++ b/bin/check_reqs.bat @@ -18,7 +18,7 @@ @ECHO OFF SET script_path="%~dp0check_reqs" IF EXIST %script_path% ( - node "%script_path%" %* + node %script_path% %* ) ELSE ( ECHO. ECHO ERROR: Could not find 'check_reqs' script in 'bin' folder, aborting...>&2 diff --git a/bin/lib/create.js b/bin/lib/create.js index fe076d8a..c96ea6cf 100755 --- a/bin/lib/create.js +++ b/bin/lib/create.js @@ -262,7 +262,7 @@ exports.create = function (project_path, config, options, events) { return Q.reject(new CordovaError('Project already exists! Delete and recreate')); } - var package_name = config.packageName() || 'my.cordova.project'; + var package_name = config.android_packageName() || config.packageName() || 'my.cordova.project'; var project_name = config.name() ? config.name().replace(/[^\w.]/g, '_') : 'CordovaExample'; diff --git a/bin/templates/cordova/lib/install-device.bat b/bin/templates/cordova/lib/install-device.bat index ac7214ac..109b470e 100644 --- a/bin/templates/cordova/lib/install-device.bat +++ b/bin/templates/cordova/lib/install-device.bat @@ -18,7 +18,7 @@ @ECHO OFF SET script_path="%~dp0install-device" IF EXIST %script_path% ( - node "%script_path%" %* + node %script_path% %* ) ELSE ( ECHO. ECHO ERROR: Could not find 'install-device' script in 'cordova\lib' folder, aborting...>&2 diff --git a/bin/templates/cordova/lib/install-emulator.bat b/bin/templates/cordova/lib/install-emulator.bat index 1ec67790..a28c23a1 100644 --- a/bin/templates/cordova/lib/install-emulator.bat +++ b/bin/templates/cordova/lib/install-emulator.bat @@ -18,7 +18,7 @@ @ECHO OFF SET script_path="%~dp0install-emulator" IF EXIST %script_path% ( - node "%script_path%" %* + node %script_path% %* ) ELSE ( ECHO. ECHO ERROR: Could not find 'install-emulator' script in 'cordova\lib' folder, aborting...>&2 diff --git a/bin/templates/cordova/lib/list-devices.bat b/bin/templates/cordova/lib/list-devices.bat index c0bcdd9a..ad5f03ed 100644 --- a/bin/templates/cordova/lib/list-devices.bat +++ b/bin/templates/cordova/lib/list-devices.bat @@ -18,7 +18,7 @@ @ECHO OFF SET script_path="%~dp0list-devices" IF EXIST %script_path% ( - node "%script_path%" %* + node %script_path% %* ) ELSE ( ECHO. ECHO ERROR: Could not find 'list-devices' script in 'cordova\lib' folder, aborting...>&2 diff --git a/bin/templates/cordova/lib/list-emulator-images.bat b/bin/templates/cordova/lib/list-emulator-images.bat index 661cbf95..616ffb75 100644 --- a/bin/templates/cordova/lib/list-emulator-images.bat +++ b/bin/templates/cordova/lib/list-emulator-images.bat @@ -18,7 +18,7 @@ @ECHO OFF SET script_path="%~dp0list-emulator-images" IF EXIST %script_path% ( - node "%script_path%" %* + node %script_path% %* ) ELSE ( ECHO. ECHO ERROR: Could not find 'list-emulator-images' script in 'cordova\lib' folder, aborting...>&2 diff --git a/bin/templates/cordova/lib/list-started-emulators.bat b/bin/templates/cordova/lib/list-started-emulators.bat index a4e88f7d..eed02a5c 100644 --- a/bin/templates/cordova/lib/list-started-emulators.bat +++ b/bin/templates/cordova/lib/list-started-emulators.bat @@ -18,7 +18,7 @@ @ECHO OFF SET script_path="%~dp0list-started-emulators" IF EXIST %script_path% ( - node "%script_path%" %* + node %script_path% %* ) ELSE ( ECHO. ECHO ERROR: Could not find 'list-started-emulators' script in 'cordova\lib' folder, aborting...>&2 diff --git a/bin/templates/cordova/lib/prepare.js b/bin/templates/cordova/lib/prepare.js index bbf9d658..07404fca 100644 --- a/bin/templates/cordova/lib/prepare.js +++ b/bin/templates/cordova/lib/prepare.js @@ -24,6 +24,7 @@ var path = require('path'); var shell = require('shelljs'); var events = require('cordova-common').events; var AndroidManifest = require('./AndroidManifest'); +var checkReqs = require('./check_reqs'); var xmlHelpers = require('cordova-common').xmlHelpers; var CordovaError = require('cordova-common').CordovaError; var ConfigParser = require('cordova-common').ConfigParser; @@ -181,10 +182,10 @@ function updateProjectAccordingTo (platformConfig, locations) { events.emit('verbose', 'Wrote out android application name "' + name + '" to ' + locations.strings); // Java packages cannot support dashes - var pkg = (platformConfig.android_packageName() || platformConfig.packageName()).replace(/-/g, '_'); + var androidPkgName = (platformConfig.android_packageName() || platformConfig.packageName()).replace(/-/g, '_'); var manifest = new AndroidManifest(locations.manifest); - var orig_pkg = manifest.getPackageId(); + var manifestId = manifest.getPackageId(); manifest.getActivity() .setOrientation(platformConfig.getPreference('orientation')) @@ -192,7 +193,7 @@ function updateProjectAccordingTo (platformConfig, locations) { manifest.setVersionName(platformConfig.version()) .setVersionCode(platformConfig.android_versionCode() || default_versionCode(platformConfig.version())) - .setPackageId(pkg) + .setPackageId(androidPkgName) .setMinSdkVersion(platformConfig.getPreference('android-minSdkVersion', 'android')) .setMaxSdkVersion(platformConfig.getPreference('android-maxSdkVersion', 'android')) .setTargetSdkVersion(platformConfig.getPreference('android-targetSdkVersion', 'android')) @@ -200,7 +201,6 @@ function updateProjectAccordingTo (platformConfig, locations) { // Java file paths shouldn't be hard coded var javaPattern = path.join(locations.javaSrc, orig_pkg.replace(/\./g, '/'), '*.java'); - var java_files = shell.ls(javaPattern).filter(function (f) { return shell.grep(/extends\s+CordovaActivity/g, f); }); @@ -211,12 +211,16 @@ function updateProjectAccordingTo (platformConfig, locations) { events.emit('log', 'Multiple candidate Java files that extend CordovaActivity found. Guessing at the first one, ' + java_files[0]); } - var destFile = path.join(locations.root, 'src', pkg.replace(/\./g, '/'), path.basename(java_files[0])); + var destFile = path.join(locations.root, 'src', androidPkgName.replace(/\./g, '/'), path.basename(java_files[0])); shell.mkdir('-p', path.dirname(destFile)); - shell.sed(/package [\w\.]*;/, 'package ' + pkg + ';', java_files[0]).to(destFile); - events.emit('verbose', 'Wrote out Android package name "' + pkg + '" to ' + destFile); + shell.sed(/package [\w\.]*;/, 'package ' + androidPkgName + ';', java_files[0]).to(destFile); + events.emit('verbose', 'Wrote out Android package name "' + androidPkgName + '" to ' + destFile); - if (orig_pkg !== pkg) { + var removeOrigPkg = checkReqs.isWindows() || checkReqs.isDarwin() ? + manifestId.toUpperCase() !== androidPkgName.toUpperCase() : + manifestId !== androidPkgName; + + if (removeOrigPkg) { // If package was name changed we need to remove old java with main activity shell.rm('-Rf', java_files[0]); // remove any empty directories diff --git a/bin/templates/cordova/lib/start-emulator.bat b/bin/templates/cordova/lib/start-emulator.bat index 9329d951..6c237ea2 100644 --- a/bin/templates/cordova/lib/start-emulator.bat +++ b/bin/templates/cordova/lib/start-emulator.bat @@ -18,7 +18,7 @@ @ECHO OFF SET script_path="%~dp0start-emulator" IF EXIST %script_path% ( - node "%script_path%" %* + node %script_path% %* ) ELSE ( ECHO. ECHO ERROR: Could not find 'start-emulator' script in 'cordova\lib' folder, aborting...>&2 diff --git a/spec/e2e/helpers/projectActions.js b/spec/e2e/helpers/projectActions.js index 4e3d8f2a..9ac8936d 100644 --- a/spec/e2e/helpers/projectActions.js +++ b/spec/e2e/helpers/projectActions.js @@ -45,7 +45,7 @@ module.exports.createProject = function (projectname, projectid, platformpath, c module.exports.removeProject(projectid); // create the project - var command = util.format('%s %s %s "%s"', createScriptPath, projectDirName, projectid, projectname); + var command = util.format('"%s" %s %s "%s"', createScriptPath, projectDirName, projectid, projectname); cp.exec(command, function (error, stdout, stderr) { if (error) { console.log(stdout); @@ -69,8 +69,7 @@ module.exports.updateProject = function (projectid, platformpath, callback) { } var projectDirName = getDirName(projectid); var updateScriptPath = platformpath ? path.join(platformpath, 'bin/update') : path.join(cordova_bin, 'update'); - var command = util.format('%s %s', updateScriptPath, projectDirName); - + var command = util.format('"%s" %s', updateScriptPath, projectDirName); cp.exec(command, function (error, stdout, stderr) { if (error) { console.log(stdout); diff --git a/spec/unit/create.spec.js b/spec/unit/create.spec.js index 706786fc..77eeaa36 100644 --- a/spec/unit/create.spec.js +++ b/spec/unit/create.spec.js @@ -149,7 +149,7 @@ describe('create', function () { spyOn(shell, 'cp'); spyOn(shell, 'mkdir'); spyOn(shell, 'sed'); - config_mock = jasmine.createSpyObj('ConfigParser mock instance', ['packageName', 'name', 'android_activityName']); + config_mock = jasmine.createSpyObj('ConfigParser mock instance', ['packageName', 'android_packageName', 'name', 'android_activityName']); events_mock = jasmine.createSpyObj('EventEmitter mock instance', ['emit']); spyOn(check_reqs, 'get_target').and.returnValue(fake_android_target); });