2009-08-31 14 views
25

So che alcune parti di questa domanda sono state poste in diverse varianti, ma voglio essere certo di aver capito bene.Obiettivo Base contro Obiettivo di distribuzione attivo

Ecco le mie ipotesi e intese che voglio sapere se sono corrette prima dell'invio.

La mia applicazione assume caratteristiche supportate da tutti i sistemi operativi, e quindi dovrei:

  1. Impostare l'SDK attivo essere l'ultima (attualmente SDK 3.0).
  2. Impostare il target di distribuzione su quello inferiore Voglio essere supportato - iPhone 2.0 e versioni successive?
  3. Che cos'è esattamente l'SDK di base? dovrei ignorarlo se scelgo Active SDK per essere diverso e dove vedo l'SDK attivo nelle impostazioni di Progetti?

Un'ultima domanda: Apple consente di scegliere iPhone OS 2.0 come obiettivo di distribuzione?

Grazie in anticipo,

BTW - uno della mia ragione principale per questa domanda è perché quando si compila con gli SDK precedenti Apple sembra avere un problema rilasciando la memoria per UIImageView serie di animazione in cui questa animazione è stato salvato per un tempo più utilizzo. Questo è un problema noto risolto con SDK 3.0 (semplicemente impostando l'array di animazioni UIImageView su zero)

risposta

28

La differenza tra l'SDK di base e Active è che il primo è l'SDK predefinito impostato per il progetto e quest'ultimo è l'SDK che stai attualmente costruendo contro. Quindi è possibile che il tuo SDK attivo sia l'SDK di base, a quel punto XCode utilizzerà l'SDK specificato per il progetto.

Al fine di costruire la vostra applicazione per la più ampia serie di dispositivi possibili, lei ha ragione:

  • Impostare l'SDK Base per la lastest SDK possibile (3.0, 3.0.1)
  • Impostare la distribuzione Obiettivo per il primo SDK possibile (2,0)

Apple non permette di specificare iPhone 2.0 come destinazione di distribuzione, ma tenete a mente qualsiasi API o di un quadro rilasciato dopo iPhone 2.0 non avrete a vostra disposizione per l'uso da predefinito. Ci sono techniques to use features from later SDKs, tuttavia sono non banali.

+6

non voglio essere un pignolo, ma OP ha chiesto di "Base SDK" e "distribuzione di destinazione ". Stai utilizzando "SDK attivo" per indicare "Obiettivo di distribuzione"? Apple utilizza i termini "SDK di base" e "Obiettivo di distribuzione", che intendo significa: MAX SDK = "Base SDK" e MIN SDK = "Obiettivo di distribuzione". – jww

8

È necessario impostare l'impostazione di build dell'SDK di base sull'ultimo SDK che contiene tutte le funzionalità che si intende utilizzare (di solito, l'ultimo SDK disponibile) e impostare l'impostazione di build "Destinazione di distribuzione iPhone" nella prima versione del sistema operativo su cui si desidera eseguire.

È quindi necessario assicurarsi di verificare, in fase di runtime, eventuali funzioni che potrebbero non essere presenti sui sistemi operativi precedenti.

+0

Risposta chiara e semplice –

3

"Base SDK" è l'SDK massimo supportato dall'applicazione. C'è un limite difficile qui: non è possibile selezionare un futuro SDK non rilasciato.

"Obiettivo di distribuzione" è l'SDK minimo che si è disposti a supportare. È indietro nel tempo che sei disposto ad andare.

Xcode sembra creare una dipendenza spuria su "Obiettivo di distribuzione". Ad esempio, non riesco a sviluppare sul mio iPod iOS 5.1.1 con Xcode 4.5.2 (Xcode 4.5.2 è accoppiato con iOS 6.0), anche se su questa installazione sono installate le API 4.3, 5.0 e 5.1 e i simulatori. Devo usare il simulatore o il jack nel mio iPhone iOS 6.0.

Anche i giochi in esecuzione su Apple sembrano causare problemi con le app. La mia copia acquistata di Elements non verrà sincronizzata tramite iTunes sull'iPod perché Elements richiede una versione più recente di iOS da eseguire (si sincronizza e funziona correttamente sul mio iPhone iOS 6.0).

Ho due iPad e uno è 4.3. Rabbrividisco a pensare a quale pasticcio causerà.

1

In generale;

Imposta l'SDK BASE sull'ultimo SDK che desideri supportare e testare.

Imposta il target di distribuzione sulla versione più bassa di iOS che desideri supportare e testare.

Se si utilizzano le funzioni di Base SDK non disponibili nell'SDK di destinazione di distribuzione, l'applicazione si arresta in fase di runtime sui dispositivi meno recenti, pertanto il test è di vitale importanza.

Un processo alternativo/complementare consisterebbe nell'utilizzare Deploymate http://www.deploymateapp.com/ che esegue l'analisi del codice statico per identificare i problemi.

Se siete del mondo Android le analogie sono tali;

TargetSDK -> Base SDK

MinSDK -> distribuzione di destinazione

Lint -> Deploymate