@@ -198,12 +198,17 @@ export class IOSProjectService extends projectServiceBaseLib.PlatformProjectServ
198
198
* Archive the Xcode project to .xcarchive.
199
199
* Returns the path to the .xcarchive.
200
200
*/
201
- public async archive ( projectData : IProjectData , buildConfig ?: IBuildConfig , options ?: { archivePath ?: string } ) : Promise < string > {
201
+ public async archive ( projectData : IProjectData , buildConfig ?: IBuildConfig , options ?: { archivePath ?: string , additionalArgs ?: string [ ] } ) : Promise < string > {
202
202
const projectRoot = this . getPlatformData ( projectData ) . projectRoot ;
203
203
const archivePath = options && options . archivePath ? path . resolve ( options . archivePath ) : path . join ( projectRoot , "/build/archive/" , projectData . projectName + ".xcarchive" ) ;
204
- const args = [ "archive" , "-archivePath" , archivePath , "-configuration" ,
204
+ let args = [ "archive" , "-archivePath" , archivePath , "-configuration" ,
205
205
( ! buildConfig || buildConfig . release ) ? "Release" : "Debug" ]
206
206
. concat ( this . xcbuildProjectArgs ( projectRoot , projectData , "scheme" ) ) ;
207
+
208
+ if ( options && options . additionalArgs ) {
209
+ args = args . concat ( options . additionalArgs ) ;
210
+ }
211
+
207
212
await this . xcodebuild ( args , projectRoot , buildConfig && buildConfig . buildOutputStdio ) ;
208
213
return archivePath ;
209
214
}
@@ -320,12 +325,9 @@ export class IOSProjectService extends projectServiceBaseLib.PlatformProjectServ
320
325
}
321
326
322
327
public async buildProject ( projectRoot : string , projectData : IProjectData , buildConfig : IBuildConfig ) : Promise < void > {
323
- let basicArgs = [
324
- "-configuration" , buildConfig . release ? "Release" : "Debug" ,
325
- "build" ,
328
+ const basicArgs = [
326
329
'SHARED_PRECOMPS_DIR=' + path . join ( projectRoot , 'build' , 'sharedpch' )
327
330
] ;
328
- basicArgs = basicArgs . concat ( this . xcbuildProjectArgs ( projectRoot , projectData ) ) ;
329
331
330
332
// Starting from tns-ios 1.4 the xcconfig file is referenced in the project template
331
333
const frameworkVersion = this . getFrameworkVersion ( this . getPlatformData ( projectData ) . frameworkPackageName , projectData . projectDir ) ;
@@ -353,7 +355,7 @@ export class IOSProjectService extends projectServiceBaseLib.PlatformProjectServ
353
355
await attachAwaitDetach ( constants . BUILD_OUTPUT_EVENT_NAME ,
354
356
this . $childProcess ,
355
357
handler ,
356
- this . buildForSimulator ( projectRoot , basicArgs , projectData , buildConfig . buildOutputStdio ) ) ;
358
+ this . buildForSimulator ( projectRoot , basicArgs , projectData , buildConfig ) ) ;
357
359
}
358
360
359
361
this . validateApplicationIdentifier ( projectData ) ;
@@ -413,8 +415,7 @@ export class IOSProjectService extends projectServiceBaseLib.PlatformProjectServ
413
415
await this . setupSigningForDevice ( projectRoot , buildConfig , projectData ) ;
414
416
}
415
417
416
- await this . xcodebuild ( args , projectRoot , buildConfig . buildOutputStdio ) ;
417
- await this . createIpa ( projectRoot , projectData , buildConfig ) ;
418
+ await this . createIpa ( projectRoot , projectData , buildConfig , args ) ;
418
419
}
419
420
420
421
private async xcodebuild ( args : string [ ] , cwd : string , stdio : any = "inherit" ) : Promise < ISpawnResult > {
@@ -535,20 +536,25 @@ export class IOSProjectService extends projectServiceBaseLib.PlatformProjectServ
535
536
}
536
537
}
537
538
538
- private async buildForSimulator ( projectRoot : string , args : string [ ] , projectData : IProjectData , buildOutputStdio ?: string ) : Promise < void > {
539
- args = args . concat ( [
540
- "-sdk" , "iphonesimulator" ,
541
- "ARCHS=i386 x86_64" ,
542
- "VALID_ARCHS=i386 x86_64" ,
543
- "ONLY_ACTIVE_ARCH=NO" ,
544
- "CONFIGURATION_BUILD_DIR=" + path . join ( projectRoot , "build" , "emulator" ) ,
545
- "CODE_SIGN_IDENTITY="
546
- ] ) ;
547
- await this . xcodebuild ( args , projectRoot , buildOutputStdio ) ;
539
+ private async buildForSimulator ( projectRoot : string , args : string [ ] , projectData : IProjectData , buildConfig ?: IBuildConfig ) : Promise < void > {
540
+ args = args
541
+ . concat ( [
542
+ "build" ,
543
+ "-configuration" , buildConfig . release ? "Release" : "Debug" ,
544
+ "-sdk" , "iphonesimulator" ,
545
+ "ARCHS=i386 x86_64" ,
546
+ "VALID_ARCHS=i386 x86_64" ,
547
+ "ONLY_ACTIVE_ARCH=NO" ,
548
+ "CONFIGURATION_BUILD_DIR=" + path . join ( projectRoot , "build" , "emulator" ) ,
549
+ "CODE_SIGN_IDENTITY=" ,
550
+ ] )
551
+ . concat ( this . xcbuildProjectArgs ( projectRoot , projectData ) ) ;
552
+
553
+ await this . xcodebuild ( args , projectRoot , buildConfig . buildOutputStdio ) ;
548
554
}
549
555
550
- private async createIpa ( projectRoot : string , projectData : IProjectData , buildConfig : IBuildConfig ) : Promise < string > {
551
- const archivePath = await this . archive ( projectData , buildConfig ) ;
556
+ private async createIpa ( projectRoot : string , projectData : IProjectData , buildConfig : IBuildConfig , args : string [ ] ) : Promise < string > {
557
+ const archivePath = await this . archive ( projectData , buildConfig , { additionalArgs : args } ) ;
552
558
const exportFileIpa = await this . exportDevelopmentArchive ( projectData , buildConfig , { archivePath, provision : buildConfig . provision || buildConfig . mobileProvisionIdentifier } ) ;
553
559
return exportFileIpa ;
554
560
}
@@ -1363,7 +1369,7 @@ We will now place an empty obsolete compatability white screen LauncScreen.xib f
1363
1369
}
1364
1370
1365
1371
private getExportOptionsMethod ( projectData : IProjectData ) : string {
1366
- const embeddedMobileProvisionPath = path . join ( this . getPlatformData ( projectData ) . deviceBuildOutputPath , `${ projectData . projectName } .app` , "embedded.mobileprovision" ) ;
1372
+ const embeddedMobileProvisionPath = path . join ( this . getPlatformData ( projectData ) . projectRoot , "build" , "archive" , ` ${ projectData . projectName } .xcarchive` , 'Products' , 'Applications' , `${ projectData . projectName } .app` , "embedded.mobileprovision" ) ;
1367
1373
const provision = mobileprovision . provision . readFromFile ( embeddedMobileProvisionPath ) ;
1368
1374
1369
1375
return {
0 commit comments