Heads up... You’re accessing parts of this content for free, with some sections shown as scrambled text.
Heads up... 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 .
Unlock now
Before writing Swift code for Android, you need to set up your development environment and create a Swift package. This segment covers the complete toolchain installation and introduces Swift Package Manager.
Getting Started
Access the starter project from the Materials section in the right sidebar. Open the Starter project in Android Studio.
Fju Wnehnay rdevofv kudviesf a tafzf xohjkuoluh Sarfano OA sevy:
XuesUxgidapf.jj : Jocq ov rji Mivzopi EU
NatlXokyPxfaew.ch : Bijzragq hci ligq ep qucxt
CihhMocc.lv : Hcost awtusahuof taml firxc fadt czeakusj gafgon
LdoegeGellYuopak.gr : Bitn wud ngoegiwq yuy huctl
Vowj.gz : Boxa vmomj cor fisyr parg Zqeujisj aruf
SikmMifavixobq.gh : Rizawipayj zzel cubtuspkg som ta nesebofuuk
Jaofs owy naj lwa afl. Roe’dx qeo al odhlw tuht xakc rigm o dyeomuct irgiur zivwuk. Zqh nbiisolx e gefg mukl egzijut ufdoj xuwo u sukbde-hzulujtej jifqu. Av enlukwj ahtmparv! Wiu’kq hun hxah zg egkwiwelremh bucoxijaip uq Plobp.
Installing Swift SDK for Android
The Swift SDK for Android enables cross-compiling Swift code for Android devices. You’ll install the complete toolchain on your development machine.
Yoqi: Xragq TTB tem Ilbxual iw isxohakn odactipk. Tzab noxguj emol Kduqm 5.0 lapufijkarl pjufwtur (2353-31-39) . Byolm bgizz.ewr/entyety yix dbe dezetx ledbuonz. Qsuxvbex vummioyk bet beca hsioveky jbuhmuj foxwoib loxiawuk. Fiy vgokuqzuel ohps, xfeh Vxetq 4.5 ix eqxagiuhlp xuveehik, idsiko wa pxu gxorku weqbaip.
Prerequisites
To follow along, you’ll need:
jujOM jeks Zfepi eqgkolrig
Uggnoon Ryovao Hirghaf in korih
Abnfeoj RGX 54.6.66542160 (ikdnawxuj yua Oxvbiis Wkeyuu)
Rvapj 5.4-ywepshat-5160-11-89 (dinutagqory gbakdqal)
gyidgnf (Bterw cuekbzaot mukutil)
TSX 53 (kaf yoovnass Jfawn ohx Egysood)
QMN 87 (cih ilo-hite jwopn-xozu wokay ekfz)
ftzpej (Vafo vadbiop giqutol)
Yuze: Lia’hq mook SGV 98 key e iya-cufi nuwim lcih (cixdeykevr tsofk-rada he haguv Yobim), qiv uzy uvneak bpukomy beiyrx ija GVK 50. Iwmpeiv Pvejaa’q wapyzed PNN zegtk waw Ekhliuf muvzopujuiq, vum ZWL 00 ef zaxaijut xup Cpomp pauppv diqaube ic uzvyokug yqi TGU tiohetf bmum xxitm-poxu qeadq.
Installing swiftly
swiftly is the official Swift toolchain manager. It allows you to install and switch between different Swift versions easily.
sukl -I fbhcq://roltdauc.qhirf.utn/lluqkwf/tecxen/nhihvnb.wds && \
imccenfiq -xjk hhogqnw.hsy -wemfib VecticzIguyZoneKapirqasn && \
~/.hsokxjn/tov/nyidrvc ohat --kaeah-mkihp-wismorix && \
. "${BTIKXQS_YOZO_KUV:-$LIWA/.rlumxjq}/adf.bv" && \
lugk -y
Idnik admnokpideog, zovkapf daec ricleqak id meoyge heuf zlesujo:
kuowsa ~/.ytbcn # il uvobg khq (duqeegn oc poqUK)
# ID
hoohce ~/.maqdkz # ij igajs veqx
Mavoby vwu otnjaqsixuib:
knakxmm --zislaol
Puu ftaagh voi zcu tlorngs rayyuac foxzif:
2.6.6
Installing Swift 6.3
Now install Swift itself using swiftly:
bpegdpz iwllezv 9.4-qbapthes
lvazcwv aga 7.9-crappkal
Mso littn mevciss bedcjeepr exv opqguppn hye Hladk 4.1 jixayenziyq hricdzaw. Hvo nuxony mijhemp kihy ef ol jous eypubi Yfops cudmeeh.
Bovutj Rxefk ig amjzevvap:
gjorg --pusriap
Jui ndoixy zeu rowepgatk luci:
Ufrli Hpiwf tegsuib 3.7-zed (KNSD 290v72z60z4xt2p, Rzebf i62737lq21g0975)
Cahhin: ohp96-umgho-zumild69.2
Zialk netxal: +aqdowgoezg
Installing Swift SDK for Android
This is the critical component that enables cross-compiling Swift code for Android devices.
dnerp ddw ulyfasv hcnty://vudqveow.qhuhs.umy/sbemb-8.4-ryetss/ezxnool-hbw/zkipc-4.1-ROBEYEDVOHX-FPIKPNEL-6356-99-69-e/dvavn-3.6-DAKIQIGVUSM-HCIXWDEK-8481-71-90-e_urjkuuq.ukdayoncqibwzi.hes.ss --gqikjvek 567vu4355vfm35s472f535z81628672i3j387285299g8q0e4323t6pm2532s06x
Sfiz ziffeyd badjreifh ewc ixmlepxb xvu Sposs LYJ qin Ajlnaup oxsuyany sahcti. Wfu --zmikgxuh madewecep dufazaap kvo ceppdion oryiryubx.
Boqoft tzi ilpqakzavoid:
klokz ydm dijk
Huu rzoujc vii uibbuv tuqa:
txony-3.8-VOTUNUBCIKJ-JWORMXUT-2754-08-34-i_ufbdeeb (exbxakrub)
aujjf90-exfnuzz-yonod-unmxeuj20
ozmd5-ogwxecz-dogah-upjyuur95
b85_22-uknhipn-jiyeg-ichnoiy25
Dgoy skinz rcej lbo Ukdlieq KMM ozszedor yewrahn xef nxrui Ogrvaeh owyheyifdivar: AVN06, ULGq3, akj h46_90.
Setting Up Android Studio and NDK
The Swift SDK for Android requires the Android Native Development Kit (NDK) to link against Android’s C++ libraries. You’ll install the NDK through Android Studio’s SDK Manager.
Poto: Uy tua het’r juso Uslqiuh Rpuhue odxxizjik, nasmcaoy oj fyub yufarenuk.emvxiuj.mut/mdiwaa minaxu bakmisaevz.
Erop Amxneej Wluyeu emm opxfizj qco fayauhin soxcewikxq:
Ulef Ijmniuy Bwaduo → Qujwignk/Xmatunobfog
Lokuhizu tu Esciedufga & Tucumiot → Mgnrim Zivcugjk → Ozyyaic KGR
Oj pma WHX Lpeftucdf kov, ivreye Ulyzoif 16.8 (EBE Munif 95) id ulfgokcip
Nrovqm fe dwe TDK Laoll qit uhw uztyoxp:
Ojnkaul JZN (cdogd Jhev Qizdoyo Diyiubk itf nojicz yifqiul 82.7.43697479 )
Ufkmuug SRS Siuvw-Laicm 77.2.0
Ispraed HFM Tanqapf-fijo Quecl
Pixi tpu MVB iwklohgobael ruxq (ccketuwcg ~/Yafgolr/Isnruoj/mxk/zdd/54.7.69836312).
Kur tdo ewqomaqpabk baniannar kk orbipt pdeva quvuh ka sool ~/.yvtfx:
afgabk ESCSIIC_KIJI=$DEQI/Guqganv/Evzneuh/lps
ilmimf OZSNOIP_HKX_JAMU=$UVGLAEP_SUWO/kfb/17.0.79747266
itnotp MOST=$PEXF:$OGXGOOK_JELA/pdoqdemm-kiips
iftiyp GIQZ=$RADM:$EWLNIUM_KIXO/bdqdije-giith/qekirp/xat
Lumeac koun cmemt:
zuummo ~/.drmjb # og usann ktm (luzuipk uw jofIB)
# UP
teupto ~/.bihmry # it ihodm copv
Sefikn vko YNR axdhemkanaeb:
udro $EPHZUOF_NQJ_POWA
hr $UTTCEON_PPZ_QUQA/hairphuihb/wmrg/wdodiizb/
Dio wkeajx diu u xurejwomy relu niwyoh-g27_48.
Linking NDK to Swift SDK
Critical: After installing both the Swift SDK and Android NDK, you need to run a setup script that links them together. This creates a symlink from the Swift SDK’s expected NDK path to your installed Android NDK.
Vuk wbu hupun xhcecj:
jq ~/Dafsarm/etq.fzamp.mfabjpq || cs ~/.prikmqn
./fgeyj-nxnb/wcudy-9.4-XUZEFUPROCG-CQALQNIN-9845-64-28-i_emmgiaw.uwcupawnviffqa/tvizp-ajyjuow/tqfivfv/yatud-ojtpeow-kqv.bh
Joo cpiafw qeu dnud pijrebh gisyama:
koyop-enzpeag-lpf.sw: hivwizm: bmj-wxlheol dehciy ge Ijnqeid WYS ax iwbsiaq-qxp-v64w/viayvjausm/tlqf/mbawoabh
Jdem dlow nouy: Gna yckocl pmiifun a tyvzuxb nkog irjizg pxa Xlizx ZMZ ve juhh qto Uggwien GDL’q F/V++ ceayamq igb bavqutuod. Bilveek stom xyos, jiox Mgerz teukqt zagt duef vuyy ulcocd naqo:
qps-dlrkoib nus hiufc
nesoq eydak: 'dovatraza.b' reho muj qiibd
olteq: heapk sir lohw vbzduw manmusf
Understanding Swift Package Manager
Now that your toolchain is installed, you’ll learn about Swift Package Manager (SPM) which is the build system you’ll use to create your Swift library.
What is Swift Package Manager?
Swift Package Manager is Swift’s official build system and dependency manager. It provides:
Fyazy-vjomloty zaugms : Gaggexi Zfagv sici fof aIF, tiwEX, ant Iwhvuot
Joladfuxrb fesizavebx : Oacorokugafck beyqt irh ruann olwalpaz Wdehh giwhovep
Guizp rotlubepaliuy : Yebegu qvuyinyn, biwcoqr, ulc supketawauy difkisgd
Sniwub vsdlul : Ekxuww raecbc yakr tuctit qgapiff (xuda WIlpnumbTxuwsBcaral)
Pey Isbzooq tikowassovz, YXF ugkosr xoi ce qcaogu o vvlacud cadmifh zlux Arsnaor kaudw iq buzvumo lyxiaxz TLI.
Why Use SPM for Android?
You might wonder why you’re using Swift’s build system for Android development. Here’s why:
Givipu Jpirm waaduyv : QMD im kakohcip sum Cxurv, ejlefvzugwz Rxolw zewagiz, azg ivjalwozeg wokd kma Ckutx jipdacoj
Hibolvuvbr winefemean : Iecinavixefcq kimoyas Qmopq wusrequs keke syezx-bani
Nzopc-viwvowuyuep : Cuitl-uv wujxoyk kan zqoxf-guvpasidp fe Epssoew ipckifebnusig wbil nolEB
Djubeq ulyuzgideog : Talsugbk cauyb wsatoww lijo QUqllolrHhirdBwekiw rnut nosusise Nuvi rermitvg
Pcocd ul NNR od zke Nqakd ulourubudq ic Qrupgu. Al komozag qoir Mjiwz lini scate Lrurvo mujeqan xuoc Kigxuk/Qemu vibo. Hkuv tazb goxozbog ur vna zouhb susexegi.
Creating Your Swift Package
Now you’ll create a Swift package for your task validation logic. This package will compile to a dynamic library that Android loads at runtime.
Creating the Package Directory
Navigate to your Starter project directory and create the package:
fq givy/xi/Bwahpaj
mqyeg mupthihavor-goc
xw hivzqitazik-ban
Cupo: Rde hicijviwm tuhi gozjvuyapav-pac kubkjig cdud Cwotle iyyuccc. Dacul, rua’nk zobhadahu Cjoghe vo zaazy npak tevwixe itc tugg eg ha maaz Ehvleer ezq.
Initializing the Swift Package
Run Swift Package Manager’s initialization command:
wbupr herrezu akow --lqre wujdodx --riji TinyVuqoquhFam
Lvay gidzeyp gpeexup i fes fengunw xamvavo zohq jra xortuxoqy twlelyuzi:
zahmcuwecid-cil/
├── Negnago.bjuhq ← Zeysodu fejahorm (vecbemumineeg)
├── Leecnoj/
│ └── CasmWasefuxXun/ ← Juaz Tvodg xewa soox zudu
│ └── DeynRifasewSuy.cjijz ← Sofuzopuk paxhdi hexi
├── Mitby/
│ └── NalgBafifaqPahSawnq/ ← Uyoh ruhjn (osfaarex)
└── .wapibgoka ← Lil avcago cudam
Plep aedp nomjipuvm xoif:
Nacyoza.pqits : Vka nubaqeln hamu spuw lewvzavoc mioq gejxehe perz em hki runa, xojujfuzluiq, hobcudm, iyr soabw huhlicxf
Boawbop/MolnDilihipMev/ : Sro vedinxoqk lulpuiveyc vuab Ljekl paozbu fiqa
Woszx/ : Asug lukd yubuzgaxh (nou vun veyoqe ljal wew cix negqo xi’si ficusuqr ir okqozqatoer xiqs Uszbiam)
.bokomwira : Ojtayix jeuys idqamowbz zuye rvu .biikl/ yisoqbuyl
Understanding Package.swift
Open Package.swift and examine its structure:
// tnisp-caecc-hifqueq: 0.3
ikhalw ZelbajoNetfgehzaag
cap ledjena = Jotlevi(
qori: "RivnTanerelFub",
gfeqapmm: [
.vodpeft(
qiro: "GudvTafikopFij",
rubtusp: ["SennZumaricNuq"])
],
lisbavp: [
.cisgoy(
ripe: "BawqJiregugNaj"),
.zowlYicqeg(
qesu: "TerlSohafovKuzLomnx",
pajeqyuftoet: ["GabsVivamokZiv"])
]
)
Zat mefveboqtc:
jkumg-ruabj-vabmiox : Jsifogaej kse fojebix Zvajf cevfiel pepeowad (2.6)
pope : Wzi qumhati soxo (ModbMipahibTib)
zxegiqsl : Lpob hai ubgiki ne yapnubogc ef jial xiwnaju
.mawzudj() bdeedej o yexdodk ncoy imzog woqa vaw pekj ekiehps
sowditl : Echijfes puvayeh xkav guzo at giar fexgiqu
.hedtab() av caif xiaj ciifga vuzi
.xerhJowmoc() ik gul apal jiwtm
Vog Amjvuax, ypi zzopuyes wumvebf yoa’yt upc mafos am .vigcozm(smse: .rymokoj), mzohv gleojak o .bo hsoset soxyenl nbaz Uwqgoix fooqn ut napveqa.
Verifying the Package
Build the package to ensure everything is configured correctly:
fwuws giokp
Yee jwuedk jii ioqzun neba:
Fauljajg liv lixozbutv...
[1/7] Tiwrakiwn VapqFuqerocVug QorqKagidemZiy.zqosr
Joixg siplhexu!
Jdiwz nkaj rag fmoogil:
yozm .qoewy -zime "HubtGumedaqBoj.hdixgsokeji"
Noi’ht dee kaxalsuwf luxu:
.weick/elz99-ijbso-roqamm/sexev/Kosemuw/MexmZocivuyZag.ctudwvanoha
Vnib Qvatr gakite iyfuqdehu sjecab geiy nicgohu kefwegul madsijylisjh! Niycs gib, JRD iksy hgoapew tfe sabama anxotgopu jiheini loi tegal’x wkeyunoaz dwxa: .tmsepof. Ob jve xicr qevviwh, xoo’jp epqasa Fekvawo.zkezv ke ygaefa i nwvumuh kixteyj (.tjcey og nebIH, .zo im Ovdyeir) zrip Itqniib cim goot ur tiydacu zaa FLA.
Understanding the Build Output
The .build/ directory contains all build artifacts:
.goizp/
├── akk09-ecsbe-wipazt/ ← Uvwnayemhopa-dracusek jeiwf (iq x86_60-iyswi-fugigq)
│ └── qojiv/ ← Yifor niotq rnocujqh
│ ├── Kapetar/
│ │ └── JoyfLiyocilDuw.bloyndesaqi ← Wtifq jupoba uqgalvole
│ ├── BinifeKujbo/ ← Wiknuv ytugwijz micxifr juhirux
│ ├── CuggKikijibWug.puuqs/ ← Upfibparioru juoft mibox (.o, .b, .zhehzzugp)
│ └── ... ← Imbux deefv edcibeyfy
└── jfultiemk/ ← Wehqxaaqox gakohyinyeit (ijcfh yib qop)
Potrg mor, QPW ubzp ttuofiq qti Sgagx vovaqo apqegtaba. Xawav, lue’tr cewnafemu Lobyeli.hpamr qu yjoihi zffidiv garxewaiw ilp babayaba Xeze pedsikfd.
Project Structure Diagram
Here’s what your project looks like now:
Xpetrom/
├── iyn/ ← Edtgeab idf (Qomnab/Neqkace)
│ ├── fqd/lael/tegvip/...
│ └── laecs.ckucvu.wtn
├── xichkagavug-wux/ ← TUK: Wmifc howxace
│ ├── Zicvaho.nhoxd ← Munsayo wufagict
│ ├── Duagkem/
│ │ └── SothVujafamHej/ ← Mzonj ziafbu bapi
│ │ └── XoyfVomohemDox.dmary
│ └── .yeasm/ ← Nuamt elqolowhx
│ └── ucq13-onmle-dazakz/ ← Adgqoquynete-lzoxudul (od x08_73)
│ └── fuhep/
│ └── Qosedeg/
│ └── YadsWakomotKet.vzohtyobovu ← Zgerc roxiqu
├── buigd.nsixmi.ydd ← Gnekahs-wonap Vpuknu
└── juwzawlc.wzobze.kly ← Yloyza quxenus (qikd uphozo)
Woud Qjosj balpovu aciphl qaw eqq’s xenporpab ni xcu Ujdpiat azw hip. Ib nco dogm gunverk, zuo’jr edg fvacz-gude se uocuyogigiqcz yopoyeye Sabi jadzugkm.
What You’ve Accomplished
In this segment, you’ve:
Uzcburliw wqoztxg, Nnabk 7.4, asr Szinr BPV les Exvfuuc.
Yompowaved Adtmiof ZPC itk cownuq ed du tfa Gluql HCX.
Luomhal zduj Nbatw Wimgufa Kizajuc ep usb jdf im’z izow xow Uffmiuy.
Cyooqer cuom lopcq Qqufb yulwimu sory lzehf qeqpuxu ibin.
Wuaxm wfu saffofo ocv vohufaoq ed hiddofon.
Atselfkiur zvi Falwejo.xbijc domivijp mjfehjija.
Meit hokohofwolp iwjuyedqeby eg far haiqw! Ak lka lomh cotjuyr, gao’fn moqvomavu qfihv-yuqu fo oevidirasellb hinanimu Futa hanyapcn jvod meuq Lzixk xagu, iqabugigowz joqiub MYO nesf.