As a developer, there’s only one thing you need to worry about when creating a new project in Xcode: writing the code you need to build an amazing app. Every new Xcode project comes with all the scaffolding you need to run the app on a device.
If you only need to build an app to your device, and occasionally push to the App Store, this might be good enough. With more complicated projects and apps, you’ll need to go beyond what Xcode offers as the default and learn more about build customization in Xcode.
By the end of this chapter, you’ll know how to:
Build more than one app in a single project.
Work with build settings.
Change exactly what happens when you click Build.
Understand the difference between building your device and archiving for the App Store.
Right now, Emitron has the default build setup of any iOS project. You can do a local build to your device by building and running the app as usual, or you can prepare a build destined for the App Store by using the Product ▸ Archive menu option. In this chapter, you’ll configure another way to build the app: as an Alpha build specifically destined for internal testing.
Different build types
Any release of an iOS app goes through different stages before it’s published to the App Store. How you or your team chooses to handle releases may differ, but many large-scale apps look something like this:
Dev build: A local build installed on the developer’s device or simulator, with logging and debug features enabled to catch pesky bugs before they become a problem.
Alpha/QA build: Alpha builds are available internally to the members of the team or company so they can test new features and revisions right away.
Beta build: Beta builds are usually publicly available versions of your app which gives you a chance to test new features and make sure there aren’t any large bugs lying around.
Release build: The version of your app that users can download on the App Store.
The different build types can go by many names — these are just some examples. For instance, you might refer to an alpha build as an internal or QA build. The terminology is less important than the ability to set it up, which you’ll learn in this chapter.
If your app utilizes servers, dev and alpha builds should ideally point to a different backend server to prevent interference with production data. If you were working on a banking app, you wouldn’t want to see real money change hands during testing! Using a different server when debugging or doing QA testing can prevent this issue.
Emitron’s release pipeline
Every new version of Emitron goes through four stages based on the different build types.
Vul: Pqek rwo tiir om yudceqx at pef coavadak, wsof’yl cetbid xed niofsn ke xyiic emg jahakay.
Odzwu: Oszi zja yon douk ddomx al vxuek xexn, dkut laqq rteura e yub udrpu laulj. Wge faix lohjmexitig yja uqhli olqoqcelbf xwgeixb iuclun uy-jiw, oqgutfwule ax DitjCgulrw rilzalvusb.
Seli: Nguy msi epvbu siafb oz wxozla alg ruc-tmae, wsi gim jaon zecas a buj ceta kianl. Clid wuocb xe loglxilejaj abwokxakks ajuuc, is ku odxuywac karu zudninq.
Bumiedi: Pto viatb ok wesimcm wiisn xok ymu Omn Ndili!
Multiple builds at once
Multiple build types should be installable on the same device, at the same time. A developer should be able to have their latest dev build on their iPhone, the last QA build that went to the team and the latest release build from the App Store.
Bundle identifiers
Technically, you can’t have more than one version of the same app on one device. iOS uses the bundle identifier to identify apps; which means no two apps can have the same bundle identifier. By using different bundle IDs for each build type, iOS thinks of them as different apps entirely, allowing you to have more than one build on a device. This means modifying the bundle ID is your golden ticket to having multiple types of builds running on the same device. Neat!
Ko, met yi coo lrin eom gbi mikbku IN yivoz ic cpoxn naabq weo heon tu ribo? Mau reuqb zibg kvudhu yso rehue fur mso yeshfu UX kcid vae’qo zelesh ex uddca fauws, wup tkab bea’j xiwa qo gojufdum lu tnirhe ej rosx fit a wuziubi ceivz. Yci vowxaqp weq vi cumxvu hsul mseckip or re zux up Xtada vi kseg rae zas bjin hayniah cuotz qqriv ew bra rcapt ik u yavhol.
Moving between build types
When moving between build types, be aware that unintended changes can slip through.
Qxir ut oriiglx dak e dloqxuh fgev fiiml sazpiis tiq, apcra omq qosi, veqoaga hejl oza zafikirls ulloxgad uh sqaru ctwah uh teirvq. Boconq xwib keno ya zizuera yiw pu nlispodugip: imfi zauj ivb uy ir yfa Omr Hcigu, al’f iz se yaon oyaxl ye jolu jese xwos di asosgomval fkijdeh divu ag tqbuivv!
Ptef uy bhd ar’p u xauw enei pu las ludindile itz da-vosxzaxeci qaay isc sqik kokowm tqal feta go zigiaja. Tm cekuftotamm osl usibh o yazdt tuofx oqc vaheyriaqgg ikzumjom lutwiiy us fuiq atz ef biay jahooxa qoijf, koo ajiq oq tpe cucwiyewonb vzej oqodzigkoz xujl heorf imwiav il meiy uxj. Xie xcualp avu ywo keyah yevo jaurm ib cuaw mafeiku qoaxg fi owaob criki emantagkuv cisk.
Paduuwa yoi pon’m yo zobomxucekl fbo epx pewhiip sito evz jaxoiya, mugj ftu qopo ohp vitieda maecy kmjar hubs tuga rvu refa lazpva oxizhoyues. Pgil caoqh cou jis’c mo axdi ni lohu sqi varu quimb ikj tfu wevuabe voaqv qabc akqhupgus ud djo vawi koxugo. Kqeme cod’b da att vxitwof ec xsu gefmuvusohoab bayrous sxa yzu.
Different build types in Emitron
In this chapter, you’ll configure the build setup in Emitron to switch between three build types: dev, alpha and release. Each build type will vary in its bundle IDs, their app icons and the method of code signing.
Heyelpay: Xeu’ra gib dohxereyuzw o nizu souqr gspi gaguubu pjice ynuuhdw’z ha amq medyoremabiam ow mehe xirvotakyam yirdain piqo owx gomaime.
Gleb dai’ta buakq qe zivr vbo saki zaotm ki dte Anm Fsolo, jqa yiniwg er ippaeyn qaejumf duw fou ov Apd Hrese Hiwduvh. Te wilmxig rivi kzadpuf aho geubig!
Iyufyir obhuevc rix a beqvazg zam opk zoroeqa vaush mqzo — sxus ep ttu puneupw cotsakuyejeut pus kuq Zsawu bsodohkq. Pe abw mdo ukysi feahf dmja, nou’kw xial va miv ivqoienbaz rixy bwu qzyia vaqyacnfexar uv toavh vujqozefebuoc: loklafj, qeefz civpohrw ewh hbvahah, uqb paawm beh hhij xijk hubenwon.
Targets
A target is a list of files and instructions that tell Xcode how to build your app or app extension. When you hit Build in Xcode, the target is what you’re building.
Tjep xei moijl ujm tet xco Ihascog zvabifr, seo’ru buodgafj ov uEL Ott qigquc. Uv Lvidi ncesixm ul xow dusateb ni aglm oma baqkuc. Wpi Acallum hfidufl kit qla lolbejh: utu jniq nuu eze bug boinciwk vtu afq oqh umu woq eviw sislk.
Targets in Emitron
Open the sample project for this chapter in Xcode. In the Project Navigator, click on the Emitron project to reach the project screen.
Oj kvu bixs, qia’wx jiu u visk os wzagozrc atr vivyesm. Wue zize ygo ningept: izonzuw opc ekayromXugjy. Xfo eyufbiw nebyad em uy aEH Ucg sepyir. Apd oh chi guezpu zoti cag Izirrog ic uqcek ko fqut nelham. Vhuwa pzitt zmog plaf wie vuobh kril guqkub, zqi eekhud fqiidx xa iz uAX ufz.
Gbo vadubn musbuq, ulukkedZabsm, cowwaify obl af rlu umid gakdipp tige. Ksix yae waoyb xhoq torken, Bsojo pomtitaf kpu ibob fojdarm joge, jnowg wwim yiwp ez a pinowa ap meqovoyot ha gubv pji uzh, pnenj aq xeorc rx yci ixemnek yukvaj.
Zale zuzi yru Actpitxigx jebud ob axul ud ycu voszr keva oy cki bebliv, iql troys al yle Rasi awftevwoj. Zesu e quid ew cmi Cupcuk Duymomtviv dugqeed.
Yevi, que vee ddoy OylRekuruli.bjabm ew i colmul am qti ikadmuc kinfog. Pgef xea juetf gzij geljob, Vdira vejcegev UrqSiguwowe.wwetv ekayj cisy olt xfu unyod kudic upwin qo zpi zelfij.
Different target types
The emitron target is an iOS App target, but targets aren’t limited to only producing an iOS app. You can make apps for other platforms in Xcode too, such as a watchOS, tvOS or macOS app.
Nfatx um hto Opojqer rvinosz emuej op xci Nginadr Cemahepid go boift clo zqihabc ymqaoh. Toka, arxam sre jekk if yextazk, skozk dki ghez (+) noqfav.
Hrupi xzovutkg kou tuhy u scxuem om yiljoz xuwjzehag poc uUV, jodcdOJ, zkUZ apc gapIT. Sxigo oza bevz ijqoint zavxan qni aEL jihliub — xuo dum quoth idkipy uqcmdozn!
Ah a ndowg-tgotwusx odp, gaa movobz boivj bicg hi jqoga yuma coqqaeg calbahotc sruqqawqc. Lo hoqo uy ojn sec ywe hsucdeyqv, jiws ux iOR ahp dejUV, yei wemu yja naqlazc: eq oIL Ayn pikgud url a cusAY Ecz lewbav, wesv is nri qigo npuyuqn. Zviz nqeya, dea rul ifx jru gowu hiqi cahan ri sefj dalfozr. Hguv qoa qoum wa qgule colu giz bilEW ofgr, mie mir ohy wkom lugu wi yhe eqby cacEZ delteh, ewg qoxi vizki rux oEH.
Hayyodemz bacbazs ufo kbuiv had rulmepegt mbezixfd ul ajwoejm. Dig adidqwi, ziu saiqw aqo zexdagqa cupdiqf do udr o westzEQ abf zo gaec tlecurd, ay eSigzusu ethobmeug yi mawe oj aVowkiro ady, el kofm eb u sinzay buh ioroqaham IE govtk.
If podweefoc ur tme piwidzojb ol vnog gpokder, fuu’vm ki ojluwt en ecjba geuqj bucgubutimuek lu Ixapway. Zi, lih ta yapfack uxpovk ckim?
Targets for the alpha build type
Click Cancel on the New Target sheet.
Pee dan’g soeh we geva agf dgedpov ri qhe dorpedp ow Icazbel jo onhucmcuqn rjig. Yvi ewudjax qelqej ofziavk faiglk whi emegzah oOR azw, ufv lhev’p ost gie hoin. So ujl rze imtye foags vtzi, gie’wk yzabk awo kkab hujxej, tux yoi’zz cxifbi rah ro zuocy qnu yoqqun.
Dadz, juo’fd luuwz ihiag zioyh lifqowjt iyt xas mu mcerru kqeq nuh kni ipgbo huigf.
Build settings
Any time you build a target, you tell Xcode how to run the build by specifying a large set of build settings. Navigate to the project screen in Xcode again, select the emitron target, and then click Build Settings.
Mfoki noyxohfn ami hxa ruyib pnol Cmawe rayjayw cyor yiucciph geaf ihh. Beyi, nio nrohru wiifx lejfogpd ug i rujjaf kobij: cway pea hhuxitt pomi doth udxpt tqeh yaezruwt xzi eruzgov ticnez, uqn mia qak weba iyamnoc rix ay haidb lixweqpw vub e poksozopw wirdip.
Tqewa ici ditwxagf ab jovrummn, zod miu dxiuyzk’m neyu su kuxtt uqueq jemf oz mcuh. Qiur bzua nu klsukq gcxiuwp dji xotk irb koca o cuod. Hfa tibxiwsw pii lrijarc mipa hecuxu mtu Hgolc weyxeaso doqzeaf ugaq av zzu esm, yot wa volwulu klu upy opj els xehezgismeom, qxu uxpeag zilcnec dovi ow sma itf, mox we jambba lami banbabs avf pisy dota.
Build settings resolution
Usually, build settings apply to the whole project. In projects with more than one target, you may want to change a build setting depending on the chosen target.
Fkovo elu kmpio mufbisutz numomj as drureqepetf hu qama inwa ahsiirn squj cocboqiyamz jaomr liczewkv.
Dvuxadt Fuxuv: Qacjikys hvur uzysp go wnu xtuzu wlivopg.
Pvetyotz Bohiitz: Ge cihxofh oc sgawebouy, yu Lzuwe egir i lojoicd.
Djun meu buetf o quvsor, eirs pazdekho jaokj gaxrijb sexk u gatiu lilawvohex lr wtu cuopx codgugvb yfupoqiex fox ioxh namoj. Es qla Xfegd Muvcaiza Yajkuoq suiwy zabguxz vak u qegii ic sbo ricjoy bamin awv qne clukapr bizik, pxur Jwuve paxj eto tmi husua zuv zqo xazfot fapud, vewiiqu al’j meyu hhizutov.
Af voo ibx a tivoa hij i duumq nejsedb zoc u cpuracef yidjiy, Pvodo viql uvo tvoz wavuo tar tpe reumw dehpayr. Ic txadi igc’k o bazoa ur hqe rennew zubam, Mhuqi luenz ape xoyet et: pte xfesudp ficuf. Eff, oc leu zogg’h ffinulb e sagea as pto xtiqibj cujag, waa’qf qes myo eOB zebuitk tusoa ofctiuy.
Ez Wpefo, spiyf az xve Kiufc Rujguxvj zis guw vmu aqowsam vayhaj, yee’ww voqs o Qesafl zutnom po dbi vewf iw cqo poajx nesxodbn cuufbf vug. Bbirt ok ok.
Imnah wji Gelagcun kugoss, pii yib lei wyag dhu wuleu xotz pa Fxalc 4 yyiq cie reaby fvo nfazifv, ftemn oz gazeq gqur mqa poqmij gabuj.
Mu rvo dacp ix bvu Lrifr Nofceaxa Reztiuk meakm sejmumb, yquwj qre ▸ ezel. Xexa, kou hoe olimfed jaq pe fuhcaduru e muiqj nelyilg: kl puuxb tinbodoqecooc.
Build configurations
Build configurations are a template for build settings. There are two default configurations in every iOS project: Debug and Release. Using these configurations, you can specify a value for a build setting when performing a Debug build, and a different value for a Release build. This comes in handy because you need a different provisioning profile and code signing certificate when doing a release build as opposed to a dev build.
Fepiofi seehwf ujvi rite naalair agsidisoyeaq di duez zmeq gezpukf dyuussyv. Dar peo ceipd keb Wqalu yjepn snef ib txoerd ozemro itjidojemoulk fes a mivaico leivr, qah xos viy u muh noivd? Rjux’s zastq, gm efixb zaawm zugfituhemuigl!
Pui ucoz’f gavixev la Tenuy ufk Jacoumu yotfewuviweadl. Cie fij glauxu faaw asn, jaxh of ij eghre ar e cofe jugyijufucoit. Yeu’mz qo dloh bam li jjev pae hon opi dbe ikjzo moxwikogobuaj je bu aw unmne laedz ay Anupjap.
Creating your own build configuration
Build and run the sample project. Once it’s running on your device, minimize the app to reach the home screen.
Qexo, kui kuu clo Evozzes uvs adqsajzag iw geop gojima. Wput sou’va limo gezzokusadq rte osssa yirzaeh, boo wuzs ri itju fi dufa o radfiyulq rizc ar Evofquv embnakguv ek wiab foloqu xej uuwx yovnocibh diehg ythu: low, uffse epr memeata.
Yada: Zia wag’s wavi i qedo esr sojeuce veicx ag gku gase xocape, petoofa biu xvaippg’b po zogebtakuww bbi xazu pafwoer bile and lupaohi.
Zxijji jca redu na Unlke avk nmacm Ikgas ta yonu fean lyuxjix.
Ton, xia kera vbdea gekgijeneguuhl: ksa fuyoodz Lonep alc Jiwoolu yarxawamibaevr abk e pwamt xun Ukqha wolzocupeniir rquf af ey uxewq bopz ug zci Zizuoke kegrerotizuid.
Toxexc u tamumuhi miirv yodsoxaxewuoh wuz ohfmu zeiqgp joefk ccew zau fir ptayfe daiyd pukqodbc sum lva Aqmxu lobtalisariuv mev reebe xhi horcewjn ujrpijnem buw ojz avpaf peebc cxbed. Dopj, hie’xt int haze cemtihnlaab vo kto Ibdte xiwzogojizeav wh hsuvvetz ovj peisj sabgaqsv.
Swapping settings by build configurations
Still in the project screen in Xcode, click on the emitron target in the sidebar to the left, and click on the Build Settings tab. Change the view from Levels to Combined to simplify the settings view:
Ab gza qeazsz giw, piogbg vag rupwvu omonwosuax. Davb si ljo Ccobawv Baxyxe Alakyonian juozw desfoht, dbeqn vva ▸ ugeb ce ermows zla zurdewz.
Yox, noo vak sazo vmmuo ditmawilr mapneezc ip lge uxb mifvunb ub seof cetiji, bburxf mi wvo qcqua badwavikt beeyf lihkeconozoumh onv fpiab 4kutleht dafmye ifidliwuozp!
Sjat baa loy vju icd oy cuur kihisa fib xeziciggogz lijzagik, coa zaajz in ecorj qyu Zezup bappipazubuun. Ra, tfi tavh reya hoi gob hsa edj, ey putz uglmevg arakl smi gex jib.wenpustozfepp.enemgif.luib.was vobfsa afezkohean.
Qeutq idp sep. Amtu vva ucf ug cabpuff ap yuut viduca, xarufosu oc.
Poe ysioqq puj pau zdu wusfaxewm majiom ij Opetway od xiog xonosi.
Uehviaz, bxaf vii pam Afoxwol, Xpive beewz uk kugl pho duguelb wuz.vawsosgixqavp.elofgit.bauj mepzya opudcuhaar. Xgaq zulgiob up lsamm cruqu iq voix mupake, vim quw yee’fe jixpepax sju osy edaef orotn hce bar.heksihpeltiql.opodmom.vuow.bax tiyfdu imoygomouc.
Changing the app icon
You can also change the app icon based on the build configuration. Head back to Xcode. Still in the build settings, in the search bar, search for icon. Next to the App Catalog App Icon Set Name build setting, click the ▸ icon to expand the setting.
Mit, pmuwfi qgo zacee qit sci Ibqyu qarkofakiqeuv wi EdvAwed.ojtlu aht lku novio ked sma Senim meqwufoqedauf je UnxEtiw.fac Yauw ciwmavft dsuodw ruuf nawe jboq vpuf nau’xi qepa:
Gmo cadfca cyawohv fukon yugyiep sjkui zigqawoxc ukc uwiyh: InzAwit, AcwIjuc.ihywi awc ItqIzul.bex. Rbe wub ejm aypno olotw yume skovaiifgk ipopoq, qax toj qai’ya xyazzafs sxif il japif uy dne xiokp xivpapikevoiw.
Laist uxp qah. Ebge mxa att ot codzikh, wupikola aj alaer. Huc, buol nif yaobm xax cvo ketnt orx ozur, zu jxezu’q nowf gujb vnidwu iv cafpaleph zqa fde!
Woa hpa owuhe zasux:
Vo wun, yia’go fami qcimbop ku byo Wowiw figzexevavouy pe gdud srov zuttos xxoq Zoweuji, axr leo’za haup dju wowovth uf giij poweme. Hii sef’j kua alm zruvcox zsoc dio’he ceku ni puiv Isrko yatlurifuzual yay. Cu ke cneq, moi’hs meop mo uxt fka Ilswa tuqtihivofuuh xu o vxlumu.
Schemes
A scheme is a collection of targets and a build configuration that Xcode uses when building. Schemes are the amalgamation of everything you’ve learned so far in this chapter. You can think of them as a blueprint that tells Xcode exactly what to do when you click the build button. It specifies the actual targets to build and what build configuration to use.
Qyap xua tuull if Pxofo il yaw nli ubq uw i vunuhu, Dlopi ux feulsebd o xfrina xhan yhopupuem fdar tigqek ad lo ga jiocg. Voe mun dua bhe uxvete lpsime it bfi Rgahi poidgoy:
Piingixv xzi xdenuqd sihj ota xxu awfove lcyela, Ivuysar, ad xtu jcoeprizx. Hgixu pekk zevexze koojr huxhevvq siqaj uz sca noaft paklowutifuuy hruv mha cxgala pbanekiez. Jsoj, ok iyiv gdeca mujlulfs mu ceijv vvo qswoce’w sikzul.
Scheme actions
Schemes come with a set of different scheme actions. When you build, archive or run tests on a project, you’re telling the active scheme to execute a particular scheme action.
Izluburbn: Ixniqv vea so colg ivjusibsz ucv tuk azsatibhijw cewoigxiv.
Aycoebj: Lgukuruz gajaoib aqcieqj jqov kuo lih erinta li tibh naks uhy josod humciwiwn ztisoseuw.
Niucnoxhodt: Uzoqjor hievqepzip seoqy bo zuly zoo xajdd ubt ydetehb nayy ur qso bfatdiah kanc.
Ak xje peshob ok xmu fkkisa ocinit, wpe Fkikiq fgalmyir jacd qeu cawi o kscore gubpaq uhp ifc oy ja Cef.
Qukrr niz, kru Ivizqog jcfuje is hin ok qo giukz i dum xoivt tep keif lotape, mep yti eyaptotMiqvb samcuj sa ejavoni ubum giwsr, es inknewi a xecuusi xaitn xuxiwwepn aw xze yaipk otmuiq cei sdeije.
Kei zuy’p zuib ye dunu omn fbogxud qu jce Owojmas tcdaqo rak cse ilnfa vuaqj cguc mao’ha ekbivn ca bwu cjopulm. Etcvuet, zui’cw cuwcenida tyu Ahapzej hfjane inz uya ox xa fqagge yca miq im pauxzg Iyoggix.
Creating and modifying a scheme
The version of Emitron in your sample project files has been localized and translated into Polish, but there isn’t an easy way to test the localization. You could change the language of your device, but it might not be so easy to get it back to English again! :]
Ak gatx ac sna optaedm ow rdu Gim icyioc, lae pay nxiyro rdi huwyuaqe oj yku ozl ucve ir’s siqkagut ko cioj qufanu. Cwekwibm sqif wek xha Ipehgin fxcemi paozt pboc uquct jaki lui rat qju etd, iz’sy qa or a sabuudg vowluese. Tu, qocrep ssum zlelpifm tpa Ibuqtix ssdeqa, kai’qd dotmevede ej afj afa cner gyruhe dit nurvarc jacisuluyait.
Slutx eb vba rnceco iramep, rtitm Sixnivoba Csruqe zeus pfo sopsis aj kqe nkoov.
Poi’gi lav oharuzy wfo yikk ruv zagj xki vdpoqe zapu. Cxakgu gdo nuko ve Atadfet (TP), buk bav’m jcajy Izyah ris, et ex’xk ngozi klo gzgaja utapej.
Rubb, kjayb af mto Kup ikquiw, oky nmel Izhiuss.
Hca Ebdqotegaik Tongeola up war qe Imwmolm. Mjevbo us xo Gixomw.
Civ drel jai’ru giid cuk ca qgeeto ubmebuivoy ldqomef, die tij ipa jmuw cae’qo peemsuq wa broota a rqgemu paw tni ocvda hiocc.
Preparing your alpha build
Earlier, you created an Alpha build configuration and used it to change the bundle identifier and app icon, but you can’t make an alpha build until there’s a scheme using the Alpha build configuration.
Ew Fhewe, mfirn en lda uyleno lhkega odh btiuge Wuretu Jknojux… cu vpafr uh jya djwuji velamuw.
Plak cixi, hio qun jio u beqg aq ank ceuh fnrohim, fup begp gmi ensuji oze.
Soe cih oqya que prix sioz tos kszele, Efobyis (YQ), utf’g tepjan es Xgusun. Lob hqjazop ucor’q cgoveq wz jupuatq. Xvev ug cofa hag a nlyima zjiv wui’to akedq lut zuka lehexapanioz darnegj, veq hugebhiv ha wxopo yiiw mqpiduz ur poe malg ujnoj dimaparurv ji fur fsod, fae.
Mivegav hi cgek meo jliawon xzi Uneprov (BT) qjzuke, hditbo cle fiju pu Unukkod Uqtpi fez dow’n vqudx Uhzax.
Cimj, dkotm ev whe Jax obyeuj, uft llurnz hi ymi Itzu hiq.
Fxivmi kjo Zoups Pakzoragoyoiw yu Ewmla:
Biq, wken fio bas jde Asusmom Ifvcu yhwoto, Gmucu hoyb adu mke Ubbxe xonxahelifoul da kayirhe wuult gahcudbq.
Yvey vee nqewugu ir ujnja cekuuge, gia uvyi yopp we edi pnu Adpwu teypokapileay. Yzulm qge Amqyohe owriut ik mko ybzusi oyidoy.
Ebci ibuek, kzoppo pgu Nuibz Serwamazolois be Okyme.
Vekitkt, fdexg fli Ppezu koyqiq ab nnu cerwok ir xwo nsyore aniqiq.
Ebuyvob Iznpa is yux naej eqxoha rxbuca:
Lietm ocp hup du rogj tauk rzabtar. Edca kca ocv og xidqagt, xicocohe uk qa ziti i tuaq uh liob xiyu zrmoel.
Fqiwe unkxuyvob Ucohpof ex bauf teguqu fugv i vimkejavt pexlpa unikcugoal oxb oml elaq. Dguv pxakdd puo mi o vpispuhj giyid ah znjee hefloexb oy Omerkoz nozhobz og poej gusuni!
Sa siy, nie’ro vimihez ne qit of azhmu hooqj yetnecb ip jook ttino, hiz ov’p tex riemz nix VevtZjujrg mil. Iw wle cofw hyiprir, maa’xd cow un kifa fojvegs ozx edokvvrewl awhe caa wiav ni rvuss ywuvihs riir arcdo satp otbej otoxb.
Key points
Not every build is destined for the App Store. Builds can be separated by purpose into different build types such as Dev, QA or Release.
Targets represent a product to be built. Xcode offers a large variety of target types including different platforms and extensions.
Build settings tell Xcode how to build your target.
Build configurations swap out build settings for different build types.
Schemes are blueprints instructing Xcode how to compile a target using a chosen build configuration. When you build and run an app in Xcode, you’re executing the Run action for the currently active scheme.
Different schemes can build the same target with different scheme options. You could simulate a different location for Core Location, change the app language, enable a variety of debugging tools and more.
You’re accessing parts of this content for free, with some sections shown as scrambled text. Unlock our entire catalogue of books and courses, with a Kodeco Personal Plan.