@@ -198,12 +198,17 @@ export class IOSProjectService extends projectServiceBaseLib.PlatformProjectServ
198198 * Archive the Xcode project to .xcarchive.
199199 * Returns the path to the .xcarchive.
200200 */
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 > {
202202 const projectRoot = this . getPlatformData ( projectData ) . projectRoot ;
203203 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" ,
205205 ( ! buildConfig || buildConfig . release ) ? "Release" : "Debug" ]
206206 . concat ( this . xcbuildProjectArgs ( projectRoot , projectData , "scheme" ) ) ;
207+
208+ if ( options && options . additionalArgs ) {
209+ args = args . concat ( options . additionalArgs ) ;
210+ }
211+
207212 await this . xcodebuild ( args , projectRoot , buildConfig && buildConfig . buildOutputStdio ) ;
208213 return archivePath ;
209214 }
@@ -320,12 +325,9 @@ export class IOSProjectService extends projectServiceBaseLib.PlatformProjectServ
320325 }
321326
322327 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 = [
326329 'SHARED_PRECOMPS_DIR=' + path . join ( projectRoot , 'build' , 'sharedpch' )
327330 ] ;
328- basicArgs = basicArgs . concat ( this . xcbuildProjectArgs ( projectRoot , projectData ) ) ;
329331
330332 // Starting from tns-ios 1.4 the xcconfig file is referenced in the project template
331333 const frameworkVersion = this . getFrameworkVersion ( this . getPlatformData ( projectData ) . frameworkPackageName , projectData . projectDir ) ;
@@ -353,7 +355,7 @@ export class IOSProjectService extends projectServiceBaseLib.PlatformProjectServ
353355 await attachAwaitDetach ( constants . BUILD_OUTPUT_EVENT_NAME ,
354356 this . $childProcess ,
355357 handler ,
356- this . buildForSimulator ( projectRoot , basicArgs , projectData , buildConfig . buildOutputStdio ) ) ;
358+ this . buildForSimulator ( projectRoot , basicArgs , projectData , buildConfig ) ) ;
357359 }
358360
359361 this . validateApplicationIdentifier ( projectData ) ;
@@ -413,8 +415,7 @@ export class IOSProjectService extends projectServiceBaseLib.PlatformProjectServ
413415 await this . setupSigningForDevice ( projectRoot , buildConfig , projectData ) ;
414416 }
415417
416- await this . xcodebuild ( args , projectRoot , buildConfig . buildOutputStdio ) ;
417- await this . createIpa ( projectRoot , projectData , buildConfig ) ;
418+ await this . createIpa ( projectRoot , projectData , buildConfig , args ) ;
418419 }
419420
420421 private async xcodebuild ( args : string [ ] , cwd : string , stdio : any = "inherit" ) : Promise < ISpawnResult > {
@@ -535,20 +536,25 @@ export class IOSProjectService extends projectServiceBaseLib.PlatformProjectServ
535536 }
536537 }
537538
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 ) ;
548554 }
549555
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 } ) ;
552558 const exportFileIpa = await this . exportDevelopmentArchive ( projectData , buildConfig , { archivePath, provision : buildConfig . provision || buildConfig . mobileProvisionIdentifier } ) ;
553559 return exportFileIpa ;
554560 }
@@ -1363,7 +1369,7 @@ We will now place an empty obsolete compatability white screen LauncScreen.xib f
13631369 }
13641370
13651371 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" ) ;
13671373 const provision = mobileprovision . provision . readFromFile ( embeddedMobileProvisionPath ) ;
13681374
13691375 return {
0 commit comments