1
1
import * as path from "path" ;
2
2
import { NativeTargetServiceBase } from "./ios-native-target-service-base" ;
3
+ import { IOSDeviceTargets , IOS_WATCHAPP_FOLDER , IOS_WATCHAPP_EXTENSION_FOLDER , IOSNativeTargetProductTypes , IOSNativeTargetTypes } from "../constants" ;
3
4
4
5
export class IOSWatchAppService extends NativeTargetServiceBase implements IIOSWatchAppService {
6
+ private static WATCH_APP_IDENTIFIER = "watchkitapp" ;
7
+ private static WACTCH_EXTENSION_IDENTIFIER = "watchkitextension" ;
5
8
constructor ( protected $fs : IFileSystem ,
6
9
protected $pbxprojDomXcode : IPbxprojDomXcode ,
7
10
protected $xcode : IXcode ) {
@@ -15,31 +18,31 @@ export class IOSWatchAppService extends NativeTargetServiceBase implements IIOSW
15
18
return false ;
16
19
}
17
20
18
- const appPath = path . join ( watchAppFolderPath , "watchapp" ) ;
21
+ const appPath = path . join ( watchAppFolderPath , IOS_WATCHAPP_FOLDER ) ;
19
22
const appFolder = this . getTargetDirectories ( appPath ) [ 0 ] ;
20
23
21
- const extensionPath = path . join ( watchAppFolderPath , "watchextension" ) ;
24
+ const extensionPath = path . join ( watchAppFolderPath , IOS_WATCHAPP_EXTENSION_FOLDER ) ;
22
25
const extensionFolder = this . getTargetDirectories ( extensionPath ) [ 0 ] ;
23
26
24
27
const project = new this . $xcode . project ( pbxProjPath ) ;
25
28
project . parseSync ( ) ;
26
29
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 ) ;
28
31
this . configureTarget (
29
32
appFolder ,
30
33
path . join ( appPath , appFolder ) ,
31
- `${ projectData . projectIdentifiers . ios } .watchkitapp ` ,
34
+ `${ projectData . projectIdentifiers . ios } .${ IOSWatchAppService . WATCH_APP_IDENTIFIER } ` ,
32
35
"watchapp.json" ,
33
36
watchApptarget ,
34
37
project
35
38
) ;
36
39
targetUuids . push ( watchApptarget . uuid ) ;
37
40
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 ) ;
39
42
this . configureTarget (
40
43
extensionFolder ,
41
44
path . join ( extensionPath , extensionFolder ) ,
42
- `${ projectData . projectIdentifiers . ios } .watchkitapp.watchkitextension ` ,
45
+ `${ projectData . projectIdentifiers . ios } .${ IOSWatchAppService . WATCH_APP_IDENTIFIER } . ${ IOSWatchAppService . WACTCH_EXTENSION_IDENTIFIER } ` ,
43
46
"extension.json" ,
44
47
watchExtensionTarget ,
45
48
project ) ;
@@ -54,8 +57,8 @@ export class IOSWatchAppService extends NativeTargetServiceBase implements IIOSW
54
57
public removeWatchApp ( { pbxProjPath} : IRemoveWatchAppOptions ) : void {
55
58
const project = new this . $xcode . project ( pbxProjPath ) ;
56
59
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 ) ;
59
62
this . $fs . writeFile ( pbxProjPath , project . writeSync ( { omitEmptyValues : true } ) ) ;
60
63
}
61
64
@@ -70,8 +73,8 @@ export class IOSWatchAppService extends NativeTargetServiceBase implements IIOSW
70
73
this . setXcodeTargetBuildConfigurationProperties ( [
71
74
{ name : "PRODUCT_BUNDLE_IDENTIFIER" , value : identifier } ,
72
75
{ 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
75
78
{ name : "WK_APP_BUNDLE_IDENTIFIER" , value : wkAppBundleIdentifier }
76
79
] , targetName , project ) ;
77
80
0 commit comments