Condividi tramite


Risoluzione dei problemi di compilazione iOS

Importante

Visual Studio App Center è pianificato per il ritiro il 31 marzo 2025. Anche se è possibile continuare a usare Visual Studio App Center fino a quando non viene completamente ritirato, esistono diverse alternative consigliate a cui è possibile prendere in considerazione la migrazione.

Altre informazioni sulle sequenze temporali di supporto e sulle alternative.

Non è stato trovato uno schema Xcode

La compilazione di un xcworkspace oggetto o richiede xcproject uno schema Xcode condiviso. Gli schemi Xcode vengono salvati in locale in modo che Xcode possa accedervi. Per impostazione predefinita, gli schemi non vengono condivisi con altri utenti o inclusi nel controllo del codice sorgente.

Per condividere uno schema in Xcode, seguire questa procedura:

  1. Selezionare Schema prodotto >> Gestisci schemi.
  2. Impostare lo schema per xcproject/xcworkspace come condiviso.
  3. Il contenitore dello schema deve essere impostato sul progetto Xcode o sull'area di lavoro da compilare.
  4. Aggiungere il file al controllo del codice sorgente ed eseguirne il .xcscheme push nel repository remoto in modo che App Center possa accedervi.

Contrassegnare lo schema come condiviso

Avviso

Assicurarsi che la xcshareddata/xcschemes/ cartella non sia presente nel .gitignore file. .xcscheme Qui i file vengono archiviati da Xcode. App Center si basa su questi file per compilare correttamente il progetto. L'esportazione di in .xcscheme una cartella diversa non funzionerà.

Le compilazioni iOS hanno esito negativo con "clang: errore: comando del linker non riuscito con codice di uscita 1"

L'errore potrebbe essere causato dalla compilazione di App Center con xcodeproj anziché con l'area di lavoro. Quando si aggiungono CocoaPods al progetto, passare all'uso dell'area di lavoro durante la compilazione in App Center.

Indicatore: cercare questa riga nel log di compilazione:

ld: library not found for -lPods-GarageController
clang: error: linker command failed with exit code 1 (use -v to see invocation)

** ARCHIVE FAILED **

Per correggere l'errore, aprire la configurazione di compilazione del progetto e fare clic su Salva. App Center sceglierà automaticamente l'area di lavoro correttamente per le build future.

Spiegazione dei problemi di firma di iOS

Nota

Le identità di firma che usano caratteri non ascii non sono supportate in Compilazione.

La gestione dei profili e dei certificati di provisioning può essere un processo complesso. I suggerimenti seguenti consentono di firmare correttamente le app iOS:

  1. Salvare la configurazione della compilazione in App Center dopo aver eseguito il push delle modifiche di firma nel progetto. In App Center, la configurazione di compilazione di qualsiasi ramo archivia due valori del progetto Xcode: e CODE_SIGN_STYLEDEVELOPMENT_TEAM (impostato nel project.pbxproj file nella .xcodeproj cartella). Ogni volta che si passa dalla firma manuale alla firma automatica o al team di sviluppo, assicurarsi di salvare la configurazione della compilazione in App Center dopo aver eseguito il push delle modifiche. Se non si salva dopo il push, la compilazione potrebbe non riuscire con un errore di firma.

  2. Trascinare e rilasciare il profilo di provisioning corretto quando si usa la firma automatica. In Xcode, nella scheda Generale della destinazione in Firma fare clic sull'icona delle informazioni accanto a Profilo gestito Xcode. Verrà quindi visualizzato un popover con informazioni sul profilo. Fare clic e trascinare l'icona PROV in alto a sinistra nella posizione desiderata (come illustrato di seguito).

  3. Prendere nota delle opzioni attualmente supportate da App Center quando si usa la firma manuale e automatica. App Center supporta completamente la firma manuale delle app iOS, in modo da poter usare qualsiasi tipo di profilo o certificato. Verificare che il profilo di provisioning e il certificato caricati in App Center corrispondano a quanto specificato nel progetto. Se è stata abilitata l'opzione Gestisci automaticamente l'accesso in Xcode, App Center supporta la firma delle app con certificati e profili per sviluppatori (non con distribuzione). Quando si carica in App Center, è necessario usare il profilo di provisioning generato automaticamente da Xcode.

Ancora in corso problemi?

Per risolvere i problemi e ottenere la registrazione e l'esecuzione della compilazione, è consigliabile seguire questa procedura:

  1. Configurare l'accesso manuale nel progetto Xcode e assicurarsi che funzioni in locale.
  2. Dopo aver verificato, eseguire il commit e il push delle modifiche nel repository.
  3. Preparare il profilo di provisioning e il certificato selezionati nella destinazione Xcode e caricarli nella configurazione di compilazione di App Center.
  4. Soprattutto: assicurarsi di aver eseguito il push dello stato più recente del progetto prima di salvare il nuovo certificato e il nuovo profilo nella configurazione della compilazione.

Dov'è il mio file con estensione ipa?

Xcodebuild, a differenza di xcrun, non consente la generazione di un .ipa file se la compilazione non è firmata. Le compilazioni senza segno producono invece un oggetto .xcarchive . Se si vuole generare un .ipa file con gli artefatti di una compilazione non firmata, è possibile usare il .xcarchive file a tale scopo.

Esportare un file xcarchive usando xcode Esportazione

L'app iOS che usa Xcode ha esito negativo con errore di versione bitcode non valida

Se le compilazioni hanno esito negativo con error: Invalid bitcode version (Producer: '802.0.38.0_0' Reader: '800.0.42.1_0'), si usa una libreria o un pod compilato da una versione più recente di Xcode rispetto al progetto. È possibile aggiornare il progetto e la configurazione della compilazione in App Center per usare una versione più recente di Xcode o passare a una versione alternativa della libreria problematica, compilata con una versione corrispondente di Xcode.

L'app iOS non riesce a eseguire un test

Un motivo comune per cui i test hanno esito negativo è il caso in cui i comandi del linker colpiscono un errore simile al seguente:

 ld: directory not found for option iPhoneSimulator10.3.sdk/Developer/Library/Frameworks 
  ❌ ld: embedded dylibs/frameworks are only supported on iOS 8.0 and later (@rpath/XCTest.framework/XCTest) for architecture x86_64 
  ❌ clang: error: linker command failed with exit code 1 (use -v to see invocation)  

La causa probabile di questo errore è il tipo di collegamento di Apple Mach-O Linker non è impostato sulla libreria statica. Per compilare e testare correttamente l'app, verificare che il tipo di collegamento di Apple Mach-O Linker nella destinazione di test sia impostato su libreria statica.

Apple Mach-O Linker

Le build iOS che usano CocoaPods in Xcode 9 continuano a non riuscire, cosa devo fare?

Potrebbe essere dovuto al fatto che la configurazione di firma nel progetto Pods è diversa da quella del progetto Main. I pod vengono archiviati nel repository? In tal caso, il progetto Pods deve usare lo stesso metodo di firma del progetto Main.

Se i pod non sono stati controllati, potrebbero verificarsi problemi diversi. Esistono alcune soluzioni alternative che è possibile usare in questo problema di GitHub con gli script di pre-compilazione.

Poiché il progetto è stato aggiornato a Xcode 10 beta, l'app non riesce a compilare con il ciclo di errore nelle dipendenze tra destinazioni

Il nuovo sistema di compilazione di Xcode 10 rileva i cicli di dipendenza nella compilazione e non riesce la compilazione, se presente.

Per altre informazioni su come correggere la compilazione, vedere la documentazione di Apple sulla risoluzione di tipi comuni di cicli di dipendenza.