Kan je dit toelichten?
Uiteraard.
- verplicht development op mac hardware
Complete non-issue. Mac's werken heerlijk en stabiel.
restrictieve apple store
Ook een non-issue. Enige wat vervelend is is de tijd die het duurt voor je app in de store staat. Restricties zijn alleen een probleem als je dubieuze dingen wilt doen.
geen toegang tot alle api's
Als je er geen toegang toe hebt is het ook geen API he.
De reden dat iOS mij meer vrijheden geeft:
• Tooling en documentatie is VEEL beter, echt onvergelijkbaar. Dit maakt het makkelijker je ideeën om te zetten in een werkende app.
• Veel beter ontworpen en stabielere API's. Google heeft nogal eens de neiging om veel eerder te zijn dan iOS met bepaalde features (widgets, veranderbare keyboards, copy-paste, etc.) maar als het er eenmaal is dan is het goed doordacht. Google gooit vaak een API die half-af is in versie X en dan in versie X+1 is het zo ver verbouwd dat je haast op nieuw kan beginnen.
• OS upgrades: doordat Android toestellen niet tot nauwelijks OS updates krijgen kan je de helft v/d features helemaal niet gebruiken als je significant deel v/d markt wilt bedienen. Leuk dat er allerlei nieuwe snufjes in Android 4.4 zitten maar als nog geen 18% v/d users op 4.4 zit hoe ga je dan aan je klant/sales/marketing/etc. uitleggen dat je 82% v/d potentiële klanten laat liggen ? In veel gevallen ontwikkelen we nog voor 2.3.3. Op iOS draait het grootste deel v/d users de nieuwste of een-na-nieuwste OS versie.
• Gerelateerd hieraan: hardware fragmentatie. Leuk dat jij een SGS5 hebt met 2GB RAM en 4 cores, etc. maar een groot deel v/d Android gebruikers loopt met en budget toestel rond dat gratis bij een goedkoop abbo was. Elke iPhone is in principe een high-end toestel waardoor je als developer veel meer vrijheden hebt dan op Android, gewoon om dat je geen rekening hoeft te houden met de low-end crap. De maximale heap-size is op bepaalde toestellen slechts 16MB. Kan je wel een SGS5 hebben met 2GB RAM maar als je apps rekening moeten houden met een toestel dat max. 16MB mag gebruiken...
• Google legt arbitraire beperkingen op aan apps, zoals de hierboven genoemde heap size limiet. Op een high-end toestel mag je misschien een keer 192MB RAM gebruiken, op low end kan het zo laag als 16MB zijn, iOS kent niet dit soort kunstmatige beperkingen. Een andere beperking is dat een app maximaal 65535 methods kan bevatten. Dat lijkt veel maar valt vies tegen. B.v. de Google Play Services library (die je min of meer altijd gebruikt) voegt al 10.000 methods toe. Tel wat extra libraries erbij die je nodig hebt om om te kunnen gaan met de verschillen tussen Android versies en het tikt al snel aan. Ook de maximale grootte van 50MB van een APK (en in de praktijk is het eerder 30MB) is een hele grote beperking.
• Dalvik is traaaag en buggy, daarnaast zijn er nogal wat veranderingen geweest in hoe het zich gedraagt tussen versies. (b.v. Bitmaps wel/niet op de heap).
• Alles op Android is of niet-af, of over-engineered. Om een voorbeeld te geven: het toevoegen van push-notificaties in een iOS app is een fluitje van een cent. Letterlijk een paar regels code en een paar checkboxes in XCode en het 'werkt gewoon'. Op Android is het een
kolere hoeveelheid werk. En direct een mooi voorbeeld van hoe Google dingen niet goed doordenkt voordat ze het implementeren, want er is een
eerdere, incompatible implementatie van hetzelfde idee (en als je die gebruikte kan je de boel dus weer ombouwen). Nu is de Android API wel flexibeler, maar voor 99,99% v/d gevallen heb je dat niet nodig maar heb je wel het extra werk. En dat geld voor heel veel API's in Android, je bent continue boilerplate code aan het schrijven omdat er een API is die heeeel uitgebreid en flexibel is maar waar je 99,999% v/d tijd die flexibiliteit niet nodig hebt en dan zit het alleen maar in de weg.
• Het is veel simpeler een gelikte UI te maken op iOS. Niet alleen omdat je niet hoeft te klooien met XML files maar gewoon een fatsoenlijke editor hebt maar ook omdat er gewoon veel makkelijkere API's zijn om dingen als animaties te regelen. Ook qua graphics zijn de API's op iOS veel makkelijker en krachtiger dan op Android.
• Elke scheet die je laat vereist een wijziging in de manifest file, bijna elke kleine aanpassing in je UI vereist dat je tot wel 5 XML files moet editen.
Waar het op neer komt is: op iOS kan ik gewoon lekker m'n idee uitwerken en omzetten in een app, op Android ben je veel tijd kwijt aan dingen die niet direct met de functionaliteit van je app te maken hebben. Je hoeft niet continue te denken 'gaat dit wel werken op toestel X'. Betere performance (geen VM) en voorspelbare hardware maakt dat je veel meer ruimte hebt qua rauwe performance. Geen rare garbage-collectors of arbitraire heap-size limieten maakt dat je gewoon makkelijker met je geheugen kan omgaan.
[Reactie gewijzigd door Aaargh! op 27 juli 2024 08:03]