Cross-Platform Application Development for Smartphones Is cross-platform development environment the future of mobile application development?



Relevanta dokument
Mobile Cross Development

Mobile First Video on demand och livesändningar på Internet. Juni 2012

KARTLÄGGNING OCH JÄMFÖRELSE AV MULTIPLATTFORMSUTVECKLINGS- VERKTYG FÖR SMARTPHONES

Mina listor. En Android-applikation. Rickard Karlsson Rickard Karlsson - rk222cu Linnéuniversitet rk222cu@student.lnu.

Innehållsförteckning Sida 3 Om IT-Högskolan Sida 4-5.NET-utvecklare Sida 6-7 Applikationsutvecklare till iphone och Android Sida 8-9 Mjukvarutestare

Swedbank Mobile Loadtesting. LoadRunner Mobile App protocol

Hybridappar. Utveckla mobilappar i HTML, Javascript och CSS

Undervisningen i ämnet mobila applikationer ska ge eleverna förutsättningar att utveckla följande:

Android - En översikt samt titt på utvecklingsmiljö. Kalle Prorok 12 nov 2013

Undervisningen i ämnet webbutveckling ska ge eleverna förutsättningar att utveckla följande:

Sitecon En utvärdering av en mobilapplikation.

Creo Customization. Lars Björs

Webbappar med OpenLayers och jquery

Android. Ett alternativ till traditionella Windows-datorer

Testautomation av sammansatta och mobila applikationer. Magnus Nilsson Lemontree

Metod Rapporten är baserad på egen erfarenhet av marknadsföring on-line samt studier av aktuell forskning, rapporter och webinars.

Collector en Android-app för att samla saker. Kim Grönqvist (kg222dk) Slutrapport

ADOBE FLASH PLAYER 10.3 Lokal inställningshanterare

Beijer Electronics AB 2000, MA00336A,

Rafel Ridha Projektdefinition

INSTALLATIONSGUIDE TILL ANDROID UTVECKLINGSMILJÖ

Home Storage Manager

Kursplan Webbutveckling 2, 100p Läsår

STADSLEDNINGSKONTORET SOA SDK IT-AVDELNINGEN VERSION 2.1. Läs mig först. Stockholms stad SOA-plattform. Sida 1 (5)

Välkommen! SA S PSA S Im I puls s Mobilite t t e 8 1

Krav och riktlinjer för applikationsutveckling

SKOLFS. beslutade den XXX 2017.

Innehålls förteckning

QR-kodernas intåg för nytta och nöje!

Javautvecklare. Utbildningsfakta. 400 YH-poäng, 2 år

Institutionen för datavetenskap Department of Computer and Information Science

QR-kodernas intåg för nytta och nöje!

WEBBTEKNIK. Ämnets syfte

WEBBTEKNIK. Ämnets syfte

A" utveckla kartor med responsiv design. Johan Lah8 Geografisk IT- utvecklare Stadsbyggnadskontoret, Malmö stad

Mål. Uppdrag. NuvoAir, Stockholm Oktober 2017 Februari Spotify, Stockholm Februari 2017 September 2017

Författare: Juha Söderqvist IT-GUI. Version 1.0. Datum

Mobila tjänster för lojalitets system. Mobila tjänster för lojalitetssystem Mobile services for loyalty network

Örebro universitet Handelshögskolan Informatik C Handledare: Johan Aderud Examinator: Mathias Hatakka 17 december 2014

TMP Consulting - tjänster för företag

Undervisningen ska ge eleverna tillfälle att arbeta i projekt samt möjlighet att utveckla kunskaper om projektarbete och dess olika faser.

UTVECKLINGSVERKTYG. Praktiska tips för PUM-projekten

Avancerade Webbteknologier 2. AD11g Göteborg 2012 Mobilanpassning

Joakim Jonsson jj222kc. Minesweeper. Individuellt Mjukvaruprojekt Joakim Jonsson

Testdriven utveckling. Magnus Jonsson Siemens Medical Solutions

Om Apple & iphone. Pelle Snickars, KB. söndag 6 november 11

Sim Goods Reception Utveckling av plattformsoberoende mobilapplikation Examensarbete inom data- och informationsteknik

Utvärdering av multiplattformsutvecklingsverktyg för smarta mobiler

GYMKEEPER ANDREAS SÖDERSTRÖM

LAJKA-GUIDE. Jätteguide till molnets 9 bästa. näthårddiskar. 7 De bästa gratisalternativen 7 Så väljer du rätt 7 Smarta säkerhetstips

2.1 Installation of driver using Internet Installation of driver from disk... 3

Uppdragsbeskrivning. Paddel-appen Utmärkta kanotleder. Version 1.0 Mats Persson. Distributionslista. Namn Åtgärd Info.

Kursplan Gränssnittsdesign och Webbutveckling 1 Vårtermin 2014

Hi-Fi Prototyping + laborationsgenomgång & verktyg

Mobila applikationer och trådlösa nät

Säkerhetskopiera mobilen

CMS, optimerade för programmerare Eller hur kan ett sådan skapas.

Dag König Developer Tools Specialist Microsoft Corporation

EXAMENSARBETE. Utveckling av en lättförvaltad mobilapplikation. Irina Malaya Filosofie kandidatexamen Systemvetenskap

SCRATCH är ett nytt programmeringsspråk som gör att du kan skapa dina egna interaktiv historier, animationer, spel, musik och konst.

Enterprise App Store. Sammi Khayer. Igor Stevstedt. Konsultchef mobila lösningar. Teknisk Lead mobila lösningar

Verktyg och Utvecklingsmiljö. Föreläsning 2 Eclipse

Android och iphone. Kalle Prorok April 2011

ToDo ios-applikation. Mikael Östman. Mikael Östman - mo22ez Linnéuniversitetet

Introduktion till migrering till molnet. PART 4: Plattformar för molntjänster

Webbteknik. Innehåll. Historisk återblick Teknisk beskrivning Märkspråk Standardisering Trender. En kort introduktion

QC i en organisation SAST

Klient/server. Översikt. Lektion 1: Webbtekniker från Microsoft. Webbteknik från Microsoft. Klient/server. Designmönster. Utrullning.

Calligra. En allmän inledning. Raphael Langerhorst Jost Schenck Översättare: Stefan Asserhäll

GN Hearing app - bruksanvisning

Trionas arbete med Skid-VM Appen Falun2015 Live Results. Håkan Blomgren Projektledare för Trionas arbete

Webbprogrammering TDDD52

Skissa och gissa. Individuellt Mjukvaruutvecklingsprojekt, 1DV430. Christian Nilsson, cn222gc, WP

Inledande programmering med C# (1DV402) Introduktion till C#

Från e-tjänster till appar? Mikael Söderström Institutionen för informatik Umeå universitet

Adobe Flash Professional CS6

ENKEL INTRODUKTIO Du kanske länge har funderat vad alla begrepp som Wifi, surfplatta och app står för, kanske detta dokument kan lösa dina problem.

Systembeskrivning. Inklusive beskrivning av klienterna. Juni Författare: Ted Björling, Accedo Broadband AB

SLUTRAPPORT WEBBPROJEKT 1

Professional Services. Linux Support Group (LSG)

TDP003 Projekt: Egna datormiljön

Redogörelse för utvecklingsprocessen av spelet The Legend of Chalmers

Konsultprofil. Per Norgren (1983) Arkitekt & webbutvecklare

Låt oss ta hand om din utveckling, medan du själv utvecklar ditt företag

Alla rättigheter till materialet reserverade Easec

Version Namn Datum Beskrivning 1.0 Förutsättningar Vitec Ekonomi 1.1 Marie Justering för krav på Windows Server

SKOLFS. På Skolverkets vägnar. GENERALDIREKTÖREN Enhetschef

Snabbstart för Novell Vibe Mobile

Office 365 Windows 10

DIG IN TO Nätverksadministration

Mobilt Efos och ny metod för stark autentisering

Utvärdering av distansmötesverktyg via Internet.

Varningssystem byggt på öppna källkodskomponenter Magnus Runesson SMHI

Guide för mobil utskrift och skanning för Brother iprint&scan (ios)

Datacentertjänster PaaS

SLUTRAPPORT: TEXAS HOLDEM 4 FRIENDS

App-klient för smartphones Power BI Arbetsflöde CRM Online Webb-klienten Dokumenthantering Molnet...

Kort version - Google Kalender för KullensPK

Med Leef Access 2.0 ökar du minneskapaciteten i din Android-telefon eller surfplatta och den är så liten att den får plats i din ficka.

Systemkrav WinServ II Edition Release 2 (R2)

Transkript:

mång Plattformsoberoende Applikationsutveckling för Smarta Mobiltelefoner Är en plattformsoberoende utvecklingsmiljö framtiden av mobil applikationsutveckling? Cross-Platform Application Development for Smartphones Is cross-platform development environment the future of mobile application development? EGHOGHO ILESO JOSEPH HEJDERUP Examensarbete Högskoleingenjörsprogrammet för datateknik CHALMERS TEKNISKA HÖGSKOLA Institutionen för data- och informationsteknik Göteborg 2012

Innehållet i detta häfte är skyddat enligt Lagen om upphovsrätt, 1960:729, och får inte reproduceras eller spridas i någon form utan medgivande av författarna. Förbudet gäller hela verket såväl som delar av verket och inkluderar lagring i elektroniska och magnetiska media, visning på bildskärm samt bandupptagning. Eghogho Ileso, Joseph Hejderup, Göteborg 2012 II

There is no programming language, no matter how structured, that will prevent programmers from making bad programs. -Larry Flon III

Abstract This thesis is a study of three established cross-platform development tools for smartphone applications. An evaluation has been conducted to examine whether these development tools can be serious contenders to the most common native development tools such as the Android SDK and XCode. Firstly, a research of the various cross-platform development tools was conducted to identify the top three contenders on the market. In order to evaluate the selected crossplatform development tools, three identical applications were developed for each cross-platform, and by this approach we gained an understanding of the capabilities of the particular development tool. This strategy makes it possible to verify if the internal resources in the smartphone, such as the camera, GPS, multimedia controllers for music could be utilized in the same way as in the native development environment without any compromise. The comparison of the chosen cross-platform development tools showed that they had a limited hardware support, poor prospects of debugging and the development process was often time-consuming. There were also some instances regarding some of the development tools, where the developed application worked fine for the Android platform but were not fully supported by ios and vice versa. The current crossplatform development tools had an overall lack of functionality, but the concept of cross-platforms have a great potential and are likely to be of great importance in application development in the near future. Key words: Cross platform, Titanium, Phonegap, Marmalade, MoSync, Corona, mobile application development IV

Sammanfattning Denna rapport är en sammanställning av en studie av tre etablerade plattformsoberoende utvecklingsmiljöer för mobilapplikationer. En utvärdering har genomförts för att undersöka om dessa utvecklingsmiljöer på allvar kan utmana de vanligaste nativa utvecklingsmiljöerna, Android SDK och XCode. En inventering av olika plattformsoberoende utvecklingsverktyg gjordes initialt för att finna de tre bästa utmanarna på marknaden. För att kunna utvärdera de valda plattformsoberoende utvecklingsmiljöerna har en identisk applikation skapats med varje utvecklingsverktyg och därigenom bildat en uppfattning av användarvänligheten hos den specifika utvecklingsmiljön och dess potential. Denna strategi gör det möjligt att kontrollera att de inbyggda resurserna i mobiltelefonen t.ex. kamera, GPS, start och stopp funktioner för musik kan fås att fungera. På samma sätt som i den nativa utvecklingsmiljön utan några kompromisser. Jämförelsen av de undersökta plattformsoberoende utvecklingsverktygen visade att dessa hade brister i hårdvarustödet, begränsade möjligheter till felsökning och utvecklingsprocessen var stundtals tidsödande. Det förekom även i vissa utvecklingsverktyg att applikationen fungerade bra i Android men inte fullt ut ios eller tvärtom. De plattformsoberoende utvecklingsverktygen hade genomgående bristande funktionalitet, men de har en stor utvecklingspotential och kommer sannolikt att ha en stor betydelse när det gäller applikationsutveckling i framtiden. Nyckelord: Cross plattform, Titanium, PhoneGap, Marmalade, MoSync, Corona, mobil applikationsutveckling V

Förord Denna rapport är ett examensarbete inom datateknik motsvarande 15 högskolepoäng. Examensarbetet har utförts vid institutionen för Data- och Informationsteknik, Chalmers Tekniska Högskola. Grundläggande kunskaper inom programmering och mobil applikationsutveckling underlättar förståelsen av rapporten. Vi vill tacka Spinit AB, som erbjudit oss detta högaktuella examensarbete samt generöst ställt upp med kunskaper och resurser. Vi vill också uttrycka vår stora tacksamhet till våra handledare Sakib Sistek och Bengt Nilsson som har stöttat oss under arbetets gång. Slutligen vill vi ge ett stort tack till våra familjer och studiekamrater som varit oss behjälpliga i vårt arbete. Göteborg juni 2012 Eghogho Ileso & Joseph Hejderup VI

Innehållsförteckning ABSTRACT SAMMANFATTNING FÖRORD IV V VI 1 INLEDNING 3 1.1 BAKGRUND 3 1.2 PROBLEM 3 1.3 SYFTE 4 1.4 AVGRÄNSNINGAR 4 2 METOD 5 3 TEKNISK BAKGRUND 6 3.1 MOBILA PLATTFORMAR 6 3.1.1 IOS 6 3.1.2 ANDROID 8 3.2 TEKNIKERNA BAKOM CROSS PLATTFORMS UTVECKLINGSVERKTYG 10 3.2.1 INTRODUKTION 10 3.2.2 JAVASCRIPT FRAMEWORKS 10 3.2.3 APP FACTORIES 10 3.2.4 WEB-TO-NATIVE WRAPPERS 10 3.2.5 RUNTIMES 12 3.2.6 SOURCE CODE TRANSLATORS 12 3.2.7 HTML5 12 3.3 URVAL AV CROSS PLATTFORMS VERKTYG 13 3.3.1 PHONEGAP (CORDOVA) MED JQUERY MOBILE 13 3.3.2 TITANIUM 14 3.3.3 MONO FOR ANDROID 15 3.3.4 MARMALADE 16 3.3.5 MOSYNC 17 3.3.6 CORONA (ANSCA MOBILE) 18 3.3.7 JÄMFÖRELSE AV CROSS PLATTFORMAR 19 4 GENOMFÖRANDE 20 4.1 SAMMANSTÄLLNING AV KRAVSPECIFICERING FÖR VAL AV CROSS PLATTFORMAR 20 4.1.1 INTRODUKTION 20 4.1.2 UNDERSÖKNING AV BESTÄLLARFÖRETAGETS VERKSAMHET 20 4.1.3 ANALYS AV ETABLERADE CROSS PLATTFORMAR 20 4.1.4 MOTIVERING TILL VAL AV CROSS PLATTFORMAR BASERAT PÅ KRAV 22 4.1.5 KORRIGERING UNDER UTVÄRDERINGEN 22 4.2 APPLIKATIONEN 23 4.2.1 KRAV 23 4.2.2 KONCEPTET DIGITALDIARY 23 4.2.3 USER STORIES 24 4.3 IMPLEMENTATION AV APPLIKATIONEN I VARJE CROSS PLATTFORM 25 4.3.1 STRUKTUR, LOGIK OCH GRAFISKA GRÄNSSNITTET 25 CHALMERS, Data- och informationsteknik, Examensarbete 2012 1

4.3.2 HÅRDVARA 27 5 RESULTAT 28 5.1 INTRODUKTION 28 5.2 RESULTAT AV IMPLEMENTERING AV APPLIKATIONEN I RESPEKTIVE CROSS PLATTFORM 28 5.2.1 DIARIES 28 5.2.2 NEW ENTRY 28 5.2.3 ENTRIES 29 5.2.4 DATALAGRING 29 5.3 UTVÄRDERING AV RESPEKTIVE CROSS PLATTFORM 29 5.3.1 APPCELERATOR TITANIUM 29 5.3.2 MONO FOR ANDROID 30 5.3.3 CORDOVA PHONEGAP OCH JQUERY MOBILE 31 6 DISKUSSION OCH SLUTSATS 32 6.1 ANALYS OCH DISKUSSION 32 6.2 SLUTSATS 33 6.3 KRITISK DISKUSSION 34 6.4 FORTSATT FORSKNING 35 7 KÄLLFÖRTECKNING 36 7.1 REFERENSER 36 7.2 BILDKÄLLOR 42 7.3 TABELLKÄLLOR 42 APPENDIX Appendix A: Ordlista. Appendix B: Källkoden till applikationen i Titanium. Appendix C: Källkoden till applikationen i Mono For Android. Appendix D: Källkoden till applikationen i PhoneGap. 2 CHALMERS, Data- och informationsteknik, Examensarbete 2012

1 INLEDNING 1.1 Bakgrund Efter lanseringen av Apples mobila operativsystem ios 2007 har marknaden för smartphones utvecklats kraftigt och har fått en växande betydelse inom handel, marknadsföring, kommunikation och multimedia. Man har med hjälp av smartphones skapat en ekonomiskt, allt viktigare marknadsplats. Apple har vuxit sig stark inom denna bransch genom sitt nytänkande, tilltalande design och bra teknik. På denna marknad har även Googles Android som lanserades 2008 vuxit sig stark och har erövrat marknadsandelar från Apple och börjar bli en jämbördig konkurrent. Applikationerna som finns att ladda ner har gjort mobiltelefonen till en konkurrent för datorn med sina mångsidiga funktionaliteter som går att bygga ut med ännu fler applikationer. Många företag av betydelse vill gärna ha sin egen applikation för att tillfredsställa marknaden, för att behålla sina kunder. Idag är dessa två mobila operativsystem de största aktörerna och Apples App Store tillhandahåller 540 000 respektive Google Play med 350 000 nedladdningsbara registrerade applikationer [1, 2, 3]. Denna situation har gjort att många applikationsutvecklare tvingats sig till att utveckla mobilapplikationer riktade mot en specifik plattform eller mot flera plattformar beroende på uppdragsgivarens önskemål. Utformning och utveckling av en funktionell mobilapplikation är en både tids- och resurskrävande uppgift som bland annat involverar utformning av grafiskt gränssnitt, skapandet av kravspecifikationer och säkerställning av dess funktionalitet. Utveckling av applikationer leder ofta till ett dubbelarbete eftersom möjligheten att återanvända befintlig källkod från en applikation för att portera den till andra mobila plattformar är i dagsläget begränsad. De viktigaste orsakerna till dessa begränsningar beror på de fundamentala skillnaderna mellan olika nativa utvecklingsmiljöer. Java används som programmeringsspråk för Android och Objective-C gäller för ios. En lösning på problemet som utvecklas i snabb takt är olika plattformsoberoende utvecklingsverktyg, även kallad cross plattform utvecklingsverktyg, vilket har skapat ett alternativ till de nativa utvecklingsmiljöer och där man kan skapa en applikation som kan exekveras på ett flertal mobilplattformar. Dock finns det för närvarande en stor skepsis till dessa utvecklingsverktyg och en del hävdar att det finns alltför stora brister och att applikationer utvecklade i dessa miljöer inte lever upp till samma användarupplevelse och prestanda i jämförelse med en nativ applikation [4, 5]. 1.2 Problem Finns det någon kraftfull universal utvecklingsmiljö som kan förenkla utvecklingen av applikationer samt portera dessa till flera mobila plattformar samtidigt? Går det att utnyttja mobilens interna resurser på samma sätt som vid användandet av en nativ utvecklingsmiljö? CHALMERS, Data- och informationsteknik, Examensarbete 2012 3

1.3 Syfte Syftet är att göra en evaluering utav etablerade plattformsoberende utvecklingsverktyg som finns på marknaden. Som bas för denna evaluering kommer en applikation att skapas för olika cross plattformar. Vi kommer undersöka om de olika plattformarna på allvar kan utmana de nativa utvecklingsmiljöerna. 1.4 Avgränsningar Endast tre cross plattforms utvecklingsverktyg kommer att evalueras. Detta för att kunna göra en kvalitativ evaluering under den begränsande tiden för examensarbetet. De utvecklade applikationerna kommer inte att jämföras med varandra utan fokus kommer att vara på utvecklingsmiljöerna. Moment ur utvecklingsprocessen som exempelvis användandet av versionshanteringssystem, skapandet av testfall kommer inte att ingå i studien. Målet med examensarbetet är inte att skapa kommersiella applikationer som kan lanseras. Mål plattformar som används i denna evaluering är ios och Android, andra plattformar som exempelvis Windows phone eller BlackBerry kommer inte att ingå i studien. 4 CHALMERS, Data- och informationsteknik, Examensarbete 2012

2 METOD Metodik av projekt utförandet: Arbetet har utförts iterativt med användning av den agila Scrum-metoden, där vi har haft täta avstämningar och en sprint varje vecka. Utformandet av kravspecifikationer för cross plattform utvecklingsverktyg: En intern undersökning har utförts hos beställarföretaget, för att identifiera vilka nuvarande utvecklingsverktyg och programmeringsspråk som utvecklarna i företaget använder sig av samt deras önskemål och krav. Detta är för att minimera risken att vi väljer ett crossplattforms utvecklingsverktyg som använder ett programmeringsspråk eller utvecklingsmiljö som deras anställda inte är bekanta med. Research om cross plattforms utvecklingsverktyg: Efter sammanställning, prioritering av kraven och önskemål har en mindre research utförts för att kartlägga några etablerade cross plattform utvecklingsverktyg. Utifrån detta har tre stycken cross plattforms utvecklingsverktyg valts som kan bäst uppfylla de ställda kraven. Efterforskning om fundamentala skillnader mellan Android och ios: En efterforskning har gjorts för att se skillnaderna vad gäller utvecklingsprocessen för nativa utvecklingsmiljöer. Applikationer skapade med cross plattforms utvecklingsverktyg: För att kunna evaluera ett utvecklingsverktyg anser vi att det är bäst att utveckla en applikation i denna miljö för att kunna få en förståelse av utvecklingsprocessen samt bristerna i utvecklingsmiljön. CHALMERS, Data- och informationsteknik, Examensarbete 2012 5

3 TEKNISK BAKGRUND 3.1 Mobila plattformar 3.1.1 ios 3.1.1.1 Introduktion ios är ett mobilt operativsystem som är speciellt utvecklat för Apples mobila produkter som exempelvis ipad, ipod touch och iphone. Deras vision är att skapa ett operativsystem som håller hög standard med en extraordinär användarupplevelse genom att förändra sättet vi tänker och använder mobila enheter [6]. 3.1.1.2 Operativsystem och utvecklingsmiljö ios är ett kraftfullt mobilt operativsystem baserat på Apples OS X, som är deras operativsystem för Mac enheter [6]. ios applikationer utvecklas i den officiella utvecklingsmiljön XCode, som i dagsläget enbart går att installera på Mac OS X. Utvecklingsmiljön erbjuder applikationsutvecklare ett flertal utvecklingsverktyg för design av användargränssnitt, felsökning och simulering av applikationer [14]. Dessutom finns det ett kraftfullt verktyg som kallas för Instruments som kan identifiera prestandaförluster och flaskhalsar i applikationen. Programmeringsspråket Objective-C används för utveckling av ios applikationer. Objective-C är baserat på standard ANSI C och är utformad för att ge C-språket objekt orienterade egenskaper [7]. 3.1.1.3 Distribution och kostnader ios applikationer distribueras och marknadsförs via Apples programbutik App Store. Applikationsutvecklare som är registrerade hos Apple har möjligt att använda denna tjänst mot att Apple tar 30 procent av intäkterna för varje såld applikation [8]. Apple har riktlinjer för vilka applikationer som tillåts i deras programbutik. För att inspektera att en applikation inte bryter mot deras överenskommelser görs en granskning på applikationen innan den lanseras på App Store [9]. För att bli en registrerad användare krävs det att man deltar i en så kallad ios developer program där det billigaste alternativet kostar i dagsläget 99 USD/år [10]. 3.1.1.4 Funktioner och restriktioner Apple tillhandahåller tjänster som är unika för deras plattform. Flera av dessa tjänster finns integrerat i officiella API: er och gör det mer attraktiv för utvecklare. Nedan är en beskrivning av ett urval av deras specifika tjänster [11]: icloud Storage: Denna moln -tjänst kan användas av utvecklare för att lagra dokument och annan data i molnet. 6 CHALMERS, Data- och informationsteknik, Examensarbete 2012

Notification Center (Push Notifications): Detta notifikations system kan enkelt användas tillsammans i egenutvecklade applikationer för att notifiera användaren när applikation körs i bakgrunden eller är avstängd. Game Center: Är ett social gaming nätverk som bland annat samlar statistik på användarens poäng och prestationer för spel som använder denna tjänst. ipod Library: Åtkomst till musikbiblioteket i applikationen. AirPlay: Möjliggör strömning av musik och video till en enhet som stödjer AirPlay. Tabellen nedan ger en kort översikt av funktioner som förövrigt erbjuds i diverse API: er. Datahantering Nätverk och Internet SQLite, Åtkomstmöjlighet till kontakter och foton, dock begränsad tillgång till kalender, XML-filer, delning av data mellan applikationer[12]. BSD Sockets, Bonjour för att hitta enheter, HTTP-strömning, stöd för att spara HTML5 offline data i webbläsaren Safari[13]. Grafik Klarar 2D och 3D rendering med tekniker som OpenGL ES och Quartz 2D [15]. Tabell 1: kort översikt av funktioner som förövrigt erbjuds i diverse API: er Apple har på vissa av sina API: er begräsningar på tjänster och enhets funktioner. Ett exempel är användningen av SMS i applikationen. Där tillåts det inte att ta emot SMS till applikationen utan enbart skicka SMS [16]. När det gäller Bluetooth funktionerna är dessa begränsade och få tjänster är tillåtna. Detta är främst för att förhindra fildelning mellan olika enheter. 3.1.1.5 Informationskällor (Dokumentation, Communities) Apple har sin utvecklardokumentation på ios development center, som är en webbplats med information rörande utveckling med ios, utvecklarlicenser, API: er, självstudiekurser och kodexempel. Det existerar ett flertal stora utvecklargrupper som använder olika communities och diverse forum som erbjuder utvecklare att studera små självstudiekurser och få hjälp med problem. 3.1.1.6 Versionshistorik Nedan är en sammanställning av de större mjukvaruuppdateringarna som Apple har lanserat. Den senaste versionen är ios 5.1.1 som lanserades den 7 maj 2012. Version Datum ios 1.0 29 Juni 2007 ios 2.0 11 Juli 2008 CHALMERS, Data- och informationsteknik, Examensarbete 2012 7

ios 3.0 17 Juni 2009 ios 4.0 21 Juni 2010 ios 5.0 12 Oktober 2011 Tabell 2: En sammanställning av de större mjukvaruuppdateringarna som Apple har lanserat. 3.1.2 Android 3.1.2.1 Introduktion Android är ett mobilt operativsystem som ägs av Google Inc. Android har med tiden vuxit fram som en stor konkurrent till Apples ios och erbjuder applikationsutvecklare en miljö som är helt kostnadsfri och byggt på öppen källkod [17, 18, 19]. Deras målsättning är att skapa en plattform som är fri för mobiloperatörer, tillverkare och andra aktörer att själva sätta gränserna [20]. 3.1.2.2 Utvecklingsmiljö & Operativsystem För att skapa en Android applikation måste man använda deras officiella SDK [21]. SDK: n innehåller dokumentation och verktyg såsom DDMS och enhetsemulator som används för felsökning och testning. SDK: n kan installeras på Linux, OS X och Windows. Google har ingen officiellt integrerat utvecklingsmiljö för Android dock så erbjuder de ett officiellt plugin till Eclipse [22]. Huvudsakligen programmeras applikationer med Java, men det finns möjligheter att delar av applikation kan utvecklas med C/C++ genom användning av deras officiella NDK [23]. 3.1.2.3 Distribution och kostnader Applikationer kan distribueras och marknadsföras på officiella programbutiken Google Play kostnadsfritt. En engångsavgift på 25 USD tas ut för att publicera applikationer [24]. Alternativa programbutiker existerar vid sidan av Google Play som exempelvis Amazon App Store for Android [25]. 3.1.2.4 Funktioner och restriktioner Google har ålagt sig att Android skall vara ett fritt OS där utvecklare och andra parter har fria händer[20]. Denna inriktning skiljer sig från Apple som hindrar inflytande av tredje parter i deras plattform. Tredje parter kan med Android skapa och definiera sina egna tjänster obehindrat. Den senaste versionen är Android 4.0 som även kallas för Ice Cream Sandwich. Nyheterna i denna version innehåller förbättringar som gjorts i vissa API: er, nedan är en kort beskrivning några utav dessa [26]. Text-to-speech API: Utvecklare kan utnyttja denna funktion för att läsa upp text i applikationen. WiFi Direct: Idén med WiFi direct är att kunna ansluta till en annan enhet direkt utan en internet förbindelse eller access punkt. Detta möjliggör för utvecklare att använda denna teknik för att överföra filer eller för exempelvis strömning av musik. 8 CHALMERS, Data- och informationsteknik, Examensarbete 2012

Restriktioner i API: er För närvarande finns det inga allmänna begränsningar av funktionalitet i de officiella API: erna. Dock finns det möjlighet för utvecklare att begränsa tjänster eller användning av interna resurser som exempelvis användning av kamera i applikationen. Detta fastställs i en fil som kallas för Android Manifest. Manifestet innehåller information om applikationen som Android systemet behöver veta innan applikationen kan exekveras [27]. Datahantering Shared preferences: Användas för att spara primitiv datatyper. Internal Storage: Enhetens interna minne, applikationsdata är privat och kan inte användas av andra applikationer eller tjänster. External Storage: Detta är det externa minnet som vanligtvis är SD-kortet. Applikationsdata som lagras här är inte skyddad och kan läsas och skrivas av andra applikationer eller tjänster. SQLite database: En enklare version av SQL och databasen finns internt i mobilen[28]. Nätverk och Internet Wi-Fi direct[27]. Grafik Stödjer 2D och 3D rendering och använder tekniker som exempelvis OpenGL ES[27]. Tabell 3: kort översikt av funktioner som förövrigt erbjuds i diverse API:er 3.1.2.5 Informationskällor (Dokumentation, Communities) Officiell dokumentation med API: er, självstudiekurser och kodexempel finns både tillgängligt på Android SDK och deras officiella webbplats på internet. Precis som för ios finns det väletablerade communities för att få rådgivning vid problem eller läsa mindre självstudiekurser. 3.1.2.6 Versionshistorik Nedan är översiktlig sammanställning av de släppta versionerna. Den nuvarande versionen är 4.0.4 som lanserades torsdagen den 29 Mars 2012. Version Namn Datum Android 1.0-23 September 2008 Android 1.6 Donut 15 September 2009 Android 2.0 Éclair 26 Oktober 2009 Android 2.3 Gingerbread 6 December 2010 Android 3.0 Honeycomb 22 Februari 2011 Android 4.0.1 Ice Cream Sandwich 19 oktober 2011 Tabell 4: En sammanställning av de större mjukvaruuppdateringarna som Android har lanserat. CHALMERS, Data- och informationsteknik, Examensarbete 2012 9

3.2 Teknikerna bakom cross plattforms utvecklingsverktyg 3.2.1 Introduktion Plattformsoberende utvecklingsverktyg bygger på många olika underliggande tekniker för att nå ut till andra målgrupper än den traditionella målgruppen som består av mjukvaruutvecklare. I boken Vision Mobile Cross-Platform Developer Tools beskrivs fem distinkta tekniker som används i etablerade verktyg. 3.2.2 JavaScript frameworks Ett Javascript framework är ett ramverk framtaget för att underlätta webbutvecklare att utnyttja egenutvecklade moduler som vanligtvis inte ingår i standard biblioteken [29]. I cross plattformar tillämpas detta för att skapa färdiga moduler som hanterar interaktionen i pekskärmar eller grafiska komponenter för att bygga ett gränssnitt som kan användas i flera mobila plattformar [30]. Exempel på cross plattformar som använder detta är JQuery Mobile och Sencha Touch. 3.2.3 App factories App factories är en teknik som är inriktat för personer som saknar programmeringskunskaper. Man skall med denna teknik enkelt kunna skapa enkla applikationer utan att behöva skriva en rad kod [30]. Exempel på ett utvecklingsverktyg är AppMakr. 3.2.4 Web-to-native wrappers Idén med denna teknik är att man skall kunna utnyttja webbteknologier såsom HTML5, CSS och JavaScript för att skapa applikationer och vid kompilering av källkoden skapas en körbar nativ applikation. Den nativa applikationen är ingen direkt översättning av webbkod till nativ kod utan man använder ett bibliotek som är en brygga mellan webbkoden och den underliggande nativa funktionalitet man vill ha åtkomst till [30]. Ett cross plattformsverktyg som bygger på denna teknik är PhoneGap. I Android implementeras en WebView i PhoneGap, som i princip är en webbläsare utan synliga navigationsknappar. Nedan är ett exempel av hur överbryggning ser ut för att få information om enhetens ID. Detta är hämtat ur källkoden för PhoneGap [31, 32]. 10 CHALMERS, Data- och informationsteknik, Examensarbete 2012

Figur 1: Java källkoden för PhoneGap. Figur 2: Javascript källkoden för device.js Som man ser i figur 2 anropas this.uuid = window.droidgap.getuuid() i JavaScript koden, som sedan anropar metoden getuuid i Java koden i figur 1. Applikationer skapade på detta viss kallas för Hybrida applikationer. Fördelarna med hybrida applikationer är att den kombinerar det bästa av två världar, nämligen att med webbapplikationer har man en större distributions bas och med nativa applikationer kan man utnyttja den underliggande funktionaliteten som inte är optimerat för mobila webbapplikationer [33]. Figuren nedan illustrerar skillnader mellan en webbapplikation och en hybridapplikation i en mobiltelefon. CHALMERS, Data- och informationsteknik, Examensarbete 2012 11

Figur 3: Sammansättning av webb- och hybridapplikation. 3.2.5 Runtimes En runtime enviroment är en körbar miljö som behövs för applikationer som kräver särskilt mjukvara för att kunna exekvera. Applikationer som kräver en runtime kan inte exekveras direkt i en nativ miljö[34]. Tekniken används i olika cross plattformar och har konstruerats så att delar av den skrivna programkoden skall översättas till byte kod vid design-time och vid run-time exekveras bytekoden[35]. Plattformar som bygger på denna teknik är Appcelerator Titanium och Xamarin [36]. 3.2.6 Source code translators Dessa lösningar bygger på att källkoden kompileras till byte kod, nativt programmeringsspråk (C++, Objective-C) eller till assembler direkt[35]. Denna teknik används i huvudsak för applikationer som kräver prestanda optimeringar och komplex logik[36]. Exempel på utvecklingsverktyg som använder källkods översättning är MoSync och Marmalade. 3.2.7 HTML5 HTML5 är den nya standarden för märkspråken HTML och XHTML. I dagsläget är den ingen officiell standard och ingen webbläsare har fullt stöd för HTML5. Man vill med HTML5 bland annat minska användning av plugins som exempelvis flash, förbättra fel hanteringen och göra den enhetsoberoende [39]. Förutom detta har man bland annat lagt till nya attributet och element som ger stöd för intern lagring, innehålls specifika element så som <article>, <footer>, <header>, <nav>, <section> [39]. HTML5 har hög popularitet bland webbutvecklare för att man inte behöver använda Adobe Flash som inte stöds i vissa mobila webbläsare som exempelvis Safari för ios [40]. Stödet för HTML5 i mobila webbläsare är varierande, där Firefox Mobile 10 och ios har bäst stöd medan Windows Phone 7.5 och Android 2.3 har sämst stöd. 12 CHALMERS, Data- och informationsteknik, Examensarbete 2012

En webbtjänst som poängsätter webbläsarens stöd för HTML5 är The HTML5 test och är ett testsystem som analyserar vilka HTML5 funktioner som finns implementerade i webbläsaren. Den maximala poängsättningen är 500 och poängen graderas beroende funktionens svårighetsgrad [41]. Nedan är en sammanställning av deras testresultat: Figur 4: Jämförelse av HTML5 stöd i olika mobila webbläsare. 3.3 Urval av cross plattforms verktyg 3.3.1 PhoneGap (Cordova) med JQuery Mobile 3.3.1.1 Introduktion PhoneGap är ett ramverk baserad på öppna webbteknologier. Idén är att man skall utveckla en applikation med nativ funktionalitet med hjälp av webbtekniker, som skall kunna köras på flera plattformar [42]. PhoneGap startades av företaget Nitobi och började som ett projekt på utvecklarevenemanget iphonedevcamp2008. Under detta evenemang har webbutvecklare samlats tillsammans för skapa nativa ios applikationer genom att använda olika webbteknologier. PhoneGap blev populärare och mer välkänt efter att ha vunnit Web 2.0 expo LaunchPad år 2009. Idag går PhoneGap under namnet Cordova efter att Adobe köpte Nitobi år 2011[43]. CHALMERS, Data- och informationsteknik, Examensarbete 2012 13

För närvarande stödjer PhoneGap ios, Android, Samsung Bada, BlackBerry, Symbian, Windows Phone 7 och HP webos. 3.3.1.2 Utvecklingsmiljö och verktyg PhoneGap fungerar mer som ett plug-in till de nativa utvecklingsmiljöerna. Detta innebär att man utan problem kan emulera applikationen med en nativ emulator. Dessvärre finns det begränsade möjligheter för felsökning och enhetstestning av applikationer, de nativa debuggnings verktygen går inte att använda fullt ut, utan man måste använda andra tekniker för detta [44]. För att skapa ett PhoneGap projekt går man tillväga på samma sätt som i ett nativt projekt [45]. Applikationer utvecklas med webbtekniker såsom HTML, CSS och JavaScript. Det tillkommer inga särskilda verktyg för PhoneGap utan på deras hemsida har de en lista på inofficiella verktyg som kan användas tillsammans med PhoneGap [46]. 3.3.1.3 Informationskällor (Dokumentation, communities) Officiella API: er, kodexempel och lathundar finns att tillgå från PhoneGaps hemsida. Det finns även officiella Google grupper, IRC, bloggar för att få hjälp och läsa små självstudiekurser. 3.3.1.4 JQuery Mobile JQuery Mobile är en pekskärm-optimerad webb ramverk för smartphones som är byggt på JQuery och HTML5. Detta ramverk ger utvecklare tillgång till moduler som hanterar olika pek-händelser och grafiska komponenter som är anpassat för mobila enheter [47]. 3.3.2 Titanium 3.3.2.1 Introduktion Titanium lanserades år 2008 av företaget Appcelerator. Denna cross plattformsverktyg är speciellt inriktat mot webbutvecklare. Titanium erbjuder en egen utvecklingsmiljö och använder JavaScript för utveckling av applikationer. I dagsläget stödjer Titanium ios, Android och snart BlackBerry. 3.3.2.2 Utvecklingsmiljö och verktyg Utvecklingsmiljön Titanium Studio med tillhörande Titanium SDK har en egen utvecklingsmiljö med de nativa emulatorerna integrerat. Utvecklingsmiljön är baserad på Eclipse IDE och skrivs med HTML, JavaScript och CSS och stöd finns även för PHP, Ruby och Python. SDK: n innehåller mer än 5000 API: er som bland annat ger åtkomst till nativa funktioner och komponenter till det grafiska gränssnittet [48, 49]. För enhetstestning finns det inget officiellt tillägg, dock exsisterar det ett flertal tredje parts tillägg som exempelvis verktyget titanium-jasmine [50]. 14 CHALMERS, Data- och informationsteknik, Examensarbete 2012

Titanium tillhandahåller en online butik där utvecklare kan sälja och marknadsföra speciella moduler för att lägga till extra funktionalitet som inte ingår i standard API: erna. Exempel på moduler som finns att ladda ner är PayPal som erbjuder betalningsmöjligheter[51]. 3.3.2.3 Utvecklaravgifter Titanium är fri att ladda ner och installera. Det finns även licenser för att få tillgång till extra funktioner och support via chat och telefon [52]. Exempel på extra funktioner är Analytics som samlar statistik på vilka funktioner i applikation används mest och hur väl applikation presenterar. I API:erna ingår inte ios tjänster som exempelvis Game Center eller Twitter integrering utan dessa finns att köpa som moduler i deras online butik. 3.3.2.4 Informationskällor (Dokumentation, communities) Officiell dokumentation med API: er, självstudiekurser och kodexempel finns på deras hemsida. Appcelerator erbjuder många videobaserade självstudiekurser för att komma igång med utveckling med JavaScript. Det finns även en officiell Community Questions and Answers för att ställa frågor eller läsa tidigare frågeställningar med svar. 3.3.3 Mono for Android 3.3.3.1 Introduktion Mono for Android eller MonoDroid lanserades år 2011 av Xamarin för utveckling av Android applikationer med C# och.net. År 2009 kom en ios-version vid namnet MonoTouch ut på marknaden. Båda verktygen är baserade på en öppen källkod version av Microsoft. NET runtime[53]. Utöver stöd för ios och Android finns även stöd Windows Phone 7. 3.3.3.2 Utvecklingsmiljö och verktyg Xamarin har både ett egenutvecklat utvecklingsmiljö som kallas för MonoDevelop IDE och en plug-in för Visual Studio. För både utvecklingsmiljön och plug-in: et används nativa emulatorer, stöd finns för felsökning med debugger och enhetstestning. Xcodes Interface Builder går även att använda för att skapa det grafiska gränssnittet i ios. Xamarin planerar att släppa en liknade verktyg under namnet Xamarin Designer framöver så att utvecklare kan på samma sätt som i Eclipse skapa grafiska gränssnitt till Android applikationer. MonoDevelop IDE fungerar att installera för både Windows och Mac. 3.3.3.3 Utvecklaravgifter Både MonoTouch och Mono for Android krävs en licens för att installera applikationen på en fysisk enhet under utveckling samt för att distribuera i de olika CHALMERS, Data- och informationsteknik, Examensarbete 2012 15

programbutikerna. Den billigaste licensen kostar 399 USD för ett år och det finns licenser för företag och privatpersoner. Det finns en utvärderingsversion som enbart tillåter att provköra applikationen på nativa emulatorer [54, 55]. 3.3.3.4 Informationskällor (Dokumentation, Communities) Xamarin tillhandhåller dokumentation i form av API: er, självstudiekurser och kodexempel. Utöver detta finns det information om hur man använder ios specifika tjänster som exempelvis icloud och den integrerade Twitter-tjänsten för ios 5 [56, 57]. I Android kan man enkelt tillgå information från Android communities utan att behöva vända sig till Xamarin. Strukturen och namngivning av metoder i både Mono for Android och den nativa är den samma. 3.3.4 Marmalade 3.3.4.1 Introduktion Marmalade är en cross plattform med fokus på ett brett plattformsstöd och stöd för utveckling av prestanda krävande applikationer [58]. Ursprungligen hette verktyget AirPlay SDK som släpptes år 2009. Företag som bland annat använder detta verktyg är Electronic Arts, Square Enix, Samsung, LG and RIM. Marmalade lockar främst till erfarna applikationsutvecklare som jobbar med komplexa applikationer[59]. Ideaworks har historiskt sätt alltid inriktats mot spelutvecklare och i Marmalade finns det bibliotek för hantering av 3D grafik, 2D/3D geometri och animationer [59]. Plattformen stödjer ios, Android, Bada, BlackBerry Playbook OS och LG Smart TV. Det finns begränsat stöd till Symbian i dagsläget. 3.3.4.2 Utvecklingsmiljö och verktyg Marmalade applikationer utvecklas med hjälp av utvecklingsmiljöerna Microsoft Visual Studio eller XCode via ett nedladdningsbart plugin [60]. Den innehåller bland annat emulatorer, ARM-debugger och UI designer [61]. Det finns även stöd för ios specifika tjänster så som Game Center, iad och notifieringar [62]. 16 CHALMERS, Data- och informationsteknik, Examensarbete 2012

3.3.4.3 Utvecklaravgifter Marmalade är inte kostnadsfritt utan kräver licens för användning. Det finns tre typer av licenser: Community, för hobby och semi professionella utvecklare [63]. Indie, för minde företag. Professional, för professionella utvecklare. 3.3.4.4 Informationskällor (Dokumentation, Communities) Marmalade har ett utvecklarnätverk där information rörande installationer, API: er, och vilken funktionalitet det finns för de olika plattformarna. Det finns även att få support och hjälp via ett officiellt forum [64]. 3.3.5 MoSync 3.3.5.1 Introduktion MoSync AB är ett svensk mjukvaruföretag som låter både webbutvecklare och mjukvaruutvecklare att skapa en applikation, med en kodbas som fungerar på flera plattformar [65]. Detta verktyg kan användas för att bygga HTML5 applikationer, hybrid applikationer, C/C++ applikationer och nativa applikationer. MoSync stödjer för närvarande Android, BlackBerry, ios, Java ME, Symbian, Windows Mobile och Windows phone. 3.3.5.2 Utvecklingsmiljö och verktyg MoSync har två utvecklingsverktyg: MoSync SDK och MoSync Reload. Det senare verktyget inriktar sig för webbutvecklare och bygger på samma koncept som PhoneGap fast med mer funktionalitet och tillgång till nativt gränssnitt [66]. Applikationerna utvecklas med HTML5 eller JavaScript och verktyget kan installeras i Linux, Mac eller Windows [67, 68]. I MoSync SDK ingår utvecklingsverktyget MoSync IDE som är baserad på Eclipse IDE. Utöver det som erbjuds i den ordinarie versionen av Eclipse, har MoSync integrerat funktioner som bland annat kan överföra applikationen via Bluetooth till en mobiltelefon[69]. MoSync erbjuder förutom användning av de nativa emulatorerna även en egen emulator vid namnet MoRE [70]. Det finns även möjlighet att integrera SDK: n i Visual Studio[70]. MoSync erbjuder även en unik teknik som möjliggör utvecklare att skriva funktioner med C/C++ kod och via ett bibliotek sedan anropa dessa funktioner i JavaScript. Denna teknik kallas Wormhole technology [71]. MoSync stödjer förvärvarande ios 3.0-4.3 och Android 1.5-2.3.3. De har inte stöd för populära ios specifika tjänster som icloud eller Game Center [72]. CHALMERS, Data- och informationsteknik, Examensarbete 2012 17

3.3.5.3 Utvecklaravgifter MoSync är en öppen källkods företag och erbjuder samtliga verktyg kostnadsfritt [73]. 3.3.5.4 Informationskällor (Dokumentation, Communities) Dokumentation med lathundar och kodexempel finns tillgänglig på deras hemsida [74]. Det finns ett officiellt forum för att ställa frågor och läsa andras frågeställningar. 3.3.6 Corona (Ansca Mobile) 3.3.6.1 Introduktion Corona är en cross plattform som är speciellt inriktad på spelutveckling. Corona SDK lanserades år 2009 av Ansca Mobile, ett företag som har en mångårigerfarenhet av både Adobe och Apple applikationer. Corona SDK är tänkt som ett alternativ till Adobe Flash [75]. 3.3.6.2 Utvecklingsmiljöer och verktyg Corona SDK erbjuder god felsöknings- och emuleringsmöjligheter. SDK: n innehåller egenutvecklade verktyg för bland annat simulering av både ios och Android applikationer och även felsökning [76]. Corona SDK är enbart en utvecklings kit och innehåller inte en fullständig utvecklingsmiljö. Det existerar tredje parts verktyg som exempelvis Corona Project Manager som kan användas som ett IDE tillsammans med Corona SDK [77]. Utvecklingsspråket är Lua och används för att skriva skripter i spel som exempelvis spelet World of Warcraft [78]. I API: erna finns det stöd för exempelvis animationer och fysikmotor som är användbart i spelutveckling. Dessutom finns det stöd i API: erna för Apple specifika tjänster som bland annat in-app purchase, icloud backup och Game center [79]. 3.3.6.3 Utvecklaravgifter Corona är inte kostnadsfri och det finns tre former av licenser att välja ifrån [80]. Indie ios only 199 USD/år Indie Android only 199 USD/år PRO, stödjer utveckling för båda plattformarna 349 USD/år Gemensamt för alla licenser så ingår det bland annat tillgång till speciella forum och distribution av applikationer i respektive nativ programbutik. 3.3.6.4 Informationskällor (Dokumentation, Communities) Ansca Mobile erbjuder API: er, allmän information, design mallar och videobaserade kurser för Corona SDK. Det finns även en officiell community där man kan ställa 18 CHALMERS, Data- och informationsteknik, Examensarbete 2012

frågor i forumet och även dela kod med andra användare [81]. Det exsisterar även ett flertal etablerade i communities. 3.3.7 Jämförelse av cross plattformar Nedan är en sammanfattning av alla cross-plattformar som ingår i detta kapitel: PhoneGap Titanium MonoTouch Marmalade MoSync Corona (Cordova) MonoDroid Företag Nitobi Appcelerator Novell Ideaworks3 MoSync Ansca mobile (uppköpt av Adobe år 2011) (Xamarin uppköpt år 2011) D Ltd. Grundat (år) 2008 2007 1979 1998 2004 2008 Lanseringsår 2008 2009 2009 2009 2011 2009 (Mono- Touch) Bakomliggan Web-to-native Runtime Runtime Source code Source code Runtime de tekniker wrappers translator translator Utvecklingssp HTML5, CSS, HTML5, CSS, C#,.NET C/C++ C++, HTML5, Lua råk JS JS CSS, JS Utvecklingsmiljö Titanium Studio Ordbehandlare Applikations format Webb utvecklingsverktyg/ordbe handlare hybrid applikation nativ, webboch hybrid applikationer Mono- Develop IDE/Visual Studio/ XCode Visual Studio/XCod e MoSync Reload/MoSync IDE/Visual Studio nativ nativ nativ/hybrid applikationer nativ Mål applikationer Distributions kostnad (min) Fulländade web applikationer Kostnadsfri Fulländade information och media applikationer Kostnadsfri (exkl. moduler) Applikatione r för företagsverksamhet 399 USD per plattform per år Spel inspirerade applikationer Komplexa applikationer Spel inspirerade applikationer 140 USD/år Kostnadsfri 199 USD per plattform per år Android JA JA JA JA JA JA ios JA JA JA JA JA JA Bada JA NEJ NEJ JA NEJ NEJ (Samsung) BlackBerry JA JA NEJ JA (QNX) NEJ (QNX) NEJ Symbian JA NEJ NEJ JA JA NEJ (Nokia) Windows JA NEJ NEJ NEJ JA NEJ Phone 7 WebOS (HP) NEJ NEJ NEJ NEJ NEJ NEJ Tabell 5: Fakta sammansättning av cross plattform verktygen. CHALMERS, Data- och informationsteknik, Examensarbete 2012 19

4 GENOMFÖRANDE 4.1 Sammanställning av kravspecificering för val av cross plattformar 4.1.1 Introduktion Examensarbetet togs fram av It-företaget Spinit AB som vill expandera sitt företag genom att skapa en ny avdelning för mobil applikationsutveckling. De har vid ett tidigare skede utvecklat en iphone applikation för en kund som har visat sig vara populär och företaget har fått en förfrågan av kunden att skapa en identisk applikation till Android. De inser att framtida kunder kommer att vilja ha applikationer för både ios och Android. Därav vill de att vi ska finna en cross plattforms verktyg som följer ordspråket write once, run everywhere. Detta verktyg skall även kunna skapa kommersiellt konkurrens kraftiga applikationer. 4.1.2 Undersökning av beställarföretagets verksamhet En undersökning har utförts av företagets verksamhet för att bilda en uppfattning om vilka programmeringsspråk och integrerade utvecklingsmiljöer som används. Detta skall vara en riktlinje för att välja ut cross plattformar som bäst överensstämmer med utvecklarnas kompetens och förväntningar. Undersökningen har genomförts genom att tala med utvecklarna i företaget. Nedan är en beskrivning av vilka programmeringsspråk och utvecklingsmiljöer företaget använder: Utvecklingsmiljöer: Microsoft Visual Studio(.NET) och Apple XCode Programmeringsspråk: Objective-C, Java, C#, HTML, CSS och HTML5 Det visade sig att företaget är Microsoft-inriktad och att majoriteten av utvecklare använder Visual Studio och särskilt med C#. Det finns ett starkt önskemål att kunna utveckla ios i Windows-miljö. 4.1.3 Analys av etablerade cross plattformar En analys av etablerade cross plattformar har gjorts för att skapa en uppfattning av vilka funktioner och övriga tjänster som finns. Analysen visade på att det finns ett större utbud av cross plattformar än förväntad och många riktade sig till fler målgrupper än den traditionella gruppen av mjukvaruutvecklare. För att minska urvalet behövdes det framställas krav för vilka cross plattformar som är lämpligast i denna rapport. För att skapa en uppfattning av vilka verktyg som skall finnas i en cross plattform har en undersökning gjorts i de nativa utvecklingsmiljöerna för att identifiera gemensamma verktyg och funktioner som finns i både ios och Android. Tabellen 20 CHALMERS, Data- och informationsteknik, Examensarbete 2012

nedan är sammanställning av de vanligaste tjänsterna som erbjuds i båda utvecklingsmiljöerna. Tjänster Android ios Emulering av applikationen Android Emulator ios Simulator Utvecklingsspråk Java Objective-C Verktyg för design av GUI Android UI Designer XCode Interface Builder Felsökningssystem Android DDMS GDB Debugger Test ramverk Flertal, både manuella och automatiska, exempel JUnit for Android och Robotium XCode Unit testning, testning för exceptions och även automatiskt UI testning i Instruments finns Tabell 6: sammanställning av de vanligaste tjänsterna som erbjuds i båda utvecklingsmiljöerna. Det visade sig att många utav cross plattformarna inte stödjer någon form av emulering av applikationen eller har något felsökningssystem. De etablerade cross plattformarna som stödjer dessa tjänster valdes att analysera vidare var följande: Marmalade, Corona SDK, Titanium, MoSync, PhoneGap, MonoTouch och Mono for Android. Nästa steg är att analysera dokumentationen för de utvalda plattformarna och vi har inriktat oss på stödet för underliggande funktionaliteten. Nedan är en sammanställning av de vanligaste förekommande enhetsspecifika funktioner i smarta mobiler som stöds eller inte stöds av de valde plattformarna. Marmalade Corona SDK Titanium MoSync Mono for Android PhoneGap Kamera JA JA JA JA JA JA Ljudinspelning JA JA JA JA JA JA Ljud uppspelning JA JA JA JA JA JA PIM Kontakter JA NEJ JA JA JA JA Bluetooth - NEJ NEJ JA JA NEJ GPS JA JA JA JA JA JA Accelerometer JA JA JA JA JA JA SMS JA JA JA JA JA NEJ CHALMERS, Data- och informationsteknik, Examensarbete 2012 21

Vibrator JA JA JA JA JA JA Tabell 7: Översikt av alla cross plattformars stöd till de enhetsspecifika funktionerna. Tabellen ovan visar att alla cross plattformarna har ett brett stöd till de enhetsspecifika funktionerna. 4.1.4 Motivering till val av cross plattformar baserat på krav Utifrån våra undersökningar valdes plattformarna Titanium, MoSync och Mono for Android. För att välja ut tre plattformar för utvärderingen valde vi att gå efter två tillvägagångssätt nämligen write once, run everywhere samt det andra sätt som innebär att man använder samma programmeringsspråk och utvecklingsmiljö. Både Titanium och MoSync bygger på write once, run everywhere medan Mono for Android bygger på det senare. Corona SDK var även en tänkbar kandidat istället för Titanium men Corona SDK är mer spelinriktad. Nedan är mer ingående motivering av plattformarna. Titanium: Beställarföretagets verksamhet är mycket inriktad mot webblösningar och majoriteten av utvecklarna är webbutvecklare. Titanium använder webbteknologier för kodning och har en stark dokumentation med många API: er och självstudiekurser. Vi anser att detta val skulle led till en naturlig övergång för deras webbutvecklare. MoSync: MoSync erbjuder en intressant lösning som möjliggör att mjukvaruutvecklare och webbutvecklare kan använda samma utvecklingsmiljö. Man har möjlighet att utveckla med både C/C++ eller webbtekniker. De har även utvecklat en speciell teknik som kallas för wormhole technologi där kan man använda funktioner i MoSync C/C++ biblioteken när det blir hinder vid användning av webbteknikerna. Mono for Android: Mono for Android skiljer sig från andra cross plattformar som inriktar sig på att skapa lösningar som bygger write once, run everywhere. De har istället valt att skapa en plattform som använder C# för utveckling av Android, ios och Windows Phone 7 dock utvecklas applikationen precis på samma sätt som i en nativmiljö. Xamarin erbjuder samma funktionalitet och tjänster som finns i de nativa API: erna. Gemensamt för ios, Android och Windows Phone 7 är att det finns standard bibliotek som kan användas för att skapa plattformsoberoende kod för logik och databas. 4.1.5 Korrigering under utvärderingen Vi valde efter kortare användning av MoSync att övergå till PhoneGap istället. Vi ansåg att utvecklingstiden av applikationen skulle ta längre tid än planerat eftersom inlärningskurvan är betydligt högre med MoSync. MoSync använder C/C++ vilket kräver en god förståelse om hantering av minnesläckor. Ett försök gjordes även med att använda den webbaserade MoSync Reload som använder HTML5, dock så upptäcktes det snabbt att vissa funktioner som exempelvis att byta färg på bakgrunden inte fungerade. 22 CHALMERS, Data- och informationsteknik, Examensarbete 2012

Vi valde att fortsätta med PhoneGap som ger fler valmöjligheter till design av användargränssnittet. PhoneGap är ett ramverk som endast tillhandahåller åtkomst till underliggande funktionalitet och har inga moduler för uppbyggnad av det grafiska gränssnittet. Det grafiska gränssnittet kan enkelt skapas själv. Ett flertal grafiska ramverk existerar med möjlighet till användning av speciella teman. Vi valde att använda JQuery Mobile för att man enkelt kan bygga robusta och användarvänliga mobilanpassade webbsidor. 4.2 Applikationen 4.2.1 Krav Att framställa rimliga krav kräver en god balans mellan vår disponerade tid och de aspekter vi vill undersöka. Målet med applikationen är att försöka hålla en kommersiell standard som följer den vanliga arbetsprocessen innefattande av design och user stories. Applikationen skall vara konstruerad så att den har en enkel och robust struktur som kan vara ett bra underlag till utvärderingen. Följande krav har fastställts: Det grafiska gränssnittet skall vara enkel och användarvänlig. Applikationen skall utnyttja kameran för bild tagning, ljudinspelning och GPS. Applikationen skall även kunna läsa och skriva till det interna eller externa lagringsmediet. 4.2.1.1 Grafiska gränssnittet Det grafiska gränssnittet skall ha en enkel utformning så att mer tid kan ägnas på den logiska delen av applikationen. Det grafiska gränssnittet kan vara ett nativt gränssnitt. 4.2.1.2 Underliggande funktionalitet Beställarföretaget vill att vi provar om kameran, ljudinspelning och GPS kan utnyttjas i applikationen. Detta är tänkbara funktioner som framtida kunder kan tänka sig använda i deras applikationer. 4.2.1.3 Utvecklingsprocessen Som nämnts i avgränsningen så kommer delmoment som exempelvis användning av versionshanteringssystem eller enhetstestning inte att ingå. Dessa moment är inte relevanta i undersökning och är utanför utvärderingens syfte. Applikationen skall utvecklas i både Windows- och Macmiljö för att se om det finns några skillnader eller begränsningar. Exempelvis kommer vi titta på om verktyg eller någon annan form av underlättande utvecklingstjänster saknas. 4.2.2 Konceptet DigitalDiary Idén är att skapa en enkel digital dagbok där användaren kan skriva ett inlägg i dagboken och lägga till ett foto, sin position och ett inspelat ljudklipp. Dagboken skall vara konfidentiell så att obehöriga inte kan få tillträdde till inläggen i mobilen. CHALMERS, Data- och informationsteknik, Examensarbete 2012 23

4.2.3 User stories Vattenfallsmetoden kräver att man skapar en detaljerad dokumentation med krav och testfall. Scrum metoden inriktar sig istället på att skapa enkla så kallade user stories, detta är olika händelser ur användarens synvinkel. Dessa är prioriterade efter relevans i fallande ordning. As a user I want to create new entry into one of my diaries. As a user I want to delete an entry so that I remove it from my diary As a user I want to access previous entries so that I can read old entries. As a user I want to play the sound recordings in every entry so that I can listen to previous recordings. As a user I want to use the built-in camera to take pictures so that I can added it to the current entry and also be able to view it. As a user I want to record my voice or sounds in my surrendering so that I can add it to the current entry and be able to listen to it later. As a user I want to use GeoLocation so that I can see locations I have visited or my current position. As a user I want to have several diaries so that I can have different categories of diaries or a new diary each year. As a user I want to create a diary so that I can add entries. As a user I want to delete a diary containing all my entries. As a user I want to have a great overview of my entries of each diary so that I easily can select an entry and read the content of it. As a user I want to edit previous entry so that I can add or remove information. As a user I want to have a calendar view so that I can select a date and view a summary of the entries made that day from all the diaries. As a user I want to login to my DigitalDiary so that I can access my entries with confidentiality. 24 CHALMERS, Data- och informationsteknik, Examensarbete 2012