You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by sh...@apache.org on 2019/01/14 05:29:05 UTC

[cordova-ios] branch master updated: Fixes $(PRODUCT_BUNDLE_IDENTIFIER) not being resolved for a product archive (#494)

This is an automated email from the ASF dual-hosted git repository.

shazron pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cordova-ios.git


The following commit(s) were added to refs/heads/master by this push:
     new c2cab27  Fixes $(PRODUCT_BUNDLE_IDENTIFIER) not being resolved for a product archive (#494)
c2cab27 is described below

commit c2cab2730cd87f3830d22f5b7e09113e2e98ae18
Author: Shazron Abdullah <sh...@gmail.com>
AuthorDate: Mon Jan 14 13:29:00 2019 +0800

    Fixes $(PRODUCT_BUNDLE_IDENTIFIER) not being resolved for a product archive (#494)
    
    * Fix shelljs error in not removing symlinks during run command
    * Changed build settings in Xcode project for a manual build
    - If a provisioning profile is set, set CODE_SIGN_STYLE build setting to 'Manual'
    - If a provisioning profile is set, set ProvisioningStyle target attribute to 'Manual'
    - if provisioning profile is NOT set AND 'automaticProvisioning' build option is set to TRUE, reverse the manual settings from above to 'Automatic'
---
 bin/templates/scripts/cordova/lib/build.js | 67 ++++++++++++++++++++++++++----
 bin/templates/scripts/cordova/lib/run.js   |  3 +-
 2 files changed, 60 insertions(+), 10 deletions(-)

diff --git a/bin/templates/scripts/cordova/lib/build.js b/bin/templates/scripts/cordova/lib/build.js
index 80a6111..045594b 100644
--- a/bin/templates/scripts/cordova/lib/build.js
+++ b/bin/templates/scripts/cordova/lib/build.js
@@ -30,9 +30,6 @@ var projectFile = require('./projectFile');
 
 var events = require('cordova-common').events;
 
-var projectPath = path.join(__dirname, '..', '..');
-var projectName = null;
-
 // These are regular expressions to detect if the user is changing any of the built-in xcodebuildArgs
 /* eslint-disable no-useless-escape */
 var buildFlagMatchers = {
@@ -48,6 +45,40 @@ var buildFlagMatchers = {
 /* eslint-enable no-useless-escape */
 
 /**
+ * Creates a project object (see projectFile.js/parseProjectFile) from
+ * a project path and name
+ *
+ * @param {*} projectPath
+ * @param {*} projectName
+ */
+function createProjectObject (projectPath, projectName) {
+    var locations = {
+        root: projectPath,
+        pbxproj: path.join(projectPath, projectName + '.xcodeproj', 'project.pbxproj')
+    };
+
+    return projectFile.parse(locations);
+}
+
+/**
+ * Gets the resolved bundle identifier from a project.
+ * Resolves the variable set in INFO.plist, if any (simple case)
+ *
+ * @param {*} projectObject
+ */
+function getBundleIdentifier (projectObject) {
+    var packageName = projectObject.getPackageName();
+    var bundleIdentifier = packageName;
+
+    var variables = packageName.match(/\$\((\w+)\)/); // match $(VARIABLE), if any
+    if (variables && variables.length >= 2) {
+        bundleIdentifier = projectObject.xcode.getBuildProperty(variables[1]);
+    }
+
+    return bundleIdentifier;
+}
+
+/**
  * Returns a promise that resolves to the default simulator target; the logic here
  * matches what `cordova emulate ios` does.
  *
@@ -74,6 +105,8 @@ function getDefaultSimulatorTarget () {
 
 module.exports.run = function (buildOpts) {
     var emulatorTarget = '';
+    var projectPath = path.join(__dirname, '..', '..');
+    var projectName = '';
 
     buildOpts = buildOpts || {};
 
@@ -157,6 +190,26 @@ module.exports.run = function (buildOpts) {
             if (buildOpts.developmentTeam) {
                 extraConfig += 'DEVELOPMENT_TEAM = ' + buildOpts.developmentTeam + '\n';
             }
+
+            function writeCodeSignStyle (value) {
+                var project = createProjectObject(projectPath, projectName);
+
+                events.emit('verbose', `Set CODE_SIGN_STYLE Build Property to ${value}.`);
+                project.xcode.updateBuildProperty('CODE_SIGN_STYLE', value);
+                events.emit('verbose', `Set ProvisioningStyle Target Attribute to ${value}.`);
+                project.xcode.addTargetAttribute('ProvisioningStyle', value);
+
+                project.write();
+            }
+
+            if (buildOpts.provisioningProfile) {
+                events.emit('verbose', 'ProvisioningProfile build option set, changing project settings to Manual.');
+                writeCodeSignStyle('Manual');
+            } else if (buildOpts.automaticProvisioning) {
+                events.emit('verbose', 'ProvisioningProfile build option NOT set, changing project settings to Automatic.');
+                writeCodeSignStyle('Automatic');
+            }
+
             return Q.nfcall(fs.writeFile, path.join(__dirname, '..', 'build-extras.xcconfig'), extraConfig, 'utf-8');
         }).then(function () {
             var configuration = buildOpts.release ? 'Release' : 'Debug';
@@ -178,12 +231,8 @@ module.exports.run = function (buildOpts) {
                 return;
             }
 
-            var locations = {
-                root: projectPath,
-                pbxproj: path.join(projectPath, projectName + '.xcodeproj', 'project.pbxproj')
-            };
-
-            var bundleIdentifier = projectFile.parse(locations).getPackageName();
+            var project = createProjectObject(projectPath, projectName);
+            var bundleIdentifier = getBundleIdentifier(project);
             var exportOptions = {'compileBitcode': false, 'method': 'development'};
 
             if (buildOpts.packageType) {
diff --git a/bin/templates/scripts/cordova/lib/run.js b/bin/templates/scripts/cordova/lib/run.js
index a51882e..f9e5761 100644
--- a/bin/templates/scripts/cordova/lib/run.js
+++ b/bin/templates/scripts/cordova/lib/run.js
@@ -24,6 +24,7 @@ var build = require('./build');
 var shell = require('shelljs');
 var superspawn = require('cordova-common').superspawn;
 var check_reqs = require('./check_reqs');
+var fs = require('fs-extra');
 
 var events = require('cordova-common').events;
 
@@ -88,7 +89,7 @@ module.exports.run = function (runOptions) {
                         var payloadFolder = path.join(buildOutputDir, 'Payload');
 
                         // delete the existing platform/ios/build/device/appname.app
-                        shell.rm('-rf', appFile);
+                        fs.removeSync(appFile);
                         // move the platform/ios/build/device/Payload/appname.app to parent
                         shell.mv('-f', appFileInflated, buildOutputDir);
                         // delete the platform/ios/build/device/Payload folder


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cordova.apache.org
For additional commands, e-mail: commits-help@cordova.apache.org