Cross-platform vs native utvikling: Corona SDK

Mobilutviklere blir konfrontert med et duopol. Google og Apple-enheter står for mer enn 90% av smarttelefonmarkedet, men det er ingen klar vinner når det gjelder markedsandel. Hvis du vil få appen din i massenes hender, må du virkelig være på begge plattformene.

Hvis du har tid og ressurser, er den enkle løsningen å skrive to apper. Start på hvilken plattform du føler deg mest komfortabel med, og port (eller leie noen til å port) appen din til det andre operativsystemet. Men virkeligheten for de fleste indieutviklere er at de ikke har den nødvendige tiden eller ressursene. Selv store selskaper som har muligheten til å opprette to separate apper, er nølende med å gjøre det på grunn av mengden arbeid som kreves for å støtte og vedlikeholde to applikasjoner i løpet av et produkts levetid.

Heldigvis er det ikke det eneste alternativet å skrive en app for iOS og en annen for Android. Antall plattformteknologier og verktøy for mobile enheter øker med tanke på mengde og kvalitet.

Terminologi

Hvis du er ny på mobilområdet, kan du være nysgjerrig på forskjellen mellom en innfødt og en plattforms-tilnærming til mobile applikasjoner. Generelt betyr innebygd utvikling å bruke de plattformspesifikke verktøyene som er gitt for det mobile operativsystemet. For Android betyr dette normalt Java og Android SDK (programvareutviklingssett).

Tilnærmingsmåter for mobil plattformutvikling varierer veldig. Det er nett-apper som kjører inne i nettleseren (enten frittstående eller innebygd i en container for å etterligne et eget program). Det finnes også tilnærminger som inkluderer egen kjøretid, som den nå nedlagte Adobe Air. Og det er verktøy som lar deg skrive koden på et abstrakt skriptspråk, og deretter generere innfødt kode på kompileringstidspunktet.

Hver av disse utviklingsteknikkene har fordeler og ulemper. Mitt forslag er å prøve å nærme seg hvert prosjekt med et åpent sinn og gjøre ditt beste for å velge verktøyet som passer best for et bestemt scenario.

Bakgrunn

Jeg har skrevet en rekke Android-applikasjoner. De fleste av disse er kommersielle forretningsapplikasjoner i forskjellige vertikale markeder, og alle unntatt en ble opprettet som originale Android / Java-apper - unntaket er en webapp.

I fjor skrev jeg og ga ut et spill; det var også et eget Android / Java-program. Mens jeg var ganske fornøyd med sluttresultatet, hindret tanken på å starte utviklingsarbeidet mitt fra å gi ut en iOS-versjon. Da jeg begynte å jobbe med det andre spillet mitt (som skal ut senere i år), valgte jeg å flytte fra det opprinnelige Android-programmeringsmiljøet og bruke Corona SDK.

Corona SDK er en plattformteknologi som bruker Lua-skriptsett for å abstrahere applikasjonsutviklingen fra et spesifikt mobilt operativsystem. Applikasjonen kan testes på en simulator og deretter kompileres til native code for Android eller iOS. Det som følger er noen fordeler og ulemper jeg håper vil være av interesse for utviklere som vurderer Corona SDK for et kommende prosjekt.

observasjoner

Pros

  • Generelt krever det betydelig mindre kode å implementere en gitt funksjonalitet med Corona enn Java-ekvivalent. Spesielt er håndtering av REST-tjenester og OpenGL sterkt forenklet av Corona.
  • Corona-simulatoren kjører sirkler rundt Android-emulatoren Google sender med SDK-en. Det er veldig enkelt å skifte hud på Corona-simulatoren for å representere et bredt utvalg av Android- og iOS-enheter.
  • Corona skalerer grafikk strålende. Systemet som brukes av Corona for å velge den beste eiendelen for en bestemt enhet, så vel som dens evne til å automatisk skalere, virker mer intuitivt enn den opprinnelige Android-tilnærmingen, og det ser ut til å fungere bedre.
  • Å sette opp utviklingsmiljøet tar bare minutter, og det er mye mindre innviklet enn å installere Androids Eclipse / SDK / plugin-miljø.
  • En Corona-apps største fordel: Den samler for både iOS og Android.

Ulemper

  • Feilsøking av Corona-applikasjoner kan være smertefullt. Jeg har ikke funnet en god IDE eller debugger, og resultatet er feilsøking selv enkle problemer kan være kjedelige.
  • Luas løse syntaks er stygg. Selv en erfaren og disiplinert programmerer vil måtte jobbe veldig hardt for ikke å ende opp med spaghettikode. Coronas storyboard API hjelper når det kommer til organisering av koden, men sammenlignet med en strengt skrevet og scoped Java-applikasjon, etterlater det mye å være ønsket. Med Corona er det veldig enkelt å introdusere minnelekkasjer; pluss at det kan være en bjørn å finne disse lekkasjene.
  • Noen tilsynelatende enkle brukergrensesnittelementer har null eller rå støtte. Et godt eksempel er å dukke opp og bruke tastaturet på en enhet med et standardinntastingsfelt. Dette er en ganske vanlig forekomst for et stort antall applikasjoner, men likevel kan den begrensede støtten for dette i Corona resultere i et klønete eller ikke-standard brukergrensesnitt.
  • Coronas største ulempe: Googles Android SDK og Apples iOS-utviklingssett er gratis. Det er gratis utgave av Corona SDK, men du må virkelig ut $ 600 for Pro-versjonen for å få et komplett sett med funksjoner. Mer enn det, Corona jobber med en abonnementsmodell, så du må ta de $ 600-treff hvert år for å holde abonnementet ditt oppdatert.

Hvor annerledes er Corona-utvikling sammenlignet med egen Android-utvikling?

Nedenfor er eksempler på "hei verden" implementert ved bruk av Googles henholdsvis SDK og Corona. Det er imponerende hvor lite kode som kreves i Corona-versjonen. På samme tid ser den resulterende applikasjonen ikke spesielt ut som en Android eller en iOS-app; dette betyr at alt du gjør med Corona vil være mer eller mindre en tilpasset implementering. Hvis du vil at appen din skal ha utseendet og preget av de andre appene som følger med brukerens enhet, kan det hende at du sliter. Videre ignorerer Corona-apper i stor grad systemomfattende innstillinger som temaer og steder.

Native Android Hello World
 pakke com.authorwjf.helloworld; 
 import android.app.Aktivitet; 
 import android.os.Bundle; 
 import android.widget.TextView; 
 offentlig klasse HelloWorldActivity utvider aktivitet { 
 / ** Ringes når aktiviteten først opprettes. * / 
 @Overstyring 
 public void onCreate (Bundle savedInstanceState) { 
 super .onCreate (savedInstanceState); 
 TextView text = new TextView ( dette ); 
 text.setText ("Hello World!"); 
 setContentView (tekst); 
 } 
 } 
Corona SDK Hello World
 local myTextObject = display.newText ("Hallo verden!", 0, 0) 

konklusjoner

Corona SDK er et av mange plattformverktøy. Corona er tydelig målrettet mot spillutvikling og for det formålet har jeg vært fornøyd med det. Når det er sagt, etter å ha brukt den i flere måneder, anbefaler jeg den ikke for en tradisjonell forretningsapp (til tross for hva Corona-nettstedet hevder). Selv om det forenkler grafikkmanipulering, kompliserer det widget-tunge brukergrensesnitt.

Hva tror du?

Har du brukt Corona SDK? Hva med andre plattformverktøy for utvikling av mobile applikasjoner? Lyd av i diskusjonen nedenfor for å dele opplevelsene dine med andre utviklere.

© Copyright 2020 | mobilegn.com