Aggiungerò qui i miei 2 centesimi (in un modo meno spaventoso :-). Ho riscontrato un bel numero di librerie pesanti di fornitori che (per qualche motivo) non funzionano normalmente aggiungendole alla Frameworks
directory come documentato da Apple. L'unico modo in cui siamo stati in grado di farli funzionare è tirando il .framekwork
diritto nella directory del progetto e collegando manualmente Embedded Frameworks
e Link Binary with Libraries
in Impostazioni build. Questo sembra aver funzionato senza problemi, tuttavia, poiché con qualsiasi libreria grassa vengono fornite con le architetture del simulatore estranee i386
e x86_64
insieme alle arm
architetture.
Un modo rapido per controllare le architetture sulla libreria fat è
$ cd 'Project_dir/Project'
$ lipo -info 'YourLibrary.framework/YourLibExec`
Che dovrebbe produrre un risultato simile a questo
Architectures in the fat file: YourLibrary.framework/YourLibExec are: i386 x86_64 armv7 arm64
Questo conferma che dovrai "tagliare il grasso" (cioè i386
& x86_64
) dal tuo framework prima del caricamento di iTunesConnect Archival, che non consente queste architetture (poiché non sono supportate per iOS).
Ora, tutte le risposte (o almeno alcune delle risposte) qui forniscono questi meravigliosi script di esecuzione che sono sicuro funzionano molto bene, ma solo se il tuo Framework risiede nella Frameworks
directory. Ora, a meno che tu non sia un drogato di script di shell, quegli script senza modifiche, non funzioneranno per lo scenario che ho spiegato sopra. Tuttavia, esiste un modo molto semplice per sbarazzarsi delle architetture i386
& x86_64
dal framework.
Apri il terminale nella directory del tuo progetto.
Cambia directory direttamente nel file .framekwork
, like
cd YourProjectDir/YourProject/YourLibrary.framework
Esegui la serie di comandi come mostrato di seguito-
$ mv YourLibrary YourLibrary_all_archs
$ lipo -remove x86_64 YourLibrary_all_archs -o YourLibrary_some_archs
$ lipo -remove i386 YourLibrary_some_archs -o YourLibrary
$ rm YourLibrary_all_archs YourLibrary_some_archs
Alcune cose da notare qui: lipo -remove
devono essere fatte una volta per ogni architettura da rimuovere. lipo
non modifica il file di input, produce solo un file quindi devi eseguire lipo -remove
una volta per x86_64
e i386
. I comandi sopra lo fanno semplicemente rinominando l'eseguibile e poi alla fine rimuovendo gli archi desiderati, quindi ripulendo i file rimasti. E questo è tutto, ora dovresti vedere un segno di spunta verde nel caricamento dell'archivio caricatore applicazioni su iTunesConnect.
Cose da tenere a mente : i passaggi precedenti devono essere eseguiti solo durante la build di produzione, poiché .framework
verranno rimosse le architetture del simulatore, le build sui simulatori smetteranno di funzionare (cosa prevista). Nell'ambiente di sviluppo, non dovrebbe essere necessario rimuovere le architetture dal .framework
file poiché si desidera essere in grado di testare sia sul simulatore che su un dispositivo fisico. Se la tua libreria fat risiede nella Frameworks
cartella del progetto, guarda la risposta accettata.