![Page 1: Windows snjallforrit/apps og samnýting á kóða fyrir IOS og ... · MVVM til að ná hámarks kóðasamnýtni. Samantekt Cross platform hugmyndafræði Mikill kostnaður að styðja](https://reader035.vdocuments.net/reader035/viewer/2022070720/5ee13798ad6a402d666c2cbe/html5/thumbnails/1.jpg)
Windows snjallforrit/apps
og samnýting á kóða
fyrir IOS og Android með Xamarin
Björn Ingi Björnsson
![Page 2: Windows snjallforrit/apps og samnýting á kóða fyrir IOS og ... · MVVM til að ná hámarks kóðasamnýtni. Samantekt Cross platform hugmyndafræði Mikill kostnaður að styðja](https://reader035.vdocuments.net/reader035/viewer/2022070720/5ee13798ad6a402d666c2cbe/html5/thumbnails/2.jpg)
Um Spektra
Að upplagi SharePoint ráðgjafafyrirtækiStofnað árið 2013 í samstarfi við Opin kerfi Stærstur hluti starfsmanna unnið saman síðan 2010
Aðsetur á Laugavegi 178 með fullbúinni 12 manna kennslustofu
![Page 3: Windows snjallforrit/apps og samnýting á kóða fyrir IOS og ... · MVVM til að ná hámarks kóðasamnýtni. Samantekt Cross platform hugmyndafræði Mikill kostnaður að styðja](https://reader035.vdocuments.net/reader035/viewer/2022070720/5ee13798ad6a402d666c2cbe/html5/thumbnails/3.jpg)
Efni dagsins
Reynslusaga fyrirtækis sem vildi búa öpp fyrir öll snjalltæki
Cross platform hugmyndafræði
Kóðadæmi hvernig best er að samnýta kóða með Xamarin
![Page 4: Windows snjallforrit/apps og samnýting á kóða fyrir IOS og ... · MVVM til að ná hámarks kóðasamnýtni. Samantekt Cross platform hugmyndafræði Mikill kostnaður að styðja](https://reader035.vdocuments.net/reader035/viewer/2022070720/5ee13798ad6a402d666c2cbe/html5/thumbnails/4.jpg)
Spektra smíðar öpp
Viðskiptavinir farnir að sýna snjalltækjum og snertiviðmóti áhuga
Vildum bjóða upp á mobile útgáfur
Mikið af ósvöruðum spurningum þegar vinna hófst
![Page 5: Windows snjallforrit/apps og samnýting á kóða fyrir IOS og ... · MVVM til að ná hámarks kóðasamnýtni. Samantekt Cross platform hugmyndafræði Mikill kostnaður að styðja](https://reader035.vdocuments.net/reader035/viewer/2022070720/5ee13798ad6a402d666c2cbe/html5/thumbnails/5.jpg)
Lausnin sem við vildum smíða
Geta séð fréttir
Stofna og skoða beiðnir hvar og hvenær sem er
Sjá stöðuna á mínum beiðnum á fljótlegan hátt
Skoða matseðil
Staða á fundarherbergjum og bóka laust herbergi
![Page 6: Windows snjallforrit/apps og samnýting á kóða fyrir IOS og ... · MVVM til að ná hámarks kóðasamnýtni. Samantekt Cross platform hugmyndafræði Mikill kostnaður að styðja](https://reader035.vdocuments.net/reader035/viewer/2022070720/5ee13798ad6a402d666c2cbe/html5/thumbnails/6.jpg)
Af hverju app en ekki mobile vefur?
Fólk býst við fyrsta flokks upplifun
Viljum geta séð gögn offline
Nemar, myndavél, tilkynningar og GPS
Aðeins app getur tengst öllu sem tækið býður uppá
![Page 7: Windows snjallforrit/apps og samnýting á kóða fyrir IOS og ... · MVVM til að ná hámarks kóðasamnýtni. Samantekt Cross platform hugmyndafræði Mikill kostnaður að styðja](https://reader035.vdocuments.net/reader035/viewer/2022070720/5ee13798ad6a402d666c2cbe/html5/thumbnails/7.jpg)
![Page 8: Windows snjallforrit/apps og samnýting á kóða fyrir IOS og ... · MVVM til að ná hámarks kóðasamnýtni. Samantekt Cross platform hugmyndafræði Mikill kostnaður að styðja](https://reader035.vdocuments.net/reader035/viewer/2022070720/5ee13798ad6a402d666c2cbe/html5/thumbnails/8.jpg)
Hvernig eru mobile tæki notuð?
![Page 9: Windows snjallforrit/apps og samnýting á kóða fyrir IOS og ... · MVVM til að ná hámarks kóðasamnýtni. Samantekt Cross platform hugmyndafræði Mikill kostnaður að styðja](https://reader035.vdocuments.net/reader035/viewer/2022070720/5ee13798ad6a402d666c2cbe/html5/thumbnails/9.jpg)
Hvaða stýrikerfi á að styðja við?
IOS
Android
Windows
![Page 10: Windows snjallforrit/apps og samnýting á kóða fyrir IOS og ... · MVVM til að ná hámarks kóðasamnýtni. Samantekt Cross platform hugmyndafræði Mikill kostnaður að styðja](https://reader035.vdocuments.net/reader035/viewer/2022070720/5ee13798ad6a402d666c2cbe/html5/thumbnails/10.jpg)
Windows56%
IOS21%
Android11%
Mac11%
Annað1%
Heimsóknir á stærstu vefsetur á Íslandi - 2014
Heimild: www.lappari.com
![Page 11: Windows snjallforrit/apps og samnýting á kóða fyrir IOS og ... · MVVM til að ná hámarks kóðasamnýtni. Samantekt Cross platform hugmyndafræði Mikill kostnaður að styðja](https://reader035.vdocuments.net/reader035/viewer/2022070720/5ee13798ad6a402d666c2cbe/html5/thumbnails/11.jpg)
Hvað með Windows 10?
Risinn vaknaður
Start snappurinn kominn aftur
Universal app - Sama forritið keyrandi óbreytt á mismunandi tækjum
Borðtölvur, fartölvur, spjaldtölvur, símar og Xbox
Öpp í Windows 10 geta keyrt í glugga eins og venjulegt Windows forrit
Verður frítt fyrsta árið
![Page 12: Windows snjallforrit/apps og samnýting á kóða fyrir IOS og ... · MVVM til að ná hámarks kóðasamnýtni. Samantekt Cross platform hugmyndafræði Mikill kostnaður að styðja](https://reader035.vdocuments.net/reader035/viewer/2022070720/5ee13798ad6a402d666c2cbe/html5/thumbnails/12.jpg)
![Page 13: Windows snjallforrit/apps og samnýting á kóða fyrir IOS og ... · MVVM til að ná hámarks kóðasamnýtni. Samantekt Cross platform hugmyndafræði Mikill kostnaður að styðja](https://reader035.vdocuments.net/reader035/viewer/2022070720/5ee13798ad6a402d666c2cbe/html5/thumbnails/13.jpg)
Eitt Windows fyrir app forritara
![Page 14: Windows snjallforrit/apps og samnýting á kóða fyrir IOS og ... · MVVM til að ná hámarks kóðasamnýtni. Samantekt Cross platform hugmyndafræði Mikill kostnaður að styðja](https://reader035.vdocuments.net/reader035/viewer/2022070720/5ee13798ad6a402d666c2cbe/html5/thumbnails/14.jpg)
Hvað með Windows Phone?
Windows 10 fer á alla Windows 8 símaLíka 3 ára símtæki
Erum að fá öppin í símana nánast frítt
Sturluð staðreynd - Windows Phone og vefmælingar
![Page 15: Windows snjallforrit/apps og samnýting á kóða fyrir IOS og ... · MVVM til að ná hámarks kóðasamnýtni. Samantekt Cross platform hugmyndafræði Mikill kostnaður að styðja](https://reader035.vdocuments.net/reader035/viewer/2022070720/5ee13798ad6a402d666c2cbe/html5/thumbnails/15.jpg)
![Page 16: Windows snjallforrit/apps og samnýting á kóða fyrir IOS og ... · MVVM til að ná hámarks kóðasamnýtni. Samantekt Cross platform hugmyndafræði Mikill kostnaður að styðja](https://reader035.vdocuments.net/reader035/viewer/2022070720/5ee13798ad6a402d666c2cbe/html5/thumbnails/16.jpg)
Hvað með iOS og Android?
Hvað er hægt að endurnýta mikið af kóða á milli þessara stýrikerfa?
Vefþjónustur
En hvað með kóðann í appinu sjálfu?
![Page 17: Windows snjallforrit/apps og samnýting á kóða fyrir IOS og ... · MVVM til að ná hámarks kóðasamnýtni. Samantekt Cross platform hugmyndafræði Mikill kostnaður að styðja](https://reader035.vdocuments.net/reader035/viewer/2022070720/5ee13798ad6a402d666c2cbe/html5/thumbnails/17.jpg)
Dæmi um kóðasamnýtni
![Page 18: Windows snjallforrit/apps og samnýting á kóða fyrir IOS og ... · MVVM til að ná hámarks kóðasamnýtni. Samantekt Cross platform hugmyndafræði Mikill kostnaður að styðja](https://reader035.vdocuments.net/reader035/viewer/2022070720/5ee13798ad6a402d666c2cbe/html5/thumbnails/18.jpg)
Hver er kóðasamnýtni milli iOS- og Android Client?
0%Ha ? ... Þurfum við þá að skrifa sama appið oft?
![Page 19: Windows snjallforrit/apps og samnýting á kóða fyrir IOS og ... · MVVM til að ná hámarks kóðasamnýtni. Samantekt Cross platform hugmyndafræði Mikill kostnaður að styðja](https://reader035.vdocuments.net/reader035/viewer/2022070720/5ee13798ad6a402d666c2cbe/html5/thumbnails/19.jpg)
Síló leiðin
Smíða sama appið oft
Þarf mikla þekkingu
Mikill kostnaður
Engin kóðasamnýtni
Of dýr leið fyrir okkur
![Page 20: Windows snjallforrit/apps og samnýting á kóða fyrir IOS og ... · MVVM til að ná hámarks kóðasamnýtni. Samantekt Cross platform hugmyndafræði Mikill kostnaður að styðja](https://reader035.vdocuments.net/reader035/viewer/2022070720/5ee13798ad6a402d666c2cbe/html5/thumbnails/20.jpg)
Hybrid – Cross platform
Cordova, Phonegap, Telerik appbuilder
Lægsti sameiginlegi samnefnarinn
Útlitið eins á öllum stýrikerfum
Nýtir sér innbyggðan vafra
![Page 21: Windows snjallforrit/apps og samnýting á kóða fyrir IOS og ... · MVVM til að ná hámarks kóðasamnýtni. Samantekt Cross platform hugmyndafræði Mikill kostnaður að styðja](https://reader035.vdocuments.net/reader035/viewer/2022070720/5ee13798ad6a402d666c2cbe/html5/thumbnails/21.jpg)
Gerir það mögulegt að skrifa allan kóða í C#
Hægt að ná fram hátt í 60 - 90% kóðasamnýtni milli iOS, Android og Windows
Allt sem er hægt með Objective C og Java er hægt með C#
Ekki verið að reyna að gera öppin eins. Líta native út.
10% - 40% sem vantar uppá er einnig skrifað með C#
Xamarin – Cross platform
![Page 22: Windows snjallforrit/apps og samnýting á kóða fyrir IOS og ... · MVVM til að ná hámarks kóðasamnýtni. Samantekt Cross platform hugmyndafræði Mikill kostnaður að styðja](https://reader035.vdocuments.net/reader035/viewer/2022070720/5ee13798ad6a402d666c2cbe/html5/thumbnails/22.jpg)
Eitt forritunarmál C#
Eitt þróunarumhverfiVisual studio
Stór hluti af kóðanumfull prófaður
Windows appið er óháð Xamarin
![Page 23: Windows snjallforrit/apps og samnýting á kóða fyrir IOS og ... · MVVM til að ná hámarks kóðasamnýtni. Samantekt Cross platform hugmyndafræði Mikill kostnaður að styðja](https://reader035.vdocuments.net/reader035/viewer/2022070720/5ee13798ad6a402d666c2cbe/html5/thumbnails/23.jpg)
Visual studio, Xamarin Studio
Skilgreina Mac build host fyrir iOS þróun
Tól og tæki
Google emulator, Genymotion, Xamarin Android player
iOS emulator
Debugging
![Page 24: Windows snjallforrit/apps og samnýting á kóða fyrir IOS og ... · MVVM til að ná hámarks kóðasamnýtni. Samantekt Cross platform hugmyndafræði Mikill kostnaður að styðja](https://reader035.vdocuments.net/reader035/viewer/2022070720/5ee13798ad6a402d666c2cbe/html5/thumbnails/24.jpg)
Leyfiskostnaður
![Page 25: Windows snjallforrit/apps og samnýting á kóða fyrir IOS og ... · MVVM til að ná hámarks kóðasamnýtni. Samantekt Cross platform hugmyndafræði Mikill kostnaður að styðja](https://reader035.vdocuments.net/reader035/viewer/2022070720/5ee13798ad6a402d666c2cbe/html5/thumbnails/25.jpg)
Xamarin Forms
Frekar takmarkað ennþá
Hægt að ná 99% kóðasamnýtni
Allt renderast native
![Page 26: Windows snjallforrit/apps og samnýting á kóða fyrir IOS og ... · MVVM til að ná hámarks kóðasamnýtni. Samantekt Cross platform hugmyndafræði Mikill kostnaður að styðja](https://reader035.vdocuments.net/reader035/viewer/2022070720/5ee13798ad6a402d666c2cbe/html5/thumbnails/26.jpg)
Hvað er hægt að samnýta af kóðanum?
Data layer: T.d. SQLite, XML skjöl
Service access: T.d Azure vefþjónustur, Sharepoint
Business logic: T.d model, viewmodel, aðgerðir sem vinna á móti bakenda
Hvaða leiðir eru til að deila kóða?
![Page 27: Windows snjallforrit/apps og samnýting á kóða fyrir IOS og ... · MVVM til að ná hámarks kóðasamnýtni. Samantekt Cross platform hugmyndafræði Mikill kostnaður að styðja](https://reader035.vdocuments.net/reader035/viewer/2022070720/5ee13798ad6a402d666c2cbe/html5/thumbnails/27.jpg)
PCL (portable class library)
![Page 28: Windows snjallforrit/apps og samnýting á kóða fyrir IOS og ... · MVVM til að ná hámarks kóðasamnýtni. Samantekt Cross platform hugmyndafræði Mikill kostnaður að styðja](https://reader035.vdocuments.net/reader035/viewer/2022070720/5ee13798ad6a402d666c2cbe/html5/thumbnails/28.jpg)
PCL(portable class libraries)
Kostir
Ýtir undir gott skipulag
Hægt að unit testa
Hægt að dreifa sem binary t.d Nuget
Ókostir
Takmarkaðri API í boði
Erfitt að deila skrám sem ekki er kóði
Erfiðara að nota platform specific kóða
![Page 29: Windows snjallforrit/apps og samnýting á kóða fyrir IOS og ... · MVVM til að ná hámarks kóðasamnýtni. Samantekt Cross platform hugmyndafræði Mikill kostnaður að styðja](https://reader035.vdocuments.net/reader035/viewer/2022070720/5ee13798ad6a402d666c2cbe/html5/thumbnails/29.jpg)
Shared Projects
![Page 30: Windows snjallforrit/apps og samnýting á kóða fyrir IOS og ... · MVVM til að ná hámarks kóðasamnýtni. Samantekt Cross platform hugmyndafræði Mikill kostnaður að styðja](https://reader035.vdocuments.net/reader035/viewer/2022070720/5ee13798ad6a402d666c2cbe/html5/thumbnails/30.jpg)
Shared Projects
Kostir
Öll API aðgengleg
Hægt er að setja inn platform specific kóða
Hægt er að deila öllum tegundum af skrám
Ókostir
Getur leitt til spagetti kóða
Ekki hægt að unit testa eitt og sér
Aðeins hægt að dreifa sem source kóða
![Page 31: Windows snjallforrit/apps og samnýting á kóða fyrir IOS og ... · MVVM til að ná hámarks kóðasamnýtni. Samantekt Cross platform hugmyndafræði Mikill kostnaður að styðja](https://reader035.vdocuments.net/reader035/viewer/2022070720/5ee13798ad6a402d666c2cbe/html5/thumbnails/31.jpg)
Hvað ef það verður að nota platform sérstakan kóða?
Partial classes
Class mirroring
#If (Conditional compilation)
Ofl..
![Page 32: Windows snjallforrit/apps og samnýting á kóða fyrir IOS og ... · MVVM til að ná hámarks kóðasamnýtni. Samantekt Cross platform hugmyndafræði Mikill kostnaður að styðja](https://reader035.vdocuments.net/reader035/viewer/2022070720/5ee13798ad6a402d666c2cbe/html5/thumbnails/32.jpg)
Partial classes
![Page 33: Windows snjallforrit/apps og samnýting á kóða fyrir IOS og ... · MVVM til að ná hámarks kóðasamnýtni. Samantekt Cross platform hugmyndafræði Mikill kostnaður að styðja](https://reader035.vdocuments.net/reader035/viewer/2022070720/5ee13798ad6a402d666c2cbe/html5/thumbnails/33.jpg)
Class mirroring
![Page 34: Windows snjallforrit/apps og samnýting á kóða fyrir IOS og ... · MVVM til að ná hámarks kóðasamnýtni. Samantekt Cross platform hugmyndafræði Mikill kostnaður að styðja](https://reader035.vdocuments.net/reader035/viewer/2022070720/5ee13798ad6a402d666c2cbe/html5/thumbnails/34.jpg)
#if (conditional compilation)
![Page 35: Windows snjallforrit/apps og samnýting á kóða fyrir IOS og ... · MVVM til að ná hámarks kóðasamnýtni. Samantekt Cross platform hugmyndafræði Mikill kostnaður að styðja](https://reader035.vdocuments.net/reader035/viewer/2022070720/5ee13798ad6a402d666c2cbe/html5/thumbnails/35.jpg)
Leiðir til að innleiða Xamarin
Henda öllu og byrja upp á nýtt?
Taka eitt skef í einu og er það hægt?
![Page 36: Windows snjallforrit/apps og samnýting á kóða fyrir IOS og ... · MVVM til að ná hámarks kóðasamnýtni. Samantekt Cross platform hugmyndafræði Mikill kostnaður að styðja](https://reader035.vdocuments.net/reader035/viewer/2022070720/5ee13798ad6a402d666c2cbe/html5/thumbnails/36.jpg)
Xamarin innleiðing
Kostnaður við Android java client og Android Xamarin client svipaður
Ert með 60-90% af testuðum kóða þegar hafist er handa við næsta platform
Hægt að endurnýta IOS og Android library með Xamarin binding templates
Við byrjuðum á Windows client
MVVM til að ná hámarks kóðasamnýtni
![Page 37: Windows snjallforrit/apps og samnýting á kóða fyrir IOS og ... · MVVM til að ná hámarks kóðasamnýtni. Samantekt Cross platform hugmyndafræði Mikill kostnaður að styðja](https://reader035.vdocuments.net/reader035/viewer/2022070720/5ee13798ad6a402d666c2cbe/html5/thumbnails/37.jpg)
Samantekt
Cross platform hugmyndafræði
Mikill kostnaður að styðja við þrjú mismunandi forritunarmál og umhverfi
Enginn afsláttur af „síló“ leiðinni
Snjallforrit/öpp eiga eftir að vera stærri og flóknari með tímanum
Við vildum ekki leysa sama vandamálið oft og völdum cross platform
![Page 38: Windows snjallforrit/apps og samnýting á kóða fyrir IOS og ... · MVVM til að ná hámarks kóðasamnýtni. Samantekt Cross platform hugmyndafræði Mikill kostnaður að styðja](https://reader035.vdocuments.net/reader035/viewer/2022070720/5ee13798ad6a402d666c2cbe/html5/thumbnails/38.jpg)
Samantekt frh.
Samnýting á kóða fyrir IOS, Android og Windows apps með Xamarin
Getum núna stutt við öll platform
Xamarin notað af þúsundum fyrirtækja út um allan heim
Ls Retail hafa notast við Xamarin í tvö ár með góðum árangri
Spennandi tímar framundan með Windows 10
![Page 39: Windows snjallforrit/apps og samnýting á kóða fyrir IOS og ... · MVVM til að ná hámarks kóðasamnýtni. Samantekt Cross platform hugmyndafræði Mikill kostnaður að styðja](https://reader035.vdocuments.net/reader035/viewer/2022070720/5ee13798ad6a402d666c2cbe/html5/thumbnails/39.jpg)
Spurningar ?
![Page 40: Windows snjallforrit/apps og samnýting á kóða fyrir IOS og ... · MVVM til að ná hámarks kóðasamnýtni. Samantekt Cross platform hugmyndafræði Mikill kostnaður að styðja](https://reader035.vdocuments.net/reader035/viewer/2022070720/5ee13798ad6a402d666c2cbe/html5/thumbnails/40.jpg)
![Page 41: Windows snjallforrit/apps og samnýting á kóða fyrir IOS og ... · MVVM til að ná hámarks kóðasamnýtni. Samantekt Cross platform hugmyndafræði Mikill kostnaður að styðja](https://reader035.vdocuments.net/reader035/viewer/2022070720/5ee13798ad6a402d666c2cbe/html5/thumbnails/41.jpg)
![Page 42: Windows snjallforrit/apps og samnýting á kóða fyrir IOS og ... · MVVM til að ná hámarks kóðasamnýtni. Samantekt Cross platform hugmyndafræði Mikill kostnaður að styðja](https://reader035.vdocuments.net/reader035/viewer/2022070720/5ee13798ad6a402d666c2cbe/html5/thumbnails/42.jpg)
En hvernig virkar Xamarin og hvernig er þetta hægt ?
![Page 43: Windows snjallforrit/apps og samnýting á kóða fyrir IOS og ... · MVVM til að ná hámarks kóðasamnýtni. Samantekt Cross platform hugmyndafræði Mikill kostnaður að styðja](https://reader035.vdocuments.net/reader035/viewer/2022070720/5ee13798ad6a402d666c2cbe/html5/thumbnails/43.jpg)
IL (intermediate language) sett í Android pakkann sem gefinn er út
Xamarin android virtual machine býr til native binary úr IL
Mono VM vinnur með Dalvik/Art til að sjá um samskipti við Java library
JIT
Android
![Page 44: Windows snjallforrit/apps og samnýting á kóða fyrir IOS og ... · MVVM til að ná hámarks kóðasamnýtni. Samantekt Cross platform hugmyndafræði Mikill kostnaður að styðja](https://reader035.vdocuments.net/reader035/viewer/2022070720/5ee13798ad6a402d666c2cbe/html5/thumbnails/44.jpg)
![Page 45: Windows snjallforrit/apps og samnýting á kóða fyrir IOS og ... · MVVM til að ná hámarks kóðasamnýtni. Samantekt Cross platform hugmyndafræði Mikill kostnaður að styðja](https://reader035.vdocuments.net/reader035/viewer/2022070720/5ee13798ad6a402d666c2cbe/html5/thumbnails/45.jpg)
Apple býður ekki uppá JIT - AOT (Ahead of time)
Sömu library of tól notuð til að útbúa pakkann sem gefinn er út
Þarf að hafa Mac og Xcode uppsett
Þýtt yfir á native iOS binary og sett í pakkann
Sambærilegt og Android en ekkert JIT
Apple iPhone