Sto sviluppando 2 app diverse che condividono il 95% dello stesso codice e visualizzazioni. Qual è il modo migliore per farlo usando Xcode?Come creare più app dallo stesso codice condiviso in Xcode?
17
A
risposta
35
Utilizzare obiettivi. Questo è esattamente ciò per cui sono.
Learn more about the concept of targets here.
In genere, la maggior parte dei progetti ha una destinazione singola, che corrisponde a un prodotto/applicazione. Se si definiscono bersagli multipli, è possibile:
- includono alcuni dei tuoi file di codice sorgente (o forse tutti) in entrambi gli obiettivi, alcuni in un obiettivo e un po 'nell'altra
- si può giocare con impostazioni di generazione di compilare i due obiettivi utilizzando impostazioni diverse.
Ad esempio si può definire precompilatore macro per un obiettivo e altre macro per l'altro (diciamo OTHER_C_FLAGS = -DPREMIUM
in target "PremiumVersion" e OTHER_C_FLAGS = -DLITE
per definire la macro LITE
nel target "LiteVersion") e poi includi codice simile nella tua fonte:
-(IBAction)commonCodeToBothTargetsHere
{
...
}
-(void)doStuffOnlyAvailableForPremiumVersion
{
#if PREMIUM
// This code will only be compiled if the PREMIUM macro is defined
// namely only when you compile the "PremiumVersion" target
.... // do real stuff
#else
// This code will only be compiled if the PREMIUM macro is NOT defined
// namely when you compile the "LiteVersion" target
[[[[UIAlertView alloc] initWithTitle:@"Only for premium"
message:@"Sorry, this feature is reserved for premium users. Go buy the premium version on the AppStore!"
delegate:self
cancelButtonTitle:@"Doh!"
otherButtonTitles:@"Go buy it!",nil]
autorelease] show];
#endif
}
-(void)otherCommonCodeToBothTargetsHere
{
...
}
Problemi correlati
- 1. Kohana PHP - Più app con modello condiviso
- 2. Stesso codice base per iPhone/Desktop app
- 3. Più thread che leggono dallo stesso file
- 4. Più thread che leggono dallo stesso file
- 5. Più app da una base di codice: più progetti o obiettivi in Xcode?
- 6. Refactoring codice condiviso su più soluzioni
- 7. Esecuzione di più siti dallo stesso codebase rails?
- 8. one XCode Project più app per iPhone
- 9. Come creare una stringa di lunghezza composta dallo stesso carattere ripetuta più volte?
- 10. Come creare un progetto di codice condiviso (.shproj)
- 11. Perché apache non elabora contemporaneamente più richieste dallo stesso browser
- 12. Come creare un servizio di accesso condiviso su più domini?
- 13. XCode 4: più destinazioni, più risorse Cartelle con immagini con lo stesso nome da utilizzare con uno Xib condiviso?
- 14. Multibranding dello stesso codice sorgente senza utilizzare xcode
- 15. È possibile creare dallo stesso codice sorgente un eseguibile funzionalmente diverso?
- 16. Mercurial: Come gestire il codice comune/condiviso
- 17. Più app con base di codice condivisa
- 18. Layout codice condiviso
- 19. Posso consentire a più programmi di leggere dallo stesso file allo stesso tempo?
- 20. Come creare più app Android da una base di codici
- 21. CMake creare un oggetto condiviso
- 22. factorygirl: creare lo stesso oggetto più volte
- 23. Come trovare più app con lo stesso identificatore di bundle?
- 24. Come configurare Apache2 per consentire più connessioni simultanee dallo stesso indirizzo IP?
- 25. App per Windows Phone con lo stesso GUID - Creazione di più app da una singola app
- 26. Puntatore condiviso boost: accesso in lettura simultaneo su più thread
- 27. Xcode 4.3.2 sarà sufficiente per creare app per iOS 6?
- 28. Funzione modulo stub chiamata dallo stesso modulo
- 29. Distribuzione di più istanze di un'applicazione Rails - stesso codice, più
- 30. Preferenze XCode Cocoa App?
Se vi siete abituati, pensate agli obiettivi come a diversi makefile. Hanno lo stesso ruolo. – Cyrille
Questo è enorme, grazie. Per fare in modo che funzioni correttamente, dovevo fare una copia target, quindi aggiornare le impostazioni di destinazione per utilizzare un diverso Info.plist per il mio nome bundle ecc ... – Slee
Nota che se aggiungi ulteriori file al tuo progetto, fai attenzione per aggiungere il file a entrambi i target e non solo a quello attivo: quando aggiungi il file, nella finestra di dialogo che appare per chiedere se vuoi copiare i file o meno, hai un elenco di target e caselle di controllo di fronte a ciascuno di essi . (Lo stato delle caselle di controllo viene salvato in modo tale che sarà probabilmente necessario verificarlo solo una volta) – AliSoftware