Byggde min app Studyfocus med phonegap förut. Valet föll på phonegap trots att jag hade läst ett flertal artiklar från människor som använt phonegap och sagt att de inte uppfyllde deras krav, blev inte lika responsivt (laggit), blev inte lika bra. De tog ofta facebook appen som exempel hur den först hade i snitt 3 stjärnor när den var gjord i HTML och hur den gick till 5 stjärnor när de gjorde den native. Jag tyckte hur som helst att deras argument var lite svaga, tänkte att om man är lite smart och använder hårdvaruaccelerade animationer och använder mindre JS bibliotek som QuoJS istället för jQuery så skulle allt bli bra. Jag behövde inte häller så många native funktioner.
Men när man väl börjar koda sen märker man ganska snabbt att du inte kan få till lika smooth animationer. Att till exempel göra en meny som är på vänster kanten som man kan swipa fram blir mycket svårare med CSS+JS än med ren java/object-c. Dessutom så kan du inte göra så att man tar tag i menyn och att man bokstavligen drar menyn och sen när man släpper så glider resten fram på ett snyggt sätt. Att med JS/CSS låta menyn följa användarens finger går inte, det laggar. Speciellt på lite äldre telefoner. Så det man gör som kompromiss är att användare swipar fram menyn och sen låter animerar du fram den med CSS. Det blir smooth, men det är svårt att få till en naturlig känsla på det.
Sen så tar det lång tid att utveckla med cordova. Varje gång du ändrar någon javascript kod som måste testat på mobilen så måste du först kompilera allting och sedan i eclipse trycka på "run" för att få över appen till din mobil men innan dess börjar eclipse också kompilera om appen. Sen måste appen startas upp på mobilen vilket tar tid. Cordova ska egentligen föra över appen automatiskt men det funkade aldrig för mig. Hade ett till problem med cordova där det inte funkade att uppdatera plugins utan att först ta bort dem och sen lägga till dem igen. Och från början funkade inte ens cordova kommandot (hade cordova installerat på typ C: och min kod på X: och då fuckade något upp, tog lite tid att fixa det problemet, men pushade till deras .git och de har nu lagt in fixen).
Sen kommer du i slut ändan märka att du ändå behöver skriva någon native kod som gör något som du inte tänkt på. Tex starta upp appen vid vissa tidpunkter, ändra någon inställning eller något. Finns en del plugins till cordova men inte så många. Så du får då skriva ett plugin själv vilket inte är jätte jobbigt men hela tanken var ju att komma bort från java/object-c.
Sen blir UI:n svåra att göra så att de ser lika dana ut som native, så man gör istället helt tvärt om. Men då får man uppfinna allt på nytt, så som popup rutor, gömda menyer, long press, vad som händer när man trycker på meny knappen osv.
Det värsta var att det tog så lång tid att avinstallera cordova plugins, installera på nytt, kompilera, kompilera igen i eclipse och sen installera appen och starta upp. Ofc så automatiserade jag detta men tar ändå +30 sekunder. För varje lite ändring. Är enorm skillnad mot webbutveckling där du skriver kod, ctrl+s, alt+tab, f5, klart.
Finns en hel del artiklar på smashingmagazine om du vill veta mer. Kommer inte ihåg vad de hetta men kolla runt här:
http://www.smashingmagazine.com/tag/apps/page/3/