Qual è il significato di SDK di base, destinazione di distribuzione iOS, destinazione e progetto in xcode


162

Supponiamo di aver impostato l'SDK di base su 7, cosa significa? Potrebbe significare che l'app funzionerebbe su iOS 7. Ma è a questo che serve il target di distribuzione iOS.

Inoltre, perché devo specificare quei 3 valori sia nel progetto che nel target. Non ha senso. Perché specificare la stessa cosa due volte?


C'è una buona risposta concisa a questo su un'altra domanda più recente: stackoverflow.com/a/41278576/498949
Chris Rae,

Risposte:


80

L'SDK di base è ciò su cui si sviluppa l'app (ovvero include file e framework di librerie e librerie). Come dici tu, non influisce sulla destinazione di distribuzione, tranne quella sdk di base> = destinazione di distribuzione.

Specificate le impostazioni di compilazione su 2 livelli poiché ogni progetto può avere più target e potreste non voler le stesse impostazioni per tutti i target. Le impostazioni a livello di progetto hanno la precedenza su quelle predefinite e le impostazioni a livello di destinazione hanno la precedenza su quelle a livello di progetto.

Ad esempio, ho progetti con obiettivi OSX e iOS e alcuni sono ARC e alcuni sono MRR. Dovrei avere progetti diversi per ciascuno se non fossi in grado di specificare le impostazioni di costruzione con il livello di granularità che Xcode consente.


197

In iOS 7 TechTalk , sessione Architecting Modern Apps, Part 2, lo spiegano chiaramente

inserisci qui la descrizione dell'immagine

Buona lettura Ciao! Sono disponibile!

Pertanto, un'app moderna potrebbe utilizzare iOS 9 come Target SDK e iOS 7 come destinazione di distribuzione. Ciò significa che puoi eseguire su iOS 7, iOS 8 e iOS 9 e che hai a disposizione tutte le chiamate di iOS 9 quando effettivamente esegui su iOS 9.

Puoi leggere di più nel mio post SDK e Target di distribuzione


20
Un buon riferimento .. e questa parte è sepolta intorno alle 25:17 in questo video di 50 minuti.
Daniel,

2
Bello! Ma cosa succede se si imposta l'SDK di base = 7.0 e si tenta di installare in iOS 8.0? Dobbiamo scaricare l'ultimo XCode per supportare sempre l'ultimo SDK di base?
GoRoS,

2
@chichilatte no, non è necessario. L'app supporta ancora iOS 12, iOS 13, ... ma non avrà nuove funzionalità di iOS 12, iOS 13 .... Per utilizzare la nuova funzionalità di iOS 12, devi compilare iOS 12 SDK e utilizzare API da iOS 12.
onmyway133,

3
Grazie, ha senso. Penso che il commento di @ Kunal-Balani sopra sia sbagliato.
Chichilatte,

2
@ Kunal-Balani, gli altri commentatori hanno ragione. Non è necessario ricompilare la tua app se arriva una versione più recente del sistema operativo rispetto a quella su cui hai creato a meno che non abbiano rimosso il supporto per ciò che la tua app attualmente utilizza . Un sistema operativo più recente non significa all'improvviso che la tua app costruita con il vecchio SDK smetta di funzionare. Se così fosse, nessuno si aggiornerebbe mai perché significherebbe che tutte le app che avevano attualmente smetterebbero di funzionare fino a quando non verranno rilasciate versioni più recenti, il che semplicemente non è vero.
Mark A. Donohoe,

67

L'SDK di base è l'SDK a cui ti colleghi. Il target di distribuzione è la versione iOS minima richiesta per l'esecuzione dell'applicazione. Puoi creare un'applicazione con SDK 7 che funziona con iOS 6. Ma poi devi fare attenzione a non usare alcuna funzione o metodo che non è disponibile su iOS 6. Se lo fai, la tua applicazione andrà in crash su iOS 6 non appena questa funzione è usata.

Consulta la documentazione di Apple per maggiori dettagli: https://developer.apple.com/library/content/documentation/DeveloperTools/Conceptual/cross_development/Configuring/configuring.html

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.