11import * as path from "path" ;
22import { NativeTargetServiceBase } from "./ios-native-target-service-base" ;
3+ import { IOSDeviceTargets , IOS_WATCHAPP_FOLDER , IOS_WATCHAPP_EXTENSION_FOLDER , IOSNativeTargetProductTypes , IOSNativeTargetTypes } from "../constants" ;
34
45export class IOSWatchAppService extends NativeTargetServiceBase implements IIOSWatchAppService {
6+ private static WATCH_APP_IDENTIFIER = "watchkitapp" ;
7+ private static WACTCH_EXTENSION_IDENTIFIER = "watchkitextension" ;
58 constructor ( protected $fs : IFileSystem ,
69 protected $pbxprojDomXcode : IPbxprojDomXcode ,
710 protected $xcode : IXcode ) {
@@ -15,31 +18,31 @@ export class IOSWatchAppService extends NativeTargetServiceBase implements IIOSW
1518 return false ;
1619 }
1720
18- const appPath = path . join ( watchAppFolderPath , "watchapp" ) ;
21+ const appPath = path . join ( watchAppFolderPath , IOS_WATCHAPP_FOLDER ) ;
1922 const appFolder = this . getTargetDirectories ( appPath ) [ 0 ] ;
2023
21- const extensionPath = path . join ( watchAppFolderPath , "watchextension" ) ;
24+ const extensionPath = path . join ( watchAppFolderPath , IOS_WATCHAPP_EXTENSION_FOLDER ) ;
2225 const extensionFolder = this . getTargetDirectories ( extensionPath ) [ 0 ] ;
2326
2427 const project = new this . $xcode . project ( pbxProjPath ) ;
2528 project . parseSync ( ) ;
2629
27- const watchApptarget = this . addTargetToProject ( appPath , appFolder , "watch_app" , project , platformData , project . getFirstTarget ( ) . uuid ) ;
30+ const watchApptarget = this . addTargetToProject ( appPath , appFolder , IOSNativeTargetTypes . watchApp , project , platformData , project . getFirstTarget ( ) . uuid ) ;
2831 this . configureTarget (
2932 appFolder ,
3033 path . join ( appPath , appFolder ) ,
31- `${ projectData . projectIdentifiers . ios } .watchkitapp ` ,
34+ `${ projectData . projectIdentifiers . ios } .${ IOSWatchAppService . WATCH_APP_IDENTIFIER } ` ,
3235 "watchapp.json" ,
3336 watchApptarget ,
3437 project
3538 ) ;
3639 targetUuids . push ( watchApptarget . uuid ) ;
3740
38- const watchExtensionTarget = this . addTargetToProject ( extensionPath , extensionFolder , "watch_extension" , project , platformData , watchApptarget . uuid ) ;
41+ const watchExtensionTarget = this . addTargetToProject ( extensionPath , extensionFolder , IOSNativeTargetTypes . watchExtension , project , platformData , watchApptarget . uuid ) ;
3942 this . configureTarget (
4043 extensionFolder ,
4144 path . join ( extensionPath , extensionFolder ) ,
42- `${ projectData . projectIdentifiers . ios } .watchkitapp.watchkitextension ` ,
45+ `${ projectData . projectIdentifiers . ios } .${ IOSWatchAppService . WATCH_APP_IDENTIFIER } . ${ IOSWatchAppService . WACTCH_EXTENSION_IDENTIFIER } ` ,
4346 "extension.json" ,
4447 watchExtensionTarget ,
4548 project ) ;
@@ -54,8 +57,8 @@ export class IOSWatchAppService extends NativeTargetServiceBase implements IIOSW
5457 public removeWatchApp ( { pbxProjPath} : IRemoveWatchAppOptions ) : void {
5558 const project = new this . $xcode . project ( pbxProjPath ) ;
5659 project . parseSync ( ) ;
57- project . removeTargetsByProductType ( "com.apple.product-type.application.watchapp2" ) ;
58- project . removeTargetsByProductType ( "com.apple.product-type.watchkit2-extension" ) ;
60+ project . removeTargetsByProductType ( IOSNativeTargetProductTypes . watchApp ) ;
61+ project . removeTargetsByProductType ( IOSNativeTargetProductTypes . watchExtension ) ;
5962 this . $fs . writeFile ( pbxProjPath , project . writeSync ( { omitEmptyValues : true } ) ) ;
6063 }
6164
@@ -70,8 +73,8 @@ export class IOSWatchAppService extends NativeTargetServiceBase implements IIOSW
7073 this . setXcodeTargetBuildConfigurationProperties ( [
7174 { name : "PRODUCT_BUNDLE_IDENTIFIER" , value : identifier } ,
7275 { name : "SDKROOT" , value : "watchos" } ,
73- { name : "TARGETED_DEVICE_FAMILY" , value : 4 } ,
74- { name : "WATCHOS_DEPLOYMENT_TARGET" , value : 4.1 } ,
76+ { name : "TARGETED_DEVICE_FAMILY" , value : IOSDeviceTargets . watchos } ,
77+ { name : "WATCHOS_DEPLOYMENT_TARGET" , value : 4.1 } , //TODO consider WATCHOS_DEPLOYMENT_TARGET in json configuration
7578 { name : "WK_APP_BUNDLE_IDENTIFIER" , value : wkAppBundleIdentifier }
7679 ] , targetName , project ) ;
7780
0 commit comments