È possibile usare una versione precedente di Xcode o Xamarin.iOS?
La documentazione di Xamarin presuppone l'uso della versione più recente di Xamarin.iOS e Xcode, consigliata. Tuttavia, alcuni clienti preferiscono usare Xamarin.iOS e/o Xcode meno recenti e vogliono informazioni dettagliate sulle conseguenze.
Le note sulla versione contengono l'avviso seguente:
Avviso
Uso di una versione Xcode precedente
L'uso di una versione Xcode precedente (di quella menzionata nei requisiti precedenti) è spesso possibile, ma alcune funzionalità potrebbero non essere disponibili. Alcune limitazioni potrebbero anche richiedere soluzioni alternative, ad esempio:
- Lo statico registrar richiede file di intestazioni Xcode per compilare applicazioni, causando
MT0091
errori oMT4109
se mancano le API. Nella maggior parte dei casi l'abilitazione del linker gestito sarà utile (rimuovendo l'API). - Le compilazioni bitcode (per tvOS e watchOS) possono non riuscire l'invio all'App Store a meno che non venga usata una toolchain Xcode 9.0+.
Ulteriori informazioni
Microsoft consiglia vivamente di usare la versione più recente di Xcode e Xamarin.iOS più recente durante lo sviluppo e l'invio di applicazioni. Apple richiede l'uso del codice Xcode più recente durante l'invio delle applicazioni.
Si noti che l'uso della versione più recente di Xcode non impedisce all'applicazione di usare le versioni precedenti di iOS. Le versioni di iOS supportate si basano sulla voce Info.plist e sulle API usate dall'applicazione.
È possibile installare più versioni di Xcode side-by-side, con nomi diversi, ad esempio Xcode101.app e Xcode102.app. Se si usano più versioni, assicurarsi di impostare il codice Xcode attivo in impostazioni Visual Studio per Mac e con lo strumento da xcode-select
riga di comando.
Tuttavia, rare circostanze possono richiedere l'uso di componenti meno recenti. Questa documentazione descrive le problematiche generali che possono verificarsi quando si usano versioni precedenti a quelle più recenti.
Ogni versione di Apple è tuttavia unica e potresti riscontrare altre insidie non documentate qui.
Queste sfide sono talvolta non semplici da risolvere, quindi, quando possibile, attenersi alla configurazione supportata della versione più recente di Xcode e della versione più recente di Xamarin.iOS.
Uso di un Xamarin.iOS precedente con un Xcode precedente
Non è possibile aggiornare Xamarin.iOS e Xcode, almeno per un certo periodo di tempo. Il limite è che, a un certo punto, Apple richiederà una versione minima di Xcode per inviare le applicazioni. A questo punto è necessario aggiornare tutti i componenti (macOS, Xcode e Xamarin.iOS) alle versioni più recenti (o alla nuova versione minima di Xcode richiesta da Apple e alla versione Xamarin.iOS corrispondente).
In genere è più facile aggiornare gradualmente e tenere il passo con le piccole modifiche. Per progetti di grandi dimensioni in cui gli aggiornamenti possono essere più difficili da tenere al passo, rimanere con il working set noto può essere un buon compromesso.
Uso di nuovi Xamarin.iOS con Xcode precedente
Xamarin.iOS in generale supporta versioni Xcode meno recenti ogni volta che è ragionevolmente possibile. Alcune potenziali sfide includono:
- La versione più recente di Xamarin.iOS può supportare alcune funzionalità e API non presenti nel codice Xcode selezionato.
- Lo statico registrar richiede file di intestazioni Xcode per compilare applicazioni, causando
MT0091
errori oMT4109
se mancano le API.- Nella maggior parte dei casi l'abilitazione del linker gestito consentirà di rimuovere le associazioni gestite per la nuova API, se non usate.
- Le compilazioni bitcode (per tvOS e watchOS) possono non riuscire l'invio all'App Store a meno che non venga usata una toolchain Xcode 9.0+.
Uso di un nuovo Xcode con Xamarin.iOS meno recente
Questo caso d'uso è notevolmente più difficile, perché Xamarin.iOS non può prevedere i requisiti mutevoli di nuovo Xcode. Gli aggiornamenti di macOS possono anche introdurre problemi e senza patch di compatibilità molte parti di Xamarin.iOS potrebbero essere interessate.
Esistono diverse aree potenziali in cui le cose possono andare storte, tra cui:
- Incompatibilità con
mlaunch
:- Il supporto del simulatore potrebbe non funzionare correttamente (o affatto)
- Il supporto dei dispositivi potrebbe non funzionare correttamente (o affatto)
- Supporto sconosciuto per
mtouch
- Nessun supporto per i nuovi framework
- Nessun supporto per i nuovi diritti
- Nessun supporto per gli strumenti nuovi o aggiornati
- Ciò può influire anche sulla firma del codice
Nuove regole di invio all'AppStore
Apple si riserva il diritto di aggiornare le regole per gli invii di AppStore in qualsiasi momento. Queste modifiche alle regole vengono annunciate solo in anticipo. Alcune di queste modifiche richiedono modifiche agli strumenti per il supporto, che richiederebbero un componente Xamarin.iOS aggiornato.
Oltre alle modifiche alle regole, Apple spesso aggiunge altre convalide alle app inviate o restringe quelle esistenti. Alcuni di questi richiedono modifiche negli strumenti (ad esempio, un nuovo simbolo dell'elenco di blocchi). Molti di questi vengono prima rilevati dai clienti che inviano, perché non è presente alcun annuncio (o elenco) delle regole.
Riepilogo
Quando possibile, gioca al sicuro seguendo le indicazioni di Apple e sviluppando e inviando con la versione più recente di Xcode rilasciata nell'App Store.
A sua volta, usare la versione più recente di Xamarin.iOS rilasciata. In questo modo verranno monitorate le correzioni più recenti che possono influire sulle applicazioni inviate e rispettare le modifiche alle regole più recenti.
Se ciò non è fattibile, prendere in considerazione l'uso di una versione Xcode e Xamarin.iOS precedente corrispondente. Questo può funzionare per un periodo di tempo, ma a un certo punto Apple insisterà sugli strumenti più recenti in modo da pianificare di conseguenza.