[ 
https://issues.apache.org/jira/browse/CB-9033?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16602696#comment-16602696
 ] 

ASF GitHub Bot commented on CB-9033:
------------------------------------

raphinesse closed pull request #219: CB-9033 : fix WatchKit support
URL: https://github.com/apache/cordova-lib/pull/219
 
 
   

This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:

As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):

diff --git a/cordova-lib/spec-plugman/platforms/ios.spec.js 
b/cordova-lib/spec-plugman/platforms/ios.spec.js
index b1ead60b6..d7e20ef07 100644
--- a/cordova-lib/spec-plugman/platforms/ios.spec.js
+++ b/cordova-lib/spec-plugman/platforms/ios.spec.js
@@ -28,6 +28,7 @@ var ios = require('../../src/plugman/platforms/ios'),
     temp = path.join(os.tmpdir(), 'plugman'),
     plugins_dir = path.join(temp, 'cordova', 'plugins'),
     ios_config_xml_project = path.join(__dirname, '..', 'projects', 
'ios-config-xml', '*'),
+    ios_apple_watch_project = path.join(__dirname, '..', 'projects', 
'ios-apple-watch', '*'),
     ios_project = path.join(ios_config_xml_project, '..'),
     faultyplugin = path.join(__dirname, '..', 'plugins', 
'org.test.plugins.faultyplugin'),
     dummyplugin = path.join(__dirname, '..', 'plugins', 
'org.test.plugins.dummyplugin'),
@@ -163,13 +164,13 @@ describe('ios project handler', function() {
                 var source = copyArray(valid_source).filter(function(s) { 
return s.targetDir === undefined; });
                 var spy = spyOn(proj_files.xcode, 'addSourceFile');
                 ios['source-file'].install(source[0], dummyplugin, temp, 
dummy_id, null, proj_files);
-                expect(spy).toHaveBeenCalledWith(slashJoin('Plugins', 
dummy_id, 'DummyPluginCommand.m'), {});
+                expect(spy).toHaveBeenCalledWith(slashJoin('Plugins', 
dummy_id, 'DummyPluginCommand.m'),{ target:'571A463A14DB0A1B007FEAC7'});
             });
             it('should call into xcodeproj\'s addSourceFile appropriately when 
element has a target-dir', function() {
                 var source = copyArray(valid_source).filter(function(s) { 
return s.targetDir !== undefined; });
                 var spy = spyOn(proj_files.xcode, 'addSourceFile');
                 ios['source-file'].install(source[0], dummyplugin, temp, 
dummy_id, null, proj_files);
-                expect(spy).toHaveBeenCalledWith(slashJoin('Plugins', 
dummy_id, 'targetDir', 'TargetDirTest.m'), {});
+                expect(spy).toHaveBeenCalledWith(slashJoin('Plugins', 
dummy_id, 'targetDir', 'TargetDirTest.m'), { 
target:'571A463A14DB0A1B007FEAC7'});
             });
             it('should cp the file to the right target location when element 
has no target-dir', function() {
                 var source = copyArray(valid_source).filter(function(s) { 
return s.targetDir === undefined; });
@@ -188,7 +189,7 @@ describe('ios project handler', function() {
                 spyOn(proj_files.xcode, 'addSourceFile');
                 var spy = spyOn(proj_files.xcode, 'addFramework');
                 ios['source-file'].install(source[0], dummyplugin, temp, 
dummy_id, null, proj_files);
-                expect(spy).toHaveBeenCalledWith(path.join('SampleApp', 
'Plugins', dummy_id, 'SourceWithFramework.m'), {weak:false});
+                expect(spy).toHaveBeenCalledWith(path.join('SampleApp', 
'Plugins', dummy_id, 'SourceWithFramework.m'), 
{weak:false,target:'571A463A14DB0A1B007FEAC7'});
             });
         });
 
@@ -254,7 +255,7 @@ describe('ios project handler', function() {
                 var resources = copyArray(valid_resources);
                 var spy = spyOn(proj_files.xcode, 'addResourceFile');
                 ios['resource-file'].install(resources[0], dummyplugin, temp, 
'pluginid', null, proj_files);
-                expect(spy).toHaveBeenCalledWith(path.join('Resources', 
'DummyPlugin.bundle'));
+                expect(spy).toHaveBeenCalledWith(path.join('Resources', 
'DummyPlugin.bundle'),{target: '571A463A14DB0A1B007FEAC7'});
             });
             it('should cp the file to the right target location', function() {
                 var resources = copyArray(valid_resources);
@@ -269,7 +270,7 @@ describe('ios project handler', function() {
                 var frameworks = copyArray(valid_custom_frameworks);
                 var spy = spyOn(proj_files.xcode, 'addFramework');
                 ios['framework'].install(frameworks[0], dummyplugin, temp, 
dummy_id, null, proj_files);
-                
expect(spy).toHaveBeenCalledWith(path.normalize('SampleApp/Plugins/org.test.plugins.dummyplugin/Custom.framework'),
 {customFramework:true});
+                
expect(spy).toHaveBeenCalledWith(path.normalize('SampleApp/Plugins/org.test.plugins.dummyplugin/Custom.framework'),
 {customFramework:true,target:'571A463A14DB0A1B007FEAC7'});
             });
 
             // TODO: Add more tests to cover the cases:
@@ -333,14 +334,14 @@ describe('ios project handler', function() {
                 shell.cp('-rf', ios_config_xml_project, temp);
                 var spy = spyOn(proj_files.xcode, 'removeSourceFile');
                 ios['source-file'].uninstall(source[0], temp, dummy_id, null, 
proj_files);
-                expect(spy).toHaveBeenCalledWith(slashJoin('Plugins', 
dummy_id, 'DummyPluginCommand.m'));
+                expect(spy).toHaveBeenCalledWith(slashJoin('Plugins', 
dummy_id, 'DummyPluginCommand.m'),{target: '571A463A14DB0A1B007FEAC7'});
             });
             it('should call into xcodeproj\'s removeSourceFile appropriately 
when element a target-dir', function(){
                 var source = copyArray(valid_source).filter(function(s) { 
return s.targetDir !== undefined; });
                 shell.cp('-rf', ios_config_xml_project, temp);
                 var spy = spyOn(proj_files.xcode, 'removeSourceFile');
                 ios['source-file'].uninstall(source[0], temp, dummy_id, null, 
proj_files);
-                expect(spy).toHaveBeenCalledWith(slashJoin('Plugins', 
dummy_id, 'targetDir', 'TargetDirTest.m'));
+                expect(spy).toHaveBeenCalledWith(slashJoin('Plugins', 
dummy_id, 'targetDir', 'TargetDirTest.m'),{target: '571A463A14DB0A1B007FEAC7'});
             });
             it('should rm the file from the right target location when element 
has no target-dir', function(){
                 var source = copyArray(valid_source).filter(function(s) { 
return s.targetDir === undefined; });
@@ -364,7 +365,7 @@ describe('ios project handler', function() {
                 var spy = spyOn(proj_files.xcode, 'removeFramework');
 
                 ios['source-file'].uninstall(source[0], temp, dummy_id, null, 
proj_files);
-                expect(spy).toHaveBeenCalledWith(path.join('SampleApp', 
'Plugins', dummy_id, 'SourceWithFramework.m'));
+                expect(spy).toHaveBeenCalledWith(path.join('SampleApp', 
'Plugins', dummy_id, 'SourceWithFramework.m'),{target: 
'571A463A14DB0A1B007FEAC7'});
             });
         });
 
@@ -405,7 +406,7 @@ describe('ios project handler', function() {
                 var spy = spyOn(proj_files.xcode, 'removeResourceFile');
 
                 ios['resource-file'].uninstall(resources[0], temp, 'pluginid', 
null, proj_files);
-                expect(spy).toHaveBeenCalledWith(path.join('Resources', 
'DummyPlugin.bundle'));
+                expect(spy).toHaveBeenCalledWith(path.join('Resources', 
'DummyPlugin.bundle'),{target:'571A463A14DB0A1B007FEAC7'});
             });
             it('should rm the file from the right target location', function(){
                 var resources = copyArray(valid_resources);
@@ -425,7 +426,7 @@ describe('ios project handler', function() {
                 var spy = spyOn(proj_files.xcode, 'removeFramework');
 
                 ios['framework'].uninstall(frameworks[0], temp, dummy_id, 
null, proj_files);
-                expect(spy).toHaveBeenCalledWith(path.join(temp, 
'SampleApp/Plugins/org.test.plugins.dummyplugin/Custom.framework'), 
{customFramework:true});
+                expect(spy).toHaveBeenCalledWith(path.join(temp, 
'SampleApp/Plugins/org.test.plugins.dummyplugin/Custom.framework'), 
{customFramework:true,target:'571A463A14DB0A1B007FEAC7'});
             });
 
             // TODO: Add more tests to cover the cases:
@@ -442,5 +443,21 @@ describe('ios project handler', function() {
                 });
             });
         });
+        describe('apple watch test', function() {
+            beforeEach(function() {
+                shell.cp('-rf', ios_apple_watch_project, temp);
+            });
+             it('should find the application target (and not the watchkit 
extension/app)', function() {
+
+                var project = ios.parseProjectFile(temp);
+                expect(project.target).toEqual('1D6058900D05DD3D006BFB54');
+
+                var source = copyArray(valid_source).filter(function(s) { 
return s.targetDir === undefined; });
+                var spy = spyOn(proj_files.xcode, 'addSourceFile');
+                ios['source-file'].install(source[0], dummyplugin, temp, 
dummy_id, null, proj_files);
+                expect(spy).toHaveBeenCalledWith(slashJoin('Plugins', 
dummy_id, 'DummyPluginCommand.m'), {target:'571A463A14DB0A1B007FEAC7'});
+
+            });
+        });
     });
 });
diff --git 
a/cordova-lib/spec-plugman/projects/ios-apple-watch/AppleWatch.xcodeproj/project.pbxproj
 
b/cordova-lib/spec-plugman/projects/ios-apple-watch/AppleWatch.xcodeproj/project.pbxproj
new file mode 100644
index 000000000..3bd5369f3
--- /dev/null
+++ 
b/cordova-lib/spec-plugman/projects/ios-apple-watch/AppleWatch.xcodeproj/project.pbxproj
@@ -0,0 +1,913 @@
+// !$*UTF8*$!
+{
+       archiveVersion = 1;
+       classes = {
+       };
+       objectVersion = 46;
+       objects = {
+
+/* Begin PBXBuildFile section */
+               09F56C541B0D453700118BA7 /* InterfaceController.m in Sources */ 
= {isa = PBXBuildFile; fileRef = 09F56C531B0D453700118BA7 /* 
InterfaceController.m */; };
+               09F56C571B0D453700118BA7 /* NotificationController.m in Sources 
*/ = {isa = PBXBuildFile; fileRef = 09F56C561B0D453700118BA7 /* 
NotificationController.m */; };
+               09F56C591B0D453700118BA7 /* Images.xcassets in Resources */ = 
{isa = PBXBuildFile; fileRef = 09F56C581B0D453700118BA7 /* Images.xcassets */; 
};
+               09F56C5D1B0D453700118BA7 /* AppleWatch WatchKit App.app in 
Resources */ = {isa = PBXBuildFile; fileRef = 09F56C5C1B0D453700118BA7 /* 
AppleWatch WatchKit App.app */; };
+               09F56C651B0D453700118BA7 /* Interface.storyboard in Resources 
*/ = {isa = PBXBuildFile; fileRef = 09F56C631B0D453700118BA7 /* 
Interface.storyboard */; };
+               09F56C671B0D453700118BA7 /* Images.xcassets in Resources */ = 
{isa = PBXBuildFile; fileRef = 09F56C661B0D453700118BA7 /* Images.xcassets */; 
};
+               09F56C6A1B0D453700118BA7 /* AppleWatch WatchKit Extension.appex 
in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = 
09F56C4D1B0D453700118BA7 /* AppleWatch WatchKit Extension.appex */; settings = 
{ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
+               1D3623260D0F684500981E51 /* AppDelegate.m in Sources */ = {isa 
= PBXBuildFile; fileRef = 1D3623250D0F684500981E51 /* AppDelegate.m */; };
+               1D60589B0D05DD56006BFB54 /* main.m in Sources */ = {isa = 
PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; };
+               288765FD0DF74451002DB57D /* CoreGraphics.framework in 
Frameworks */ = {isa = PBXBuildFile; fileRef = 288765FC0DF74451002DB57D /* 
CoreGraphics.framework */; };
+               301BF552109A68D80062928A /* libCordova.a in Frameworks */ = 
{isa = PBXBuildFile; fileRef = 301BF535109A57CC0062928A /* libCordova.a */; };
+               302D95F114D2391D003F00A1 /* MainViewController.m in Sources */ 
= {isa = PBXBuildFile; fileRef = 302D95EF14D2391D003F00A1 /* 
MainViewController.m */; };
+               302D95F214D2391D003F00A1 /* MainViewController.xib in Resources 
*/ = {isa = PBXBuildFile; fileRef = 302D95F014D2391D003F00A1 /* 
MainViewController.xib */; };
+               305D5FD1115AB8F900A74A75 /* MobileCoreServices.framework in 
Frameworks */ = {isa = PBXBuildFile; fileRef = 305D5FD0115AB8F900A74A75 /* 
MobileCoreServices.framework */; };
+               3088BBBD154F3926009F9C59 /* Default-Landscape@2x~ipad.png in 
Resources */ = {isa = PBXBuildFile; fileRef = 3088BBB7154F3926009F9C59 /* 
Default-Landscape@2x~ipad.png */; };
+               3088BBBE154F3926009F9C59 /* Default-Landscape~ipad.png in 
Resources */ = {isa = PBXBuildFile; fileRef = 3088BBB8154F3926009F9C59 /* 
Default-Landscape~ipad.png */; };
+               3088BBBF154F3926009F9C59 /* Default-Portrait@2x~ipad.png in 
Resources */ = {isa = PBXBuildFile; fileRef = 3088BBB9154F3926009F9C59 /* 
Default-Portrait@2x~ipad.png */; };
+               3088BBC0154F3926009F9C59 /* Default-Portrait~ipad.png in 
Resources */ = {isa = PBXBuildFile; fileRef = 3088BBBA154F3926009F9C59 /* 
Default-Portrait~ipad.png */; };
+               3088BBC1154F3926009F9C59 /* Default@2x~iphone.png in Resources 
*/ = {isa = PBXBuildFile; fileRef = 3088BBBB154F3926009F9C59 /* 
Default@2x~iphone.png */; };
+               3088BBC2154F3926009F9C59 /* Default~iphone.png in Resources */ 
= {isa = PBXBuildFile; fileRef = 3088BBBC154F3926009F9C59 /* Default~iphone.png 
*/; };
+               308D05371370CCF300D202BF /* icon-72.png in Resources */ = {isa 
= PBXBuildFile; fileRef = 308D052E1370CCF300D202BF /* icon-72.png */; };
+               308D05381370CCF300D202BF /* icon.png in Resources */ = {isa = 
PBXBuildFile; fileRef = 308D052F1370CCF300D202BF /* icon.png */; };
+               308D05391370CCF300D202BF /* [email protected] in Resources */ = {isa 
= PBXBuildFile; fileRef = 308D05301370CCF300D202BF /* [email protected] */; };
+               30B4F30019D5E07200D9F7D8 /* Default-667h.png in Resources */ = 
{isa = PBXBuildFile; fileRef = 30B4F2FD19D5E07200D9F7D8 /* Default-667h.png */; 
};
+               30B4F30119D5E07200D9F7D8 /* Default-736h.png in Resources */ = 
{isa = PBXBuildFile; fileRef = 30B4F2FE19D5E07200D9F7D8 /* Default-736h.png */; 
};
+               30B4F30219D5E07200D9F7D8 /* Default-Landscape-736h.png in 
Resources */ = {isa = PBXBuildFile; fileRef = 30B4F2FF19D5E07200D9F7D8 /* 
Default-Landscape-736h.png */; };
+               30C1856619D5FC0A00212699 /* [email protected] in Resources */ = 
{isa = PBXBuildFile; fileRef = 30C1856519D5FC0A00212699 /* [email protected] */; };
+               30FC414916E50CA1004E6F35 /* [email protected] in Resources */ = 
{isa = PBXBuildFile; fileRef = 30FC414816E50CA1004E6F35 /* [email protected] */; };
+               5B1594DD16A7569C00FEF299 /* AssetsLibrary.framework in 
Frameworks */ = {isa = PBXBuildFile; fileRef = 5B1594DC16A7569C00FEF299 /* 
AssetsLibrary.framework */; };
+               7E7966DE1810823500FA85AD /* icon-40.png in Resources */ = {isa 
= PBXBuildFile; fileRef = 7E7966D41810823500FA85AD /* icon-40.png */; };
+               7E7966DF1810823500FA85AD /* [email protected] in Resources */ = 
{isa = PBXBuildFile; fileRef = 7E7966D51810823500FA85AD /* [email protected] */; };
+               7E7966E01810823500FA85AD /* icon-50.png in Resources */ = {isa 
= PBXBuildFile; fileRef = 7E7966D61810823500FA85AD /* icon-50.png */; };
+               7E7966E11810823500FA85AD /* [email protected] in Resources */ = 
{isa = PBXBuildFile; fileRef = 7E7966D71810823500FA85AD /* [email protected] */; };
+               7E7966E21810823500FA85AD /* icon-60.png in Resources */ = {isa 
= PBXBuildFile; fileRef = 7E7966D81810823500FA85AD /* icon-60.png */; };
+               7E7966E31810823500FA85AD /* [email protected] in Resources */ = 
{isa = PBXBuildFile; fileRef = 7E7966D91810823500FA85AD /* [email protected] */; };
+               7E7966E41810823500FA85AD /* icon-76.png in Resources */ = {isa 
= PBXBuildFile; fileRef = 7E7966DA1810823500FA85AD /* icon-76.png */; };
+               7E7966E51810823500FA85AD /* [email protected] in Resources */ = 
{isa = PBXBuildFile; fileRef = 7E7966DB1810823500FA85AD /* [email protected] */; };
+               7E7966E61810823500FA85AD /* icon-small.png in Resources */ = 
{isa = PBXBuildFile; fileRef = 7E7966DC1810823500FA85AD /* icon-small.png */; };
+               7E7966E71810823500FA85AD /* [email protected] in Resources */ = 
{isa = PBXBuildFile; fileRef = 7E7966DD1810823500FA85AD /* [email protected] 
*/; };
+               D4A0D8761607E02300AEF8BB /* Default-568h@2x~iphone.png in 
Resources */ = {isa = PBXBuildFile; fileRef = D4A0D8751607E02300AEF8BB /* 
Default-568h@2x~iphone.png */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXContainerItemProxy section */
+               09F56C5E1B0D453700118BA7 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 29B97313FDCFA39411CA2CEA /* Project 
object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 09F56C5B1B0D453700118BA7;
+                       remoteInfo = "AppleWatch WatchKit App";
+               };
+               09F56C681B0D453700118BA7 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 29B97313FDCFA39411CA2CEA /* Project 
object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 09F56C4C1B0D453700118BA7;
+                       remoteInfo = "AppleWatch WatchKit Extension";
+               };
+               301BF534109A57CC0062928A /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 301BF52D109A57CC0062928A /* 
CordovaLib.xcodeproj */;
+                       proxyType = 2;
+                       remoteGlobalIDString = D2AAC07E0554694100DB518D;
+                       remoteInfo = CordovaLib;
+               };
+               301BF550109A68C00062928A /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 301BF52D109A57CC0062928A /* 
CordovaLib.xcodeproj */;
+                       proxyType = 1;
+                       remoteGlobalIDString = D2AAC07D0554694100DB518D;
+                       remoteInfo = CordovaLib;
+               };
+/* End PBXContainerItemProxy section */
+
+/* Begin PBXCopyFilesBuildPhase section */
+               09F56C711B0D453700118BA7 /* Embed App Extensions */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = "";
+                       dstSubfolderSpec = 13;
+                       files = (
+                               09F56C6A1B0D453700118BA7 /* AppleWatch WatchKit 
Extension.appex in Embed App Extensions */,
+                       );
+                       name = "Embed App Extensions";
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+/* End PBXCopyFilesBuildPhase section */
+
+/* Begin PBXFileReference section */
+               09F56C4D1B0D453700118BA7 /* AppleWatch WatchKit Extension.appex 
*/ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; 
includeInIndex = 0; path = "AppleWatch WatchKit Extension.appex"; sourceTree = 
BUILT_PRODUCTS_DIR; };
+               09F56C501B0D453700118BA7 /* Info.plist */ = {isa = 
PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; 
sourceTree = "<group>"; };
+               09F56C511B0D453700118BA7 /* PushNotificationPayload.apns */ = 
{isa = PBXFileReference; lastKnownFileType = text; path = 
PushNotificationPayload.apns; sourceTree = "<group>"; };
+               09F56C521B0D453700118BA7 /* InterfaceController.h */ = {isa = 
PBXFileReference; lastKnownFileType = sourcecode.c.h; path = 
InterfaceController.h; sourceTree = "<group>"; };
+               09F56C531B0D453700118BA7 /* InterfaceController.m */ = {isa = 
PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = 
InterfaceController.m; sourceTree = "<group>"; };
+               09F56C551B0D453700118BA7 /* NotificationController.h */ = {isa 
= PBXFileReference; lastKnownFileType = sourcecode.c.h; path = 
NotificationController.h; sourceTree = "<group>"; };
+               09F56C561B0D453700118BA7 /* NotificationController.m */ = {isa 
= PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = 
NotificationController.m; sourceTree = "<group>"; };
+               09F56C581B0D453700118BA7 /* Images.xcassets */ = {isa = 
PBXFileReference; lastKnownFileType = folder.assetcatalog; path = 
Images.xcassets; sourceTree = "<group>"; };
+               09F56C5C1B0D453700118BA7 /* AppleWatch WatchKit App.app */ = 
{isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex 
= 0; path = "AppleWatch WatchKit App.app"; sourceTree = BUILT_PRODUCTS_DIR; };
+               09F56C621B0D453700118BA7 /* Info.plist */ = {isa = 
PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; 
sourceTree = "<group>"; };
+               09F56C641B0D453700118BA7 /* Base */ = {isa = PBXFileReference; 
lastKnownFileType = file.storyboard; name = Base; path = 
Base.lproj/Interface.storyboard; sourceTree = "<group>"; };
+               09F56C661B0D453700118BA7 /* Images.xcassets */ = {isa = 
PBXFileReference; lastKnownFileType = folder.assetcatalog; path = 
Images.xcassets; sourceTree = "<group>"; };
+               1D3623240D0F684500981E51 /* AppDelegate.h */ = {isa = 
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = 
AppDelegate.h; sourceTree = "<group>"; };
+               1D3623250D0F684500981E51 /* AppDelegate.m */ = {isa = 
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path 
= AppDelegate.m; sourceTree = "<group>"; };
+               1D6058910D05DD3D006BFB54 /* AppleWatch.app */ = {isa = 
PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; 
path = AppleWatch.app; sourceTree = BUILT_PRODUCTS_DIR; };
+               288765FC0DF74451002DB57D /* CoreGraphics.framework */ = {isa = 
PBXFileReference; lastKnownFileType = wrapper.framework; name = 
CoreGraphics.framework; path = 
System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };
+               29B97316FDCFA39411CA2CEA /* main.m */ = {isa = 
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path 
= main.m; sourceTree = "<group>"; };
+               301BF52D109A57CC0062928A /* CordovaLib.xcodeproj */ = {isa = 
PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = 
CordovaLib.xcodeproj; path = CordovaLib/CordovaLib.xcodeproj; sourceTree = 
"<group>"; };
+               301BF56E109A69640062928A /* www */ = {isa = PBXFileReference; 
lastKnownFileType = folder; path = www; sourceTree = SOURCE_ROOT; };
+               302D95EE14D2391D003F00A1 /* MainViewController.h */ = {isa = 
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = 
MainViewController.h; sourceTree = "<group>"; };
+               302D95EF14D2391D003F00A1 /* MainViewController.m */ = {isa = 
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path 
= MainViewController.m; sourceTree = "<group>"; };
+               302D95F014D2391D003F00A1 /* MainViewController.xib */ = {isa = 
PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = 
MainViewController.xib; sourceTree = "<group>"; };
+               305D5FD0115AB8F900A74A75 /* MobileCoreServices.framework */ = 
{isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = 
MobileCoreServices.framework; path = 
System/Library/Frameworks/MobileCoreServices.framework; sourceTree = SDKROOT; };
+               3088BBB7154F3926009F9C59 /* Default-Landscape@2x~ipad.png */ = 
{isa = PBXFileReference; lastKnownFileType = image.png; path = 
"Default-Landscape@2x~ipad.png"; sourceTree = "<group>"; };
+               3088BBB8154F3926009F9C59 /* Default-Landscape~ipad.png */ = 
{isa = PBXFileReference; lastKnownFileType = image.png; path = 
"Default-Landscape~ipad.png"; sourceTree = "<group>"; };
+               3088BBB9154F3926009F9C59 /* Default-Portrait@2x~ipad.png */ = 
{isa = PBXFileReference; lastKnownFileType = image.png; path = 
"Default-Portrait@2x~ipad.png"; sourceTree = "<group>"; };
+               3088BBBA154F3926009F9C59 /* Default-Portrait~ipad.png */ = {isa 
= PBXFileReference; lastKnownFileType = image.png; path = 
"Default-Portrait~ipad.png"; sourceTree = "<group>"; };
+               3088BBBB154F3926009F9C59 /* Default@2x~iphone.png */ = {isa = 
PBXFileReference; lastKnownFileType = image.png; path = 
"Default@2x~iphone.png"; sourceTree = "<group>"; };
+               3088BBBC154F3926009F9C59 /* Default~iphone.png */ = {isa = 
PBXFileReference; lastKnownFileType = image.png; path = "Default~iphone.png"; 
sourceTree = "<group>"; };
+               308D052E1370CCF300D202BF /* icon-72.png */ = {isa = 
PBXFileReference; lastKnownFileType = image.png; path = "icon-72.png"; 
sourceTree = "<group>"; };
+               308D052F1370CCF300D202BF /* icon.png */ = {isa = 
PBXFileReference; lastKnownFileType = image.png; path = icon.png; sourceTree = 
"<group>"; };
+               308D05301370CCF300D202BF /* [email protected] */ = {isa = 
PBXFileReference; lastKnownFileType = image.png; path = "[email protected]"; 
sourceTree = "<group>"; };
+               30B4F2FD19D5E07200D9F7D8 /* Default-667h.png */ = {isa = 
PBXFileReference; lastKnownFileType = image.png; path = "Default-667h.png"; 
sourceTree = "<group>"; };
+               30B4F2FE19D5E07200D9F7D8 /* Default-736h.png */ = {isa = 
PBXFileReference; lastKnownFileType = image.png; path = "Default-736h.png"; 
sourceTree = "<group>"; };
+               30B4F2FF19D5E07200D9F7D8 /* Default-Landscape-736h.png */ = 
{isa = PBXFileReference; lastKnownFileType = image.png; path = 
"Default-Landscape-736h.png"; sourceTree = "<group>"; };
+               30C1856519D5FC0A00212699 /* [email protected] */ = {isa = 
PBXFileReference; lastKnownFileType = image.png; path = "[email protected]"; 
sourceTree = "<group>"; };
+               30FC414816E50CA1004E6F35 /* [email protected] */ = {isa = 
PBXFileReference; lastKnownFileType = image.png; path = "[email protected]"; 
sourceTree = "<group>"; };
+               32CA4F630368D1EE00C91783 /* AppleWatch-Prefix.pch */ = {isa = 
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = 
"AppleWatch-Prefix.pch"; sourceTree = "<group>"; };
+               5B1594DC16A7569C00FEF299 /* AssetsLibrary.framework */ = {isa = 
PBXFileReference; lastKnownFileType = wrapper.framework; name = 
AssetsLibrary.framework; path = 
System/Library/Frameworks/AssetsLibrary.framework; sourceTree = SDKROOT; };
+               7E7966D41810823500FA85AD /* icon-40.png */ = {isa = 
PBXFileReference; lastKnownFileType = image.png; path = "icon-40.png"; 
sourceTree = "<group>"; };
+               7E7966D51810823500FA85AD /* [email protected] */ = {isa = 
PBXFileReference; lastKnownFileType = image.png; path = "[email protected]"; 
sourceTree = "<group>"; };
+               7E7966D61810823500FA85AD /* icon-50.png */ = {isa = 
PBXFileReference; lastKnownFileType = image.png; path = "icon-50.png"; 
sourceTree = "<group>"; };
+               7E7966D71810823500FA85AD /* [email protected] */ = {isa = 
PBXFileReference; lastKnownFileType = image.png; path = "[email protected]"; 
sourceTree = "<group>"; };
+               7E7966D81810823500FA85AD /* icon-60.png */ = {isa = 
PBXFileReference; lastKnownFileType = image.png; path = "icon-60.png"; 
sourceTree = "<group>"; };
+               7E7966D91810823500FA85AD /* [email protected] */ = {isa = 
PBXFileReference; lastKnownFileType = image.png; path = "[email protected]"; 
sourceTree = "<group>"; };
+               7E7966DA1810823500FA85AD /* icon-76.png */ = {isa = 
PBXFileReference; lastKnownFileType = image.png; path = "icon-76.png"; 
sourceTree = "<group>"; };
+               7E7966DB1810823500FA85AD /* [email protected] */ = {isa = 
PBXFileReference; lastKnownFileType = image.png; path = "[email protected]"; 
sourceTree = "<group>"; };
+               7E7966DC1810823500FA85AD /* icon-small.png */ = {isa = 
PBXFileReference; lastKnownFileType = image.png; path = "icon-small.png"; 
sourceTree = "<group>"; };
+               7E7966DD1810823500FA85AD /* [email protected] */ = {isa = 
PBXFileReference; lastKnownFileType = image.png; path = "[email protected]"; 
sourceTree = "<group>"; };
+               8D1107310486CEB800E47090 /* AppleWatch-Info.plist */ = {isa = 
PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = 
"AppleWatch-Info.plist"; path = "../AppleWatch-Info.plist"; 
plistStructureDefinitionIdentifier = 
"com.apple.xcode.plist.structure-definition.iphone.info-plist"; sourceTree = 
"<group>"; };
+               D4A0D8751607E02300AEF8BB /* Default-568h@2x~iphone.png */ = 
{isa = PBXFileReference; lastKnownFileType = image.png; path = 
"Default-568h@2x~iphone.png"; sourceTree = "<group>"; };
+               EB87FDF21871DA7A0020F90C /* merges */ = {isa = 
PBXFileReference; lastKnownFileType = folder; name = merges; path = 
../../merges; sourceTree = "<group>"; };
+               EB87FDF31871DA8E0020F90C /* www */ = {isa = PBXFileReference; 
lastKnownFileType = folder; name = www; path = ../../www; sourceTree = 
"<group>"; };
+               EB87FDF41871DAF40020F90C /* config.xml */ = {isa = 
PBXFileReference; lastKnownFileType = text.xml; name = config.xml; path = 
../../config.xml; sourceTree = "<group>"; };
+               F840E1F0165FE0F500CFE078 /* config.xml */ = {isa = 
PBXFileReference; lastKnownFileType = text.xml; name = config.xml; path = 
AppleWatch/config.xml; sourceTree = "<group>"; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+               09F56C4A1B0D453700118BA7 /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               1D60588F0D05DD3D006BFB54 /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               5B1594DD16A7569C00FEF299 /* 
AssetsLibrary.framework in Frameworks */,
+                               301BF552109A68D80062928A /* libCordova.a in 
Frameworks */,
+                               288765FD0DF74451002DB57D /* 
CoreGraphics.framework in Frameworks */,
+                               305D5FD1115AB8F900A74A75 /* 
MobileCoreServices.framework in Frameworks */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+               080E96DDFE201D6D7F000001 /* Classes */ = {
+                       isa = PBXGroup;
+                       children = (
+                               302D95EE14D2391D003F00A1 /* 
MainViewController.h */,
+                               302D95EF14D2391D003F00A1 /* 
MainViewController.m */,
+                               302D95F014D2391D003F00A1 /* 
MainViewController.xib */,
+                               1D3623240D0F684500981E51 /* AppDelegate.h */,
+                               1D3623250D0F684500981E51 /* AppDelegate.m */,
+                       );
+                       name = Classes;
+                       path = AppleWatch/Classes;
+                       sourceTree = SOURCE_ROOT;
+               };
+               09F56C4E1B0D453700118BA7 /* AppleWatch WatchKit Extension */ = {
+                       isa = PBXGroup;
+                       children = (
+                               09F56C521B0D453700118BA7 /* 
InterfaceController.h */,
+                               09F56C531B0D453700118BA7 /* 
InterfaceController.m */,
+                               09F56C551B0D453700118BA7 /* 
NotificationController.h */,
+                               09F56C561B0D453700118BA7 /* 
NotificationController.m */,
+                               09F56C581B0D453700118BA7 /* Images.xcassets */,
+                               09F56C4F1B0D453700118BA7 /* Supporting Files */,
+                       );
+                       path = "AppleWatch WatchKit Extension";
+                       sourceTree = "<group>";
+               };
+               09F56C4F1B0D453700118BA7 /* Supporting Files */ = {
+                       isa = PBXGroup;
+                       children = (
+                               09F56C501B0D453700118BA7 /* Info.plist */,
+                               09F56C511B0D453700118BA7 /* 
PushNotificationPayload.apns */,
+                       );
+                       name = "Supporting Files";
+                       sourceTree = "<group>";
+               };
+               09F56C601B0D453700118BA7 /* AppleWatch WatchKit App */ = {
+                       isa = PBXGroup;
+                       children = (
+                               09F56C631B0D453700118BA7 /* 
Interface.storyboard */,
+                               09F56C661B0D453700118BA7 /* Images.xcassets */,
+                               09F56C611B0D453700118BA7 /* Supporting Files */,
+                       );
+                       path = "AppleWatch WatchKit App";
+                       sourceTree = "<group>";
+               };
+               09F56C611B0D453700118BA7 /* Supporting Files */ = {
+                       isa = PBXGroup;
+                       children = (
+                               09F56C621B0D453700118BA7 /* Info.plist */,
+                       );
+                       name = "Supporting Files";
+                       sourceTree = "<group>";
+               };
+               19C28FACFE9D520D11CA2CBB /* Products */ = {
+                       isa = PBXGroup;
+                       children = (
+                               1D6058910D05DD3D006BFB54 /* AppleWatch.app */,
+                               09F56C4D1B0D453700118BA7 /* AppleWatch WatchKit 
Extension.appex */,
+                               09F56C5C1B0D453700118BA7 /* AppleWatch WatchKit 
App.app */,
+                       );
+                       name = Products;
+                       sourceTree = "<group>";
+               };
+               29B97314FDCFA39411CA2CEA /* CustomTemplate */ = {
+                       isa = PBXGroup;
+                       children = (
+                               EB87FDF41871DAF40020F90C /* config.xml */,
+                               EB87FDF31871DA8E0020F90C /* www */,
+                               EB87FDF21871DA7A0020F90C /* merges */,
+                               EB87FDF11871DA420020F90C /* Staging */,
+                               301BF52D109A57CC0062928A /* 
CordovaLib.xcodeproj */,
+                               080E96DDFE201D6D7F000001 /* Classes */,
+                               307C750510C5A3420062BCA9 /* Plugins */,
+                               29B97315FDCFA39411CA2CEA /* Other Sources */,
+                               29B97317FDCFA39411CA2CEA /* Resources */,
+                               09F56C4E1B0D453700118BA7 /* AppleWatch WatchKit 
Extension */,
+                               09F56C601B0D453700118BA7 /* AppleWatch WatchKit 
App */,
+                               29B97323FDCFA39411CA2CEA /* Frameworks */,
+                               19C28FACFE9D520D11CA2CBB /* Products */,
+                       );
+                       name = CustomTemplate;
+                       sourceTree = "<group>";
+               };
+               29B97315FDCFA39411CA2CEA /* Other Sources */ = {
+                       isa = PBXGroup;
+                       children = (
+                               32CA4F630368D1EE00C91783 /* 
AppleWatch-Prefix.pch */,
+                               29B97316FDCFA39411CA2CEA /* main.m */,
+                       );
+                       name = "Other Sources";
+                       path = AppleWatch;
+                       sourceTree = "<group>";
+               };
+               29B97317FDCFA39411CA2CEA /* Resources */ = {
+                       isa = PBXGroup;
+                       children = (
+                               308D052D1370CCF300D202BF /* icons */,
+                               308D05311370CCF300D202BF /* splash */,
+                               8D1107310486CEB800E47090 /* 
AppleWatch-Info.plist */,
+                       );
+                       name = Resources;
+                       path = AppleWatch/Resources;
+                       sourceTree = "<group>";
+               };
+               29B97323FDCFA39411CA2CEA /* Frameworks */ = {
+                       isa = PBXGroup;
+                       children = (
+                               5B1594DC16A7569C00FEF299 /* 
AssetsLibrary.framework */,
+                               288765FC0DF74451002DB57D /* 
CoreGraphics.framework */,
+                               305D5FD0115AB8F900A74A75 /* 
MobileCoreServices.framework */,
+                       );
+                       name = Frameworks;
+                       sourceTree = "<group>";
+               };
+               301BF52E109A57CC0062928A /* Products */ = {
+                       isa = PBXGroup;
+                       children = (
+                               301BF535109A57CC0062928A /* libCordova.a */,
+                       );
+                       name = Products;
+                       sourceTree = "<group>";
+               };
+               307C750510C5A3420062BCA9 /* Plugins */ = {
+                       isa = PBXGroup;
+                       children = (
+                       );
+                       name = Plugins;
+                       path = AppleWatch/Plugins;
+                       sourceTree = SOURCE_ROOT;
+               };
+               308D052D1370CCF300D202BF /* icons */ = {
+                       isa = PBXGroup;
+                       children = (
+                               30C1856519D5FC0A00212699 /* [email protected] */,
+                               7E7966D41810823500FA85AD /* icon-40.png */,
+                               7E7966D51810823500FA85AD /* [email protected] */,
+                               7E7966D61810823500FA85AD /* icon-50.png */,
+                               7E7966D71810823500FA85AD /* [email protected] */,
+                               7E7966D81810823500FA85AD /* icon-60.png */,
+                               7E7966D91810823500FA85AD /* [email protected] */,
+                               7E7966DA1810823500FA85AD /* icon-76.png */,
+                               7E7966DB1810823500FA85AD /* [email protected] */,
+                               7E7966DC1810823500FA85AD /* icon-small.png */,
+                               7E7966DD1810823500FA85AD /* [email protected] 
*/,
+                               30FC414816E50CA1004E6F35 /* [email protected] */,
+                               308D052E1370CCF300D202BF /* icon-72.png */,
+                               308D052F1370CCF300D202BF /* icon.png */,
+                               308D05301370CCF300D202BF /* [email protected] */,
+                       );
+                       path = icons;
+                       sourceTree = "<group>";
+               };
+               308D05311370CCF300D202BF /* splash */ = {
+                       isa = PBXGroup;
+                       children = (
+                               30B4F2FD19D5E07200D9F7D8 /* Default-667h.png */,
+                               30B4F2FE19D5E07200D9F7D8 /* Default-736h.png */,
+                               30B4F2FF19D5E07200D9F7D8 /* 
Default-Landscape-736h.png */,
+                               D4A0D8751607E02300AEF8BB /* 
Default-568h@2x~iphone.png */,
+                               3088BBB7154F3926009F9C59 /* 
Default-Landscape@2x~ipad.png */,
+                               3088BBB8154F3926009F9C59 /* 
Default-Landscape~ipad.png */,
+                               3088BBB9154F3926009F9C59 /* 
Default-Portrait@2x~ipad.png */,
+                               3088BBBA154F3926009F9C59 /* 
Default-Portrait~ipad.png */,
+                               3088BBBB154F3926009F9C59 /* 
Default@2x~iphone.png */,
+                               3088BBBC154F3926009F9C59 /* Default~iphone.png 
*/,
+                       );
+                       path = splash;
+                       sourceTree = "<group>";
+               };
+               EB87FDF11871DA420020F90C /* Staging */ = {
+                       isa = PBXGroup;
+                       children = (
+                               F840E1F0165FE0F500CFE078 /* config.xml */,
+                               301BF56E109A69640062928A /* www */,
+                       );
+                       name = Staging;
+                       sourceTree = "<group>";
+               };
+/* End PBXGroup section */
+
+/* Begin PBXNativeTarget section */
+               09F56C4C1B0D453700118BA7 /* AppleWatch WatchKit Extension */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = 09F56C701B0D453700118BA7 /* 
Build configuration list for PBXNativeTarget "AppleWatch WatchKit Extension" */;
+                       buildPhases = (
+                               09F56C491B0D453700118BA7 /* Sources */,
+                               09F56C4A1B0D453700118BA7 /* Frameworks */,
+                               09F56C4B1B0D453700118BA7 /* Resources */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                               09F56C5F1B0D453700118BA7 /* PBXTargetDependency 
*/,
+                       );
+                       name = "AppleWatch WatchKit Extension";
+                       productName = "AppleWatch WatchKit Extension";
+                       productReference = 09F56C4D1B0D453700118BA7 /* 
AppleWatch WatchKit Extension.appex */;
+                       productType = 
"com.apple.product-type.watchkit-extension";
+               };
+               09F56C5B1B0D453700118BA7 /* AppleWatch WatchKit App */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = 09F56C6F1B0D453700118BA7 /* 
Build configuration list for PBXNativeTarget "AppleWatch WatchKit App" */;
+                       buildPhases = (
+                               09F56C5A1B0D453700118BA7 /* Resources */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                       );
+                       name = "AppleWatch WatchKit App";
+                       productName = "AppleWatch WatchKit App";
+                       productReference = 09F56C5C1B0D453700118BA7 /* 
AppleWatch WatchKit App.app */;
+                       productType = 
"com.apple.product-type.application.watchapp";
+               };
+               1D6058900D05DD3D006BFB54 /* AppleWatch */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = 1D6058960D05DD3E006BFB54 /* 
Build configuration list for PBXNativeTarget "AppleWatch" */;
+                       buildPhases = (
+                               304B58A110DAC018002A0835 /* Copy www directory 
*/,
+                               1D60588D0D05DD3D006BFB54 /* Resources */,
+                               1D60588E0D05DD3D006BFB54 /* Sources */,
+                               1D60588F0D05DD3D006BFB54 /* Frameworks */,
+                               09F56C711B0D453700118BA7 /* Embed App 
Extensions */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                               301BF551109A68C00062928A /* PBXTargetDependency 
*/,
+                               09F56C691B0D453700118BA7 /* PBXTargetDependency 
*/,
+                       );
+                       name = AppleWatch;
+                       productName = AppleWatch;
+                       productReference = 1D6058910D05DD3D006BFB54 /* 
AppleWatch.app */;
+                       productType = "com.apple.product-type.application";
+               };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+               29B97313FDCFA39411CA2CEA /* Project object */ = {
+                       isa = PBXProject;
+                       attributes = {
+                               LastUpgradeCheck = 510;
+                               TargetAttributes = {
+                                       09F56C4C1B0D453700118BA7 = {
+                                               CreatedOnToolsVersion = 6.3.2;
+                                       };
+                                       09F56C5B1B0D453700118BA7 = {
+                                               CreatedOnToolsVersion = 6.3.2;
+                                       };
+                               };
+                       };
+                       buildConfigurationList = C01FCF4E08A954540054247B /* 
Build configuration list for PBXProject "AppleWatch" */;
+                       compatibilityVersion = "Xcode 3.2";
+                       developmentRegion = English;
+                       hasScannedForEncodings = 1;
+                       knownRegions = (
+                               English,
+                               Japanese,
+                               French,
+                               German,
+                               en,
+                               es,
+                               de,
+                               se,
+                               Base,
+                       );
+                       mainGroup = 29B97314FDCFA39411CA2CEA /* CustomTemplate 
*/;
+                       projectDirPath = "";
+                       projectReferences = (
+                               {
+                                       ProductGroup = 301BF52E109A57CC0062928A 
/* Products */;
+                                       ProjectRef = 301BF52D109A57CC0062928A 
/* CordovaLib.xcodeproj */;
+                               },
+                       );
+                       projectRoot = "";
+                       targets = (
+                               1D6058900D05DD3D006BFB54 /* AppleWatch */,
+                               09F56C4C1B0D453700118BA7 /* AppleWatch WatchKit 
Extension */,
+                               09F56C5B1B0D453700118BA7 /* AppleWatch WatchKit 
App */,
+                       );
+               };
+/* End PBXProject section */
+
+/* Begin PBXReferenceProxy section */
+               301BF535109A57CC0062928A /* libCordova.a */ = {
+                       isa = PBXReferenceProxy;
+                       fileType = archive.ar;
+                       path = libCordova.a;
+                       remoteRef = 301BF534109A57CC0062928A /* 
PBXContainerItemProxy */;
+                       sourceTree = BUILT_PRODUCTS_DIR;
+               };
+/* End PBXReferenceProxy section */
+
+/* Begin PBXResourcesBuildPhase section */
+               09F56C4B1B0D453700118BA7 /* Resources */ = {
+                       isa = PBXResourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               09F56C591B0D453700118BA7 /* Images.xcassets in 
Resources */,
+                               09F56C5D1B0D453700118BA7 /* AppleWatch WatchKit 
App.app in Resources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               09F56C5A1B0D453700118BA7 /* Resources */ = {
+                       isa = PBXResourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               09F56C651B0D453700118BA7 /* 
Interface.storyboard in Resources */,
+                               09F56C671B0D453700118BA7 /* Images.xcassets in 
Resources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               1D60588D0D05DD3D006BFB54 /* Resources */ = {
+                       isa = PBXResourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               7E7966E41810823500FA85AD /* icon-76.png in 
Resources */,
+                               7E7966DF1810823500FA85AD /* [email protected] in 
Resources */,
+                               308D05371370CCF300D202BF /* icon-72.png in 
Resources */,
+                               30B4F30119D5E07200D9F7D8 /* Default-736h.png in 
Resources */,
+                               308D05381370CCF300D202BF /* icon.png in 
Resources */,
+                               308D05391370CCF300D202BF /* [email protected] in 
Resources */,
+                               302D95F214D2391D003F00A1 /* 
MainViewController.xib in Resources */,
+                               7E7966E01810823500FA85AD /* icon-50.png in 
Resources */,
+                               7E7966E31810823500FA85AD /* [email protected] in 
Resources */,
+                               7E7966E61810823500FA85AD /* icon-small.png in 
Resources */,
+                               3088BBBD154F3926009F9C59 /* 
Default-Landscape@2x~ipad.png in Resources */,
+                               3088BBBE154F3926009F9C59 /* 
Default-Landscape~ipad.png in Resources */,
+                               3088BBBF154F3926009F9C59 /* 
Default-Portrait@2x~ipad.png in Resources */,
+                               7E7966E71810823500FA85AD /* [email protected] 
in Resources */,
+                               3088BBC0154F3926009F9C59 /* 
Default-Portrait~ipad.png in Resources */,
+                               30B4F30019D5E07200D9F7D8 /* Default-667h.png in 
Resources */,
+                               7E7966DE1810823500FA85AD /* icon-40.png in 
Resources */,
+                               3088BBC1154F3926009F9C59 /* 
Default@2x~iphone.png in Resources */,
+                               7E7966E21810823500FA85AD /* icon-60.png in 
Resources */,
+                               3088BBC2154F3926009F9C59 /* Default~iphone.png 
in Resources */,
+                               D4A0D8761607E02300AEF8BB /* 
Default-568h@2x~iphone.png in Resources */,
+                               30B4F30219D5E07200D9F7D8 /* 
Default-Landscape-736h.png in Resources */,
+                               30C1856619D5FC0A00212699 /* [email protected] in 
Resources */,
+                               7E7966E11810823500FA85AD /* [email protected] in 
Resources */,
+                               7E7966E51810823500FA85AD /* [email protected] in 
Resources */,
+                               30FC414916E50CA1004E6F35 /* [email protected] in 
Resources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXShellScriptBuildPhase section */
+               304B58A110DAC018002A0835 /* Copy www directory */ = {
+                       isa = PBXShellScriptBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                       );
+                       inputPaths = (
+                       );
+                       name = "Copy www directory";
+                       outputPaths = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+                       shellPath = /bin/sh;
+                       shellScript = "cordova/lib/copy-www-build-step.sh";
+                       showEnvVarsInLog = 0;
+               };
+/* End PBXShellScriptBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+               09F56C491B0D453700118BA7 /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               09F56C571B0D453700118BA7 /* 
NotificationController.m in Sources */,
+                               09F56C541B0D453700118BA7 /* 
InterfaceController.m in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               1D60588E0D05DD3D006BFB54 /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               1D60589B0D05DD56006BFB54 /* main.m in Sources 
*/,
+                               1D3623260D0F684500981E51 /* AppDelegate.m in 
Sources */,
+                               302D95F114D2391D003F00A1 /* 
MainViewController.m in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin PBXTargetDependency section */
+               09F56C5F1B0D453700118BA7 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 09F56C5B1B0D453700118BA7 /* AppleWatch 
WatchKit App */;
+                       targetProxy = 09F56C5E1B0D453700118BA7 /* 
PBXContainerItemProxy */;
+               };
+               09F56C691B0D453700118BA7 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 09F56C4C1B0D453700118BA7 /* AppleWatch 
WatchKit Extension */;
+                       targetProxy = 09F56C681B0D453700118BA7 /* 
PBXContainerItemProxy */;
+               };
+               301BF551109A68C00062928A /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       name = CordovaLib;
+                       targetProxy = 301BF550109A68C00062928A /* 
PBXContainerItemProxy */;
+               };
+/* End PBXTargetDependency section */
+
+/* Begin PBXVariantGroup section */
+               09F56C631B0D453700118BA7 /* Interface.storyboard */ = {
+                       isa = PBXVariantGroup;
+                       children = (
+                               09F56C641B0D453700118BA7 /* Base */,
+                       );
+                       name = Interface.storyboard;
+                       sourceTree = "<group>";
+               };
+/* End PBXVariantGroup section */
+
+/* Begin XCBuildConfiguration section */
+               09F56C6B1B0D453700118BA7 /* Debug */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               ALWAYS_SEARCH_USER_PATHS = NO;
+                               CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+                               CLANG_CXX_LIBRARY = "libc++";
+                               CLANG_ENABLE_MODULES = YES;
+                               CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+                               CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+                               CLANG_WARN_UNREACHABLE_CODE = YES;
+                               COPY_PHASE_STRIP = NO;
+                               DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+                               ENABLE_STRICT_OBJC_MSGSEND = YES;
+                               GCC_C_LANGUAGE_STANDARD = gnu99;
+                               GCC_DYNAMIC_NO_PIC = NO;
+                               GCC_NO_COMMON_BLOCKS = YES;
+                               GCC_OPTIMIZATION_LEVEL = 0;
+                               GCC_PREPROCESSOR_DEFINITIONS = (
+                                       "DEBUG=1",
+                                       "$(inherited)",
+                               );
+                               GCC_SYMBOLS_PRIVATE_EXTERN = NO;
+                               GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+                               GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+                               GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+                               INFOPLIST_FILE = "AppleWatch WatchKit 
Extension/Info.plist";
+                               IPHONEOS_DEPLOYMENT_TARGET = 8.3;
+                               LD_RUNPATH_SEARCH_PATHS = "$(inherited) 
@executable_path/Frameworks @executable_path/../../Frameworks";
+                               MTL_ENABLE_DEBUG_INFO = YES;
+                               PRODUCT_NAME = "${TARGET_NAME}";
+                               SKIP_INSTALL = YES;
+                       };
+                       name = Debug;
+               };
+               09F56C6C1B0D453700118BA7 /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               ALWAYS_SEARCH_USER_PATHS = NO;
+                               CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+                               CLANG_CXX_LIBRARY = "libc++";
+                               CLANG_ENABLE_MODULES = YES;
+                               CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+                               CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+                               CLANG_WARN_UNREACHABLE_CODE = YES;
+                               COPY_PHASE_STRIP = NO;
+                               DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+                               ENABLE_NS_ASSERTIONS = NO;
+                               ENABLE_STRICT_OBJC_MSGSEND = YES;
+                               GCC_C_LANGUAGE_STANDARD = gnu99;
+                               GCC_NO_COMMON_BLOCKS = YES;
+                               GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+                               GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+                               GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+                               INFOPLIST_FILE = "AppleWatch WatchKit 
Extension/Info.plist";
+                               IPHONEOS_DEPLOYMENT_TARGET = 8.3;
+                               LD_RUNPATH_SEARCH_PATHS = "$(inherited) 
@executable_path/Frameworks @executable_path/../../Frameworks";
+                               MTL_ENABLE_DEBUG_INFO = NO;
+                               PRODUCT_NAME = "${TARGET_NAME}";
+                               SKIP_INSTALL = YES;
+                               VALIDATE_PRODUCT = YES;
+                       };
+                       name = Release;
+               };
+               09F56C6D1B0D453700118BA7 /* Debug */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               ALWAYS_SEARCH_USER_PATHS = NO;
+                               ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+                               CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+                               CLANG_CXX_LIBRARY = "libc++";
+                               CLANG_ENABLE_MODULES = YES;
+                               CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+                               CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+                               CLANG_WARN_UNREACHABLE_CODE = YES;
+                               COPY_PHASE_STRIP = NO;
+                               DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+                               ENABLE_STRICT_OBJC_MSGSEND = YES;
+                               GCC_C_LANGUAGE_STANDARD = gnu99;
+                               GCC_DYNAMIC_NO_PIC = NO;
+                               GCC_NO_COMMON_BLOCKS = YES;
+                               GCC_OPTIMIZATION_LEVEL = 0;
+                               GCC_PREPROCESSOR_DEFINITIONS = (
+                                       "DEBUG=1",
+                                       "$(inherited)",
+                               );
+                               GCC_SYMBOLS_PRIVATE_EXTERN = NO;
+                               GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+                               GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+                               GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+                               IBSC_MODULE = AppleWatch_WatchKit_Extension;
+                               INFOPLIST_FILE = "AppleWatch WatchKit 
App/Info.plist";
+                               IPHONEOS_DEPLOYMENT_TARGET = 8.3;
+                               MTL_ENABLE_DEBUG_INFO = YES;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                               SKIP_INSTALL = YES;
+                               TARGETED_DEVICE_FAMILY = 4;
+                               "TARGETED_DEVICE_FAMILY[sdk=iphonesimulator*]" 
= "1,4";
+                       };
+                       name = Debug;
+               };
+               09F56C6E1B0D453700118BA7 /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               ALWAYS_SEARCH_USER_PATHS = NO;
+                               ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+                               CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+                               CLANG_CXX_LIBRARY = "libc++";
+                               CLANG_ENABLE_MODULES = YES;
+                               CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+                               CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+                               CLANG_WARN_UNREACHABLE_CODE = YES;
+                               COPY_PHASE_STRIP = NO;
+                               DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+                               ENABLE_NS_ASSERTIONS = NO;
+                               ENABLE_STRICT_OBJC_MSGSEND = YES;
+                               GCC_C_LANGUAGE_STANDARD = gnu99;
+                               GCC_NO_COMMON_BLOCKS = YES;
+                               GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+                               GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+                               GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+                               IBSC_MODULE = AppleWatch_WatchKit_Extension;
+                               INFOPLIST_FILE = "AppleWatch WatchKit 
App/Info.plist";
+                               IPHONEOS_DEPLOYMENT_TARGET = 8.3;
+                               MTL_ENABLE_DEBUG_INFO = NO;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                               SKIP_INSTALL = YES;
+                               TARGETED_DEVICE_FAMILY = 4;
+                               "TARGETED_DEVICE_FAMILY[sdk=iphonesimulator*]" 
= "1,4";
+                               VALIDATE_PRODUCT = YES;
+                       };
+                       name = Release;
+               };
+               1D6058940D05DD3E006BFB54 /* Debug */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               ALWAYS_SEARCH_USER_PATHS = NO;
+                               CLANG_ENABLE_OBJC_ARC = YES;
+                               COPY_PHASE_STRIP = NO;
+                               GCC_DYNAMIC_NO_PIC = NO;
+                               GCC_OPTIMIZATION_LEVEL = 0;
+                               GCC_PRECOMPILE_PREFIX_HEADER = YES;
+                               GCC_PREFIX_HEADER = 
"AppleWatch/AppleWatch-Prefix.pch";
+                               GCC_THUMB_SUPPORT = NO;
+                               GCC_VERSION = "";
+                               INFOPLIST_FILE = 
"AppleWatch/AppleWatch-Info.plist";
+                               IPHONEOS_DEPLOYMENT_TARGET = 6.0;
+                               OTHER_LDFLAGS = (
+                                       "-weak_framework",
+                                       CoreFoundation,
+                                       "-weak_framework",
+                                       UIKit,
+                                       "-weak_framework",
+                                       AVFoundation,
+                                       "-weak_framework",
+                                       CoreMedia,
+                                       "-weak-lSystem",
+                                       "-ObjC",
+                               );
+                               PRODUCT_NAME = AppleWatch;
+                               TARGETED_DEVICE_FAMILY = "1,2";
+                       };
+                       name = Debug;
+               };
+               1D6058950D05DD3E006BFB54 /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               ALWAYS_SEARCH_USER_PATHS = NO;
+                               CLANG_ENABLE_OBJC_ARC = YES;
+                               COPY_PHASE_STRIP = YES;
+                               GCC_PRECOMPILE_PREFIX_HEADER = YES;
+                               GCC_PREFIX_HEADER = 
"AppleWatch/AppleWatch-Prefix.pch";
+                               GCC_THUMB_SUPPORT = NO;
+                               GCC_VERSION = "";
+                               INFOPLIST_FILE = 
"AppleWatch/AppleWatch-Info.plist";
+                               IPHONEOS_DEPLOYMENT_TARGET = 6.0;
+                               OTHER_LDFLAGS = (
+                                       "-weak_framework",
+                                       CoreFoundation,
+                                       "-weak_framework",
+                                       UIKit,
+                                       "-weak_framework",
+                                       AVFoundation,
+                                       "-weak_framework",
+                                       CoreMedia,
+                                       "-weak-lSystem",
+                                       "-ObjC",
+                               );
+                               PRODUCT_NAME = AppleWatch;
+                               TARGETED_DEVICE_FAMILY = "1,2";
+                       };
+                       name = Release;
+               };
+               C01FCF4F08A954540054247B /* Debug */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               CLANG_ENABLE_OBJC_ARC = YES;
+                               CLANG_WARN_BOOL_CONVERSION = YES;
+                               CLANG_WARN_CONSTANT_CONVERSION = YES;
+                               CLANG_WARN_EMPTY_BODY = YES;
+                               CLANG_WARN_ENUM_CONVERSION = YES;
+                               CLANG_WARN_INT_CONVERSION = YES;
+                               CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+                               "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone 
Developer";
+                               GCC_C_LANGUAGE_STANDARD = c99;
+                               GCC_THUMB_SUPPORT = NO;
+                               GCC_VERSION = "";
+                               GCC_WARN_ABOUT_RETURN_TYPE = YES;
+                               GCC_WARN_UNDECLARED_SELECTOR = YES;
+                               GCC_WARN_UNINITIALIZED_AUTOS = YES;
+                               GCC_WARN_UNUSED_FUNCTION = YES;
+                               GCC_WARN_UNUSED_VARIABLE = YES;
+                               HEADER_SEARCH_PATHS = (
+                                       
"\"$(TARGET_BUILD_DIR)/usr/local/lib/include\"",
+                                       
"\"$(OBJROOT)/UninstalledProducts/include\"",
+                                       "\"$(BUILT_PRODUCTS_DIR)\"",
+                               );
+                               IPHONEOS_DEPLOYMENT_TARGET = 6.0;
+                               ONLY_ACTIVE_ARCH = YES;
+                               OTHER_LDFLAGS = (
+                                       "-weak_framework",
+                                       CoreFoundation,
+                                       "-weak_framework",
+                                       UIKit,
+                                       "-weak_framework",
+                                       AVFoundation,
+                                       "-weak_framework",
+                                       CoreMedia,
+                                       "-weak-lSystem",
+                                       "-ObjC",
+                               );
+                               SDKROOT = iphoneos;
+                               SKIP_INSTALL = NO;
+                               USER_HEADER_SEARCH_PATHS = "";
+                       };
+                       name = Debug;
+               };
+               C01FCF5008A954540054247B /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               CLANG_ENABLE_OBJC_ARC = YES;
+                               CLANG_WARN_BOOL_CONVERSION = YES;
+                               CLANG_WARN_CONSTANT_CONVERSION = YES;
+                               CLANG_WARN_EMPTY_BODY = YES;
+                               CLANG_WARN_ENUM_CONVERSION = YES;
+                               CLANG_WARN_INT_CONVERSION = YES;
+                               CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+                               "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone 
Developer";
+                               GCC_C_LANGUAGE_STANDARD = c99;
+                               GCC_THUMB_SUPPORT = NO;
+                               GCC_VERSION = "";
+                               GCC_WARN_ABOUT_RETURN_TYPE = YES;
+                               GCC_WARN_UNDECLARED_SELECTOR = YES;
+                               GCC_WARN_UNINITIALIZED_AUTOS = YES;
+                               GCC_WARN_UNUSED_FUNCTION = YES;
+                               GCC_WARN_UNUSED_VARIABLE = YES;
+                               HEADER_SEARCH_PATHS = (
+                                       
"\"$(TARGET_BUILD_DIR)/usr/local/lib/include\"",
+                                       
"\"$(OBJROOT)/UninstalledProducts/include\"",
+                                       "\"$(BUILT_PRODUCTS_DIR)\"",
+                               );
+                               IPHONEOS_DEPLOYMENT_TARGET = 6.0;
+                               OTHER_LDFLAGS = (
+                                       "-weak_framework",
+                                       CoreFoundation,
+                                       "-weak_framework",
+                                       UIKit,
+                                       "-weak_framework",
+                                       AVFoundation,
+                                       "-weak_framework",
+                                       CoreMedia,
+                                       "-weak-lSystem",
+                                       "-ObjC",
+                               );
+                               SDKROOT = iphoneos;
+                               SKIP_INSTALL = NO;
+                               USER_HEADER_SEARCH_PATHS = "";
+                       };
+                       name = Release;
+               };
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+               09F56C6F1B0D453700118BA7 /* Build configuration list for 
PBXNativeTarget "AppleWatch WatchKit App" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               09F56C6D1B0D453700118BA7 /* Debug */,
+                               09F56C6E1B0D453700118BA7 /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+               };
+               09F56C701B0D453700118BA7 /* Build configuration list for 
PBXNativeTarget "AppleWatch WatchKit Extension" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               09F56C6B1B0D453700118BA7 /* Debug */,
+                               09F56C6C1B0D453700118BA7 /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+               };
+               1D6058960D05DD3E006BFB54 /* Build configuration list for 
PBXNativeTarget "AppleWatch" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               1D6058940D05DD3E006BFB54 /* Debug */,
+                               1D6058950D05DD3E006BFB54 /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+               C01FCF4E08A954540054247B /* Build configuration list for 
PBXProject "AppleWatch" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               C01FCF4F08A954540054247B /* Debug */,
+                               C01FCF5008A954540054247B /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+/* End XCConfigurationList section */
+       };
+       rootObject = 29B97313FDCFA39411CA2CEA /* Project object */;
+}
diff --git 
a/cordova-lib/spec-plugman/projects/ios-apple-watch/AppleWatch/AppleWatch-Info.plist
 
b/cordova-lib/spec-plugman/projects/ios-apple-watch/AppleWatch/AppleWatch-Info.plist
new file mode 100644
index 000000000..e40aed679
--- /dev/null
+++ 
b/cordova-lib/spec-plugman/projects/ios-apple-watch/AppleWatch/AppleWatch-Info.plist
@@ -0,0 +1,182 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" 
"http://www.apple.com/DTDs/PropertyList-1.0.dtd";>
+<plist version="1.0">
+  <dict>
+    <key>CFBundleDevelopmentRegion</key>
+    <string>English</string>
+    <key>CFBundleDisplayName</key>
+    <string>${PRODUCT_NAME}</string>
+    <key>CFBundleExecutable</key>
+    <string>${EXECUTABLE_NAME}</string>
+    <key>CFBundleIconFile</key>
+    <string>icon.png</string>
+    <key>CFBundleIcons</key>
+    <dict>
+      <key>CFBundlePrimaryIcon</key>
+      <dict>
+        <key>CFBundleIconFiles</key>
+        <array>
+          <string>icon-40</string>
+          <string>icon-small</string>
+          <string>icon-60</string>
+          <string>icon.png</string>
+          <string>icon@2x</string>
+          <string>icon-72</string>
+          <string>icon-72@2x</string>
+        </array>
+        <key>UIPrerenderedIcon</key>
+        <false/>
+      </dict>
+    </dict>
+    <key>CFBundleIcons~ipad</key>
+    <dict>
+      <key>CFBundlePrimaryIcon</key>
+      <dict>
+        <key>CFBundleIconFiles</key>
+        <array>
+          <string>icon-small</string>
+          <string>icon-40</string>
+          <string>icon-50</string>
+          <string>icon-76</string>
+          <string>icon-60</string>
+          <string>icon</string>
+          <string>icon@2x</string>
+          <string>icon-72</string>
+          <string>icon-72@2x</string>
+        </array>
+        <key>UIPrerenderedIcon</key>
+        <false/>
+      </dict>
+    </dict>
+    <key>CFBundleIdentifier</key>
+    <string>AppleWatch</string>
+    <key>CFBundleInfoDictionaryVersion</key>
+    <string>6.0</string>
+    <key>CFBundleName</key>
+    <string>${PRODUCT_NAME}</string>
+    <key>CFBundlePackageType</key>
+    <string>APPL</string>
+    <key>CFBundleSignature</key>
+    <string>????</string>
+    <key>CFBundleVersion</key>
+    <string>0.0.1</string>
+    <key>CFBundleShortVersionString</key>
+    <string>0.0.1</string>
+    <key>LSRequiresIPhoneOS</key>
+    <true/>
+    <key>NSMainNibFile</key>
+    <string></string>
+    <key>NSMainNibFile~ipad</key>
+    <string></string>
+    <key>UISupportedInterfaceOrientations~ipad</key>
+    <array>
+      <string>UIInterfaceOrientationPortrait</string>
+      <string>UIInterfaceOrientationLandscapeLeft</string>
+      <string>UIInterfaceOrientationPortraitUpsideDown</string>
+      <string>UIInterfaceOrientationLandscapeRight</string>
+    </array>
+    <key>UILaunchImages</key>
+    <array>
+      <dict>
+        <key>UILaunchImageMinimumOSVersion</key>
+        <string>8.0</string>
+        <key>UILaunchImageName</key>
+        <string>Default</string>
+        <key>UILaunchImageOrientation</key>
+        <string>Portrait</string>
+        <key>UILaunchImageSize</key>
+        <string>{320, 480}</string>
+      </dict>
+      <dict>
+        <key>UILaunchImageMinimumOSVersion</key>
+        <string>8.0</string>
+        <key>UILaunchImageName</key>
+        <string>Default</string>
+        <key>UILaunchImageOrientation</key>
+        <string>Landscape</string>
+        <key>UILaunchImageSize</key>
+        <string>{320, 480}</string>
+      </dict>
+      <dict>
+        <key>UILaunchImageMinimumOSVersion</key>
+        <string>8.0</string>
+        <key>UILaunchImageName</key>
+        <string>Default-568h</string>
+        <key>UILaunchImageOrientation</key>
+        <string>Portrait</string>
+        <key>UILaunchImageSize</key>
+        <string>{320, 568}</string>
+      </dict>
+      <dict>
+        <key>UILaunchImageMinimumOSVersion</key>
+        <string>8.0</string>
+        <key>UILaunchImageName</key>
+        <string>Default-568h</string>
+        <key>UILaunchImageOrientation</key>
+        <string>Landscape</string>
+        <key>UILaunchImageSize</key>
+        <string>{320, 568}</string>
+      </dict>
+      <dict>
+        <key>UILaunchImageMinimumOSVersion</key>
+        <string>8.0</string>
+        <key>UILaunchImageName</key>
+        <string>Default-667h</string>
+        <key>UILaunchImageOrientation</key>
+        <string>Portrait</string>
+        <key>UILaunchImageSize</key>
+        <string>{375, 667}</string>
+      </dict>
+      <dict>
+        <key>UILaunchImageMinimumOSVersion</key>
+        <string>8.0</string>
+        <key>UILaunchImageName</key>
+        <string>Default-667h</string>
+        <key>UILaunchImageOrientation</key>
+        <string>Landscape</string>
+        <key>UILaunchImageSize</key>
+        <string>{375, 667}</string>
+      </dict>
+      <dict>
+        <key>UILaunchImageMinimumOSVersion</key>
+        <string>8.0</string>
+        <key>UILaunchImageName</key>
+        <string>Default-736h</string>
+        <key>UILaunchImageOrientation</key>
+        <string>Portrait</string>
+        <key>UILaunchImageSize</key>
+        <string>{414, 736}</string>
+      </dict>
+      <dict>
+        <key>UILaunchImageMinimumOSVersion</key>
+        <string>8.0</string>
+        <key>UILaunchImageName</key>
+        <string>Default-Landscape-736h</string>
+        <key>UILaunchImageOrientation</key>
+        <string>Landscape</string>
+        <key>UILaunchImageSize</key>
+        <string>{414, 736}</string>
+      </dict>
+      <dict>
+        <key>UILaunchImageMinimumOSVersion</key>
+        <string>8.0</string>
+        <key>UILaunchImageName</key>
+        <string>Default-Portrait</string>
+        <key>UILaunchImageOrientation</key>
+        <string>Portrait</string>
+        <key>UILaunchImageSize</key>
+        <string>{768, 1024}</string>
+      </dict>
+      <dict>
+        <key>UILaunchImageMinimumOSVersion</key>
+        <string>8.0</string>
+        <key>UILaunchImageName</key>
+        <string>Default-Landscape</string>
+        <key>UILaunchImageOrientation</key>
+        <string>Landscape</string>
+        <key>UILaunchImageSize</key>
+        <string>{768, 1024}</string>
+      </dict>
+    </array>
+  </dict>
+</plist>
\ No newline at end of file
diff --git 
a/cordova-lib/spec-plugman/projects/ios-apple-watch/AppleWatch/config.xml 
b/cordova-lib/spec-plugman/projects/ios-apple-watch/AppleWatch/config.xml
new file mode 100755
index 000000000..fee3fb016
--- /dev/null
+++ b/cordova-lib/spec-plugman/projects/ios-apple-watch/AppleWatch/config.xml
@@ -0,0 +1,34 @@
+<?xml version='1.0' encoding='utf-8'?>
+<widget id="AppleWatch" version="0.0.1" xmlns="http://www.w3.org/ns/widgets"; 
xmlns:cdv="http://cordova.apache.org/ns/1.0";>
+    <preference name="AllowInlineMediaPlayback" value="false" />
+    <preference name="BackupWebStorage" value="cloud" />
+    <preference name="DisallowOverscroll" value="false" />
+    <preference name="EnableViewportScale" value="false" />
+    <preference name="KeyboardDisplayRequiresUserAction" value="true" />
+    <preference name="MediaPlaybackRequiresUserAction" value="false" />
+    <preference name="SuppressesIncrementalRendering" value="false" />
+    <preference name="GapBetweenPages" value="0" />
+    <preference name="PageLength" value="0" />
+    <preference name="PaginationBreakingMode" value="page" />
+    <preference name="PaginationMode" value="unpaginated" />
+    <feature name="LocalStorage">
+        <param name="ios-package" value="CDVLocalStorage" />
+    </feature>
+    <allow-intent href="itms:*" />
+    <allow-intent href="itms-apps:*" />
+    <name>AppleWatch</name>
+    <description>
+        A sample Apache Cordova application that responds to the deviceready 
event.
+    </description>
+    <author email="[email protected]" href="http://cordova.io";>
+        Apache Cordova Team
+    </author>
+    <content src="index.html" />
+    <access origin="*" />
+    <allow-intent href="http://*/*"; />
+    <allow-intent href="https://*/*"; />
+    <allow-intent href="tel:*" />
+    <allow-intent href="sms:*" />
+    <allow-intent href="mailto:*"; />
+    <allow-intent href="geo:*" />
+</widget>
diff --git a/cordova-lib/src/plugman/platforms/ios.js 
b/cordova-lib/src/plugman/platforms/ios.js
index 37503c523..1b30afb52 100644
--- a/cordova-lib/src/plugman/platforms/ios.js
+++ b/cordova-lib/src/plugman/platforms/ios.js
@@ -59,12 +59,14 @@ function installHelper(type, obj, plugin_dir, project_dir, 
plugin_id, options, p
     if (type == 'header-file') {
         project.xcode.addHeaderFile(project_ref);
     } else if (obj.framework) {
-        var opt = { weak: obj.weak };
+        var opt = { weak: obj.weak, target:project.target };
         var project_relative = path.join(path.basename(project.xcode_path), 
project_ref);
         project.xcode.addFramework(project_relative, opt);
         project.xcode.addToLibrarySearchPaths({path:project_ref});
     } else {
-        project.xcode.addSourceFile(project_ref, obj.compilerFlags ? 
{compilerFlags:obj.compilerFlags} : {});
+        var opt2 = obj.compilerFlags ? {compilerFlags:obj.compilerFlags} : {};
+        opt2.target = project.target;
+        project.xcode.addSourceFile(project_ref, opt2);
     }
 }
 
@@ -83,14 +85,16 @@ function uninstallHelper(type, obj, project_dir, plugin_id, 
options, project) {
 
     shell.rm('-rf', targetDir);
 
+   var opt = { target : project.target};
     if (type == 'header-file') {
         project.xcode.removeHeaderFile(project_ref);
     } else if (obj.framework) {
         var project_relative = path.join(path.basename(project.xcode_path), 
project_ref);
-        project.xcode.removeFramework(project_relative);
+     
+        project.xcode.removeFramework(project_relative,opt);
         project.xcode.removeFromLibrarySearchPaths({path:project_ref});
     } else {
-        project.xcode.removeSourceFile(project_ref);
+        project.xcode.removeSourceFile(project_ref,opt);
     }
 }
 
@@ -162,16 +166,20 @@ module.exports = {
         install:function(reobj, plugin_dir, project_dir, plugin_id, options, 
project) {
             var src = reobj.src,
                 srcFile = path.resolve(plugin_dir, src),
-                destFile = path.resolve(project.resources_dir, 
path.basename(src));
+                destFile = path.resolve(project.resources_dir, 
path.basename(src)),
+                opt = { target : project.target};
+
             if (!fs.existsSync(srcFile)) throw new Error('cannot find "' + 
srcFile + '" ios <resource-file>');
             if (fs.existsSync(destFile)) throw new Error('target destination 
"' + destFile + '" already exists');
-            project.xcode.addResourceFile(path.join('Resources', 
path.basename(src)));
+            
+            project.xcode.addResourceFile(path.join('Resources', 
path.basename(src)),opt);
             shell.cp('-R', srcFile, project.resources_dir);
         },
         uninstall:function(reobj, project_dir, plugin_id, options, project) {
             var src = reobj.src,
-                destFile = path.resolve(project.resources_dir, 
path.basename(src));
-            project.xcode.removeResourceFile(path.join('Resources', 
path.basename(src)));
+                destFile = path.resolve(project.resources_dir, 
path.basename(src)),
+                opt = { target : project.target};
+            project.xcode.removeResourceFile(path.join('Resources', 
path.basename(src)),opt);
             shell.rm('-rf', destFile);
         }
     },
@@ -200,12 +208,14 @@ module.exports = {
             shell.mkdir('-p', path.dirname(targetDir));
             shell.cp('-R', srcFile, path.dirname(targetDir)); // frameworks 
are directories
             var project_relative = path.relative(project_dir, targetDir);
-            var pbxFile = project.xcode.addFramework(project_relative, 
{customFramework: true});
+
+            var pbxFile = project.xcode.addFramework(project_relative, 
{customFramework: true,target:project.target});
             if (pbxFile) {
                 project.xcode.addToPbxEmbedFrameworksBuildPhase(pbxFile);
             }
         },
         uninstall:function(obj, project_dir, plugin_id, options, project) {
+
             var src = obj.src;
 
             if (!obj.custom) {
@@ -227,10 +237,12 @@ module.exports = {
             }
 
             var targetDir = path.resolve(project.plugins_dir, plugin_id, 
path.basename(src)),
-                pbxFile = project.xcode.removeFramework(targetDir, 
{customFramework: true});
+                pbxFile = project.xcode.removeFramework(targetDir, 
{customFramework: true, target:project.target});
+
             if (pbxFile) {
                 project.xcode.removeFromPbxEmbedFrameworksBuildPhase(pbxFile);
             }
+
             shell.rm('-rf', targetDir);
         }
     },
@@ -263,13 +275,66 @@ module.exports = {
         xcodeproj.parseSync();
 
         var xcBuildConfiguration = xcodeproj.pbxXCBuildConfigurationSection();
-        var plist_file_entry = _.find(xcBuildConfiguration, function (entry) { 
return entry.buildSettings && entry.buildSettings.INFOPLIST_FILE; });
-        var plist_file = path.join(project_dir, 
plist_file_entry.buildSettings.INFOPLIST_FILE.replace(/^"(.*)"$/g, 
'$1').replace(/\\&/g, '&'));
-        var config_file = path.join(path.dirname(plist_file), 'config.xml');
 
-        if (!fs.existsSync(plist_file) || !fs.existsSync(config_file)) {
+        // CB-9033
+        var plist_file_index;
+        var plist_file_entry = _.find(xcBuildConfiguration, function 
(entry,index) {
+            if (entry.buildSettings && entry.buildSettings.INFOPLIST_FILE && 
entry.buildSettings.SKIP_INSTALL != 'YES') {
+
+                var plist_file = path.join(project_dir, 
entry.buildSettings.INFOPLIST_FILE.replace(/^"(.*)"$/g, '$1').replace(/\\&/g, 
'&'));
+                 if (!fs.existsSync(plist_file)) 
+                    return false;
+                
+                var config_file = path.join(path.dirname(plist_file), 
'config.xml');
+                  if (!fs.existsSync(config_file)) 
+                    return false;
+
+                plist_file_index = index;
+                return true;
+              }
+
+            return false;
+        });
+      
+
+        if (!plist_file_entry)
             throw new CordovaError('could not find -Info.plist file, or 
config.xml file.');
-        }
+
+      
+        var target;
+        var XCConfigurationList = xcodeproj.pbxXCConfigurationList();
+        var buildConf;
+        var entry = _.find(XCConfigurationList, function (entry,index) { 
+            for(var i in entry.buildConfigurations)
+            {
+                var b = entry.buildConfigurations[i];
+                if (b.value==plist_file_index)
+                {
+                    buildConf=index;
+                    return true;
+                }
+            }
+            return false;
+        });
+
+        if (!buildConf)
+            throw new CordovaError('could not find buildConfiguration.');
+
+        var nativeTargets = xcodeproj.pbxNativeTarget();
+        entry = _.find(nativeTargets, function (entry,index) { 
+            if (entry.buildConfigurationList==buildConf)
+            {
+                target = index;
+                return true;
+            }
+            return false;
+        });
+
+        if (!target)
+            throw new CordovaError('could not find find target.');   
+
+
+        var plist_file = path.join(project_dir, 
plist_file_entry.buildSettings.INFOPLIST_FILE.replace(/^"(.*)"$/g, 
'$1').replace(/\\&/g, '&'));
 
         var frameworks_file = path.join(project_dir, 'frameworks.json');
         var frameworks = {};
@@ -287,6 +352,7 @@ module.exports = {
             resources_dir:resourcesDir,
             xcode:xcodeproj,
             xcode_path:xcode_dir,
+            target : target,
             pbx: pbxPath,
             write: function () {
                 fs.writeFileSync(pbxPath, xcodeproj.writeSync());


 

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
[email protected]


> Plugins fail to install on Apple Watch based Cordova project
> ------------------------------------------------------------
>
>                 Key: CB-9033
>                 URL: https://issues.apache.org/jira/browse/CB-9033
>             Project: Apache Cordova
>          Issue Type: Bug
>          Components: cordova-lib
>    Affects Versions: 5.0.0
>         Environment: iOS
>            Reporter: Olivier Goguel
>            Assignee: Shazron Abdullah
>            Priority: Major
>              Labels: backlog
>             Fix For: [email protected]
>
>
> After having added the Watch Kit target to an iOS Cordova project, plugins 
> cannot be added any more through the CLI.
> An error is thrown "'could not find -Info.plist file, or config.xml file." as 
> the plugin manager is confused by the plist files from the WatchKit App and 
> WatchKit Extension and fails to find the proper plist file of the projet.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to