Xamarin er et relativt nytt verktøy for utvikling av apper som muliggjør delt kode mellom de ulike plattformene, uten å ofre for mye når det gjelder utseende og responsitivitet på de endelige produktene. Jeg har benyttet Xamarin i flere store app-prosjekter i det siste og vil her forsøke å dele mine erfaringer.

Litt bakgrunn

Personlig har jeg bakgrunn som Java-utvikler og har generelt vært mest komfortabel med Android-utvikling. Med denne bakgrunnen var det tungt og forvirrende å lære Objective-C når jeg senere skulle utvikle applikasjoner for iOS. Mange kryssplattformverktøy krever at man lærer seg et nytt språk. Hvis dette ikke faller deg like naturlig som å bytte underbukse, kan tiden du benytter til dette være bortkastet hvis rammeverket du bruker viser seg å være dårligere enn du hadde håpet eller avviklet (I’m looking at you Adobe Flex). Xamarin benytter C# som kodespråk, noe som er positivt hvis du vil utvikle applikasjoner til flere plattformer. Overgangen fra Java til C# er lett, og C# er et språk du garantert ikke kaster bort tiden på å lære deg. Som en bonus kan du plutselig utvikle apper til Windows Phone også.

Hvordan fungerer det?

Xamarin gir deg to muligheter for å utvikle apper til flere plattformer. Enten lager man ett prosjekt, og bruker Xamarin Forms for å lage GUI. Forms er et sett med GUI-komponenter du bygger opp ved hjelp av XML. Denne metoden gir full kryssplattform-utvikling og ligner på mange andre verktøy. Ulempen er at du sitter igjen med noe som ikke er optimalt for noen plattformer, men et kompromiss. Forms er etter min mening ikke modent nok for å lage de virkelig gode appene.

Det andre alternativet er å dele appen i flere prosjekter, der ett prosjekt representerer en felles kodebase, mens egne prosjekter for hver plattform tar seg av alt som har med GUI å gjøre. Et eksempel på en prosjektstruktur fra Visual Studio:

dd

Med denne strukturen kan du legge alt som er felles i Core, som database-lagring og håndtering, sikkerhet, tjenestekall og business-logikk. Deretter importerer du dette prosjektet inn i prosjektet for den enkelte plattform. For hver plattform lager du all GUI og interaksjon som du ville gjort i en native app. Dette betyr at du kan bruke Interface Builder på iOS, bruke Androids kraftfulle XML-ressurser til å håndtere ulike skjermstørrelser/oppløsninger, themes osv. Til slutt bygger du appen for en og en plattform, tester og legger ut i app-butikkene når du er fornøyd.

Fordeler

En stor fordel er at du kun har ett programmeringsspråk og forholde deg til. Koden samles i én kodebase og gjenbruk av kjernefunksjonalitet gjør at utvikling til en ny plattform ikke nødvendigvis dobler utviklingskostnaden. Lager du en WP-app i tillegg øker selvsagt fordelene enda mer, da tre apper kan gjenbruke samme kode. Unit-tester forholder seg stort sett til business-logikken så også disse dekker flere plattformer. En annen, og for meg den største, fordelen er at du kan lage en native app, designet etter plattformens retningslinjer og som utnytter alle mulighetene du har til rådighet. Ikke lenger kompromiss på ytelse, responsitivitet eller design.

Ulemper

Når du lager apper som fungerer som native, med egne GUI som beskrevet over, så må du faktisk lage dem som native. Det betyr at hvis du ikke vet hvordan du lager en Android eller iOS app, kan du fortsatt ikke gjøre det med Xamarin. For å lage gode Xamarin-apper må du kjenne plattformen like godt som ren native. Det går fint for oss som faktisk kan det, men det gir ingen snarveier for nye utviklere. Har du en .NET utvikler kan han eller hun absolutt ikke bare «bli» en mobil utvikler. Dette er etter min mening egentlig en god ting, da de dårligste appene er de som er laget av web-utviklere eller andre som ikke har kunnskapen som er nødvendig om mobil utvikling. En annen ulempe er at eksisterende komponenter i Objective-C eller Java ikke nødvendigvis kan gjenbrukes direkte, selv om mange blir konvertert til C# og gjort tilgjengelig i en fin og oversiktlig «Component Store». Xamarin er dessuten dyrt (1000 dollar per utvikler per plattform per år), noe som gjør at de som bare er nysgjerrige eller skal bidra med litt kode ikke nødvendigvis får innvilget lisenser utover prøveperioden.

Bunnlinja

For alle apper som har et tjenestelag som en viktig del og som skal utvikles til flere plattformer, vil jeg varmt anbefale Xamarin. Skal du kun støtte én plattform vil det være en smakssak, men jeg merker at vi også i disse tilfellene som oftest velger Xamarin. Til spill, reklame-apper eller andre typer apper der GUI og interaksjon stort sett er hele appen vil det nok gå raskere å lage en native app. Android Studio og XCode vil alltid være først ute med støtte til nye funksjoner og de er etter hvert blitt svært gode begge to. Da kommer det mer an på hvilket språk du er mest komfortabel med. Hvis du er ekspert på C# er valget åpenbart.

Om Frederik Skytte

Frederik er en av Computas' fremste eksperter på mobil teknologi og utvikling. Han har bidratt i de fleste app-utviklingsprosjektene Computas har hatt ansvaret for og holder seg oppdatert på det meste som skjer på mobilfronten.

Tagget med

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *