2013-03-15 11 views
14

Quando distribuiamo nuove versioni dell'app iOS nell'App Store tramite XCode, viene generato un archivio.Posso eseguire un vecchio archivio di app nel simulatore?

C'è un modo per prendere un vecchio archivio ed eseguirlo nel simulatore? Mi piacerebbe farlo per essere in grado di testare facilmente la compatibilità all'indietro del codice lato server con tutte le versioni precedenti dell'app (o almeno le due maggiormente utilizzate in quel momento).

So che potrei impegnarmi in un repository GIT e prelevare una versione specifica, ma questo ha due problemi: a. è più complesso della semplice gestione di un archivio, b. è soggetto a errori e interrompe lo sviluppo della nuova versione sulla macchina, e c. potrebbe esserci qualche pregiudizio relativo alle modifiche del compilatore o qualsiasi altra modifica di XCode tra il rendering della versione difficile da compilare.

Non ho trovato alcun aiuto su StackOverflow, né alcun segno di questa possibilità nel repository Archive in XCode. Devo presentare una richiesta di funzionalità @ Apple?

+0

Non è sicuro al 100% che sia possibile farlo nel simulatore, ma perché non testare tali archivi semplicemente nel dispositivo. –

+0

@MrBonjour: poiché il file binario archiviato viene creato utilizzando il certificato di distribuzione, che non verrà eseguito sul dispositivo? – zoul

+0

@MrBonjour Funzionerebbe anche, come è fatto? – Resh32

risposta

9

No, non puoi prendere un archivio generato per l'App Store ed eseguirlo nel simulatore - anche se potresti gestire i problemi di firma, ecc., L'archivio generato per l'App Store contiene il codice compilato per ARM processori, che gli i-dispositivi hanno. Il codice creato per il simulatore è compilato per processori x86, in modo che possa essere eseguito su Mac.

+1

+1. Puramente parlando tecnicamente, potresti probabilmente creare un pacchetto contenente sia il codice x86 sia il codice ARM, ma all'App Store non piacerà e c'è ancora la firma. – zoul

+0

+1 Potrebbe funzionare se faccio due archivi quando rilascerò ad Apple? Il secondo archivio corrisponderebbe all'altro schema, ma solo la firma sarebbe diversa - quindi sarei ancora in grado di eseguire su un iPod touch (OK, posso dimenticare il simulatore) usando la soluzione proposta da @Lefteris. – Resh32

5

Un modo abbastanza semplice per farlo è tramite Test Flight. Testiamo regolarmente le nuove versioni tramite Test Flight, i vecchi rimangono lì ed è possibile tornare da loro in qualsiasi momento. È una build diversa rispetto a quella che finalmente si invia all'App Store, ma è qualcosa che sarà sempre vero, poiché la build App Store viene firmata utilizzando il certificato di distribuzione e AFAIK non verrà eseguito ovunque, a meno che non sia installato attraverso lo store.

+0

+1 Utilizziamo già testflight in questo modo, ma c'è ancora la differenza tra le app di test e di produzione (e per esempio testflight è disabilitato per la build di produzione) - ma io penso che sia ancora l'approccio migliore. – Resh32

2

È possibile creare la versione OTA (over the air) della propria app (quindi è possibile scaricare tali file binari da un server), o semplicemente creare un file ipa e installarlo da iTunes.

Per fare ciò, è necessario creare un profilo di provisioning ad hoc. Controlla la documentazione di Apple, dato che è un po 'complicato spiegare

1

Se il tuo archivio è stato creato per un dispositivo (AdHoc o Release) puoi creare un file ipa e installarlo su un dispositivo (spiegazione sotto su come fare). Se è stato creato per il simulatore (ovvero l'architettura della cpu i386), non è possibile creare l'ipa per il dispositivo.

Per quanto ne so, è possibile effettuare un'ipa fuori di un 4 archivio con riga di comando Xcode:

/usr/bin/xcrun -sdk iphoneos PackageApplication 
    "/absolute/path/to/MyApp.xcarchive/Products/Applications/MyApp.app" 
    -o "/absolute/path/to/MyApp.ipa" 

Dopo aver ottenuto l'IPA, è possibile installarlo su dispositivi fisici, se fosse stato creato con la firma corretta, altrimenti you can re-sign it

Problemi correlati