2015-04-08 10 views
20

Ho un'istanza di jenkins che esegue una build di rilascio usando xcodebuild. Poi ho uno script (su Jenkins) per creare il file .ipa usando xcrun. questo ha funzionato bene per noi fino ad ora. Ora abbiamo un'app di watchkit e il file .ipa creato da questo processo non è uguale a quello che viene creato se si crea un archivio ed esportato da Xcode.Come generare il file .ipa dalla riga di comando con l'app di watchkit

L'.ipa esportato da Xcode ha una cartella "Payload", una cartella "Simboli" (probabilmente facoltativa) e una cartella "WatchKitSupport". L'ipa generato da xcrun non ha la cartella 'Simboli' o 'WatchKitSupport'. Vedi di più sulla struttura qui: https://stackoverflow.com/a/29400301/327386

Ho visto questo post su SO: https://stackoverflow.com/a/19856005/327386 che ha comandi per archiviare ed esportare il .ipa build (simile al processo Xcode) ma anche che non ha creato le nuove cartelle in questione .

Qualcuno sa se esiste un modo per utilizzare gli strumenti della riga di comando per creare un file .ipa equivalente a quello creato da Xcode? Non ho trovato alcuna documentazione ufficiale su questo

+1

Ho archiviato un bug con Apple per il fatto che gli strumenti da riga di comando non generano lo stesso file ipa eseguito da Xcode e hanno contrassegnato tale errore come duplicato.Quello originale è ancora aperto – RPM

+2

Puoi collegare al bug originale per favore? –

+0

Sono d'accordo con te, sto vedendo gli stessi risultati qui. Ho anche provato 'xcodebuild -exportArchive -exportFormat ipa -archivePath App.xcarchive -exportPath App -exportWithOriginalSigningIdentity' – danieljimenez

risposta

1

Anch'io ho affrontato lo stesso problema. Lo strumento da riga di comando exportArchive manca le cartelle di supporto di Watchkit richieste durante l'esportazione dell'archivio in ipa. Ho provato a comprenderlo usando lo script di shell sottostante.

https://gist.github.com/phatblat/6eb8895e2202f796960e

È possibile chiamare lo shellscript sopra dal Jenkins buildscript come qui di seguito.

<exec executable="/bin/bash" failonerror="true"> 
      <arg value="${root.dir}/buildscripts/package-ida.sh" /> 
      <arg value="${build.dir}/APP_NAME.xcarchive" /> 
      <arg value="${build.dir}/APP_NAME.ipa" /> 
     </exec> 

Ora sarete in grado di vedere la cartella di supporto WatchKit nel payload ipa e la vostra convalida appstore app riceverà anche riusciti utilizzando il Jenkins generato costruire.

6

problema esatto

xcodebuild -exportArchive non può fare valida IPA con la vigilanza di estensione, si tratta di un bug di Apple (http://openradar.appspot.com/20898925).

ufficiale soluzione (Xcode 7)

Apple ha risolto questo problema in Xcode 7 con il -exportOptionsPlist la bandiera del comando xcodebuild -exportArchive. Potete trovare maggiori dettagli su di esso in this article. (Xcode 6) soluzioni

Non-ufficiali

Ci sono soluzioni alternative per il problema. Se è urgente, puoi giocare con loro, ma non sono riuscito a trovare una soluzione alternativa che funzionasse per tutti (sulla base delle discussioni del forum).

  1. Aggiunta di cartelle WatchKitSupport e simboli. Maggiori dettagli here e here. Non stava funzionando per me.
  2. Ripristinare l'intera applicazione. Maggiori dettagli here. È hacky, ma funziona meglio della soluzione menzionata in precedenza.
+0

Interessante - Verificherò questa opzione in Xcode 7 – RPM

Problemi correlati