Android-fragmentatie: Salesforce lost het radicaal op

Door: Raymon Mens - 8 reacties

Vorige week lieten we je zien hoe Facebook omgaat met Android-fragmentatie: 2000 smartphones semi-geautomatiseerd testen in een datacenter. CRM-aanbieder Salesforce toont aan dat het ook anders kan en komt met een radicale oplossing.

Het bedrijf heeft aangekondigd vanaf september alleen nog bepaalde Android-telefoons van Samsung en Nexus-toestellen die voor Google gemaakt worden te ondersteunen. De rest heeft pech.

Natuurlijk is nog een groot verschil tussen Facebook en Salesforce. Facebook leeft bij de gratie van zijn gebruikers en een goede gebruikservaring op zoveel mogelijk toestellen. Salesforce is een commerciële CRM-dienst met app die bedrijven kunnen gebruiken voor het beheer van klantrelaties.

Zes Android-smartphones

Salesforce beperkt de ondersteuning van zijn Salesforce1-app vanaf september tot de Samsung Galaxy S5, S6 en S7, de Galaxy Note S4 en Google Nexus 5X en Nexus 6P. Er worden vanaf dan ook nog maar twee Android-tablets ondersteund: de Galaxy Note 10.1 en Samsung Tab A 9.7. De iPhone wordt vanaf de 5s ondersteund en de iPad vanaf de iPad Air en iPad mini 4. Het bedrijf schrijft:

We are focusing our efforts on supporting the latest iOS devices to continue improving our overall Salesforce1 for iOS user experience. Due to the wide array of available Android devices, we are targeting our support to a select number of Android devices to continue improving our overall Salesforce1 for Android user experience.

Een beperking van deze omvang is interessant. De grote verscheidenheid aan Android-toestellen wordt over het algemeen gezien als een voordeel voor de gebruiker. In dit geval is het omgekeerd en heeft de eeuwige fragmentatie een negatieve connotatie voor gebruikers van toestellen die niet van Samsung of Google Nexus zijn.

Dit is wel een goede deal voor Samsung en in mindere mate Google. Samsung is al de belangrijkste speler in de Android-wereld, en een groot bedrijf als Salesforce dat zijn klanten Samsung- of Nexus-telefoons verplicht zal goed zijn voor de verkoopcijfers. Zeker als meer diensten het voorbeeld van Salesforce volgen.

android-fragmentatie-2015
Android-fragmentatie schematisch weergegeven (data: 08/2015)

Is de fragmentatie dan echt zó erg? Ja. Open Signal publiceert jaarlijks statistieken over de Android-apparaten die hun app gebruiken. In 2015 waren er 24.093 verschillende apparaten gespot. In 2014 waren het er nog 18.796 en in 2013 11.868. Het lijkt dus alleen maar problematischer te worden voor ontwikkelaars.

Reacties

8 reacties
  • Profielfoto
    KarelWillem

    Kort door de bocht, zal een groot aantal bedrijven dan zeggen dat Salesforce pech heeft, en dit bedrijf waar mogelijk uitfaseren.

  • Profielfoto
    Waffle ಠ_ಠ

    Maar waarom precies? Zijn ze te lui om die app die optimaliseren? Programmeren ze niet volgens de Android Developer Guidelines? Android kan apps net als iOS prima scalen. Je bouwt toch ook eigenlijk maar één app voor iOS-apparaten, die vervolgens op hele verschillende hardware gaat draaien? Sommige iPhones hebben maar 1GB aan RAM aan boord, anderen 2GB. Sommigen hebben een 4″ scherm met een resolutie van 1136 x 640, anderen 5.7″ met een 1920 x 1080 scherm. En iPads zijn nog anders. Maar toch draaien ze dezelfde apps.
    In Android doe je dat eigenlijk net zo, je bouwt één app en die draait dan op heel veel verschillende schermformaten, resoluties, processoren en hoeveelheden geheugen. Hier en daar zijn inderdaad incompatibiliteiten, maar die dienen dan gewoon opgelost te worden. Je kan in Google Play ook nog eens aangeven dat je bv. de vereiste hebt dat een telefoon minimaal 1GB aan RAM en Android 5.1 of hoger moet hebben als je de app wilt gebruiken. Helemaal optimaal is het niet nee, maar het moet geen excuus zijn om de telefoons van HTC, Sony of LG totaal niet te ondersteunen. Dat is gewoon hetzelfde als zeggen dat je programma niet op HP laptops werkt, maar wel op Dells en Lenovo’s. Zeg gewoon dat je geen volledige compatibiliteit kan garanderen en klaar. Ze zullen echt wel een goede reden hebben, maar toch.

  • Profielfoto
    ro_me

    Dit is inderdaad zeer kort door de bocht. Wellicht begrijpelijk gezien de auteur een Apple fan is, maar toch.
    De fragmentatie in Androidland is relatief. Stel je eens voor, dat iedere frabrikant zijn eigen OS zou hebben! Dan had je pas een probleem als ontwikkelaar. Met Android heb je gewoon keuze, maar toch nog een grote mate van uniformiteit.

  • Profielfoto
    Nummer 34

    Een beetje misleidende titel, oplossing? Er wordt feitelijk niets opgelost, achja, ik zou het opgeven onmiddellijk na de vraag.

    @Waffle, een developer die vanwege de Android-fragmentatie enkel iOS games released zou ik niet per direct lui noemen, de tegenpool-developer zou ik echter geschift noemen.
    Om enkele misvattingen op te lossen: iPhone- en iPod-apps zijn dezelfde, iPad heeft een aparte App Store. Je kan wel iPhone- en iPod-apps op je iPad runnen, zoals Snapchat bv., al worden ze dan gewoon erg lelijk geupscaled iPad-apps zijn niet beschikbaar op iPod touch en iPhone. Momenteel worden de meeste iOS-apps geoptimaliseerd voor de nieuwste modellen: de iPhone 6s en iPhone 6s Plus, deze beschikken over exact dezelfde displays als de iPhone 6 en de iPhone 6 Plus. Wat er dus vaak met 4″-modellen gebeurd is een downscaling, al kan je kiezen om deze alsnog te optimaliseren. Dat verschil in RAM-geheugen en CPU’s maakt geen verschil of extra werk voor de ontwikkelaar. Voor iPad-apps geldt min of meer hetzelfde. Momenteel hebben de iPad mini, iPad Air én de 9,7-inch iPad Pro dezelfde resolutie. De 12,9-inch iPad is de enige die geupscaled moet worden, of naar wens van de developer een verbreedde interface krijgt, best eenvoudig dus. RAM, CPU, GPU, OS… moet bij iOS-apps geen rekening mee worden gehouden, enkel schermformaten die op keuze van de developer automatisch kunnen gescaled worden. In principe heb je dus maar 2 versies nodig als je je app op alle mogelijke iOS devices wil laten runnen. Hoe het zit bij Android weet ik niet, ik ga er geen woorden aan vuil maken, ik wil nog wat van m’n woensdagavond hebben! Groetjes Helena.

  • Profielfoto
    Zakske

    De app van Salesforce heeft Android 4.4 of hoger nodig, en dat draait op bijna tachtig procent van alle Android smartphones. Het heeft weinig met fragmentatie te maken, maar meer met het gegeven dat Salesforce op Office lijkt; universeel gebruikt, maar 95% van de functionaliteit is overbodig / bloatware.

  • Profielfoto
    Waffle ಠ_ಠ

    Helena, je schrijft eigenlijk precies hetzelfde als wat ik hierboven al schreef. Voor iPads gebruik je alsnog dezelfde app binary, je bouwt er alleen een andere interface omheen. Die binary kan apart (beschikbaar) worden gemaakt voor iPads, maar je kan ook gewoon een universele app bouwen die on run de juiste interface selecteert.

    Verschil in processoren of RAM kan wel degelijk verschil maken voor developers. Op de iPhone hoef je je niet druk te maken om de processor, maar op Android krijg je de keuze of je je app op ARM of op x86 processoren wilt laten draaien, of allebei. Daartussen switchen hoeft niet moeilijk te zijn, al kan je je app uiteraard optimaliseren voor een bepaalde architectuur. Uiteraard is het gewoon good form om apps een zo klein mogelijk geheugenfootprint te geven, maar dat lukt niet altijd. Je kan er dan voor kiezen om een bepaalde (tamelijk zware) app alleen voor 1GB+ devices vrij te geven. Ga je bv. je hele Salesforce database lokaal cachen (weet ik veel), dan wil je gewoon wat meer werkruimte. Dat heeft weer grotendeels betrekking op Android development gezien er nog wel wat devices zijn die met 512MB aan RAM hun genoegen moeten doen.

    Op Android is het nog relatief simpel: je kiest een Android API level (~minimale OS versie, bijvoorbeeld 21 voor 5.0 Lollipop of hoger), schrijft je app, maakt een interface en maakt een aantal asserties op basis van wat je geprogrammeerd hebt, bv. of je app wel of niet een tablet UI aan boord heeft. En dan kan je nog wat maatregelen nemen om je UX te garanderen, zoals door bv. een minimale hoeveelheid RAM of bepaalde sensoren te vereisen (via Google Play). Bouw je een barometer app? Dan heeft het natuurlijk geen zin om die op devices zonder ingebouwde barometer te draaien. Dus vereis je een barometer waardoor niet-compatibele devices deze app niet kunnen downloaden. Moet dat echt? Nee, natuurlijk niet. Net als dat je op iOS bijvoorbeeld een app kan maken die Touch ID kan gebruiken, maar net zo goed een code acceptabel vind. Je hoeft je echt niet te gaan limiteren aan iPhone 5S+ toestellen.

    Je kan ook gebruik maken van proprietary APIs, zoals Samsung’s eigen vingerafdrukscanner API. Maar je kan ook gewoon je middelvinger naar Samsung gebruikers opsteken en de ingebouwde Android vingerafdrukscanner API gebruiken. Daar moet je gewoon zelf een keuze in maken. Het makkelijkst is om gewoon zo generiek mogelijk te ontwikkelen. Wat werkt werkt, en wat niet werkt neem je voor lief. Maar meestal werkt het toch wel.

  • Profielfoto
    Nummer 34

    @Waffle het is inderdaad zo dat een iPad-app exact dezelfde kan zijn, afgezien van het feit dat de interface anders is. De ontwikkelaar kan dus zelf een nieuwe maken als ie dat wenst en zoals je zegt, wat ik me trouwens juist herinner, kan dat zelfs automatisch geupscaled worden. Zo had ik in de week éénzelfde applicatiebestand in Xcode, die ik vervolgens op mijn iPhone had gezet als een test-app, even later vroeg ik me dus af of dit ook niet voor mijn iPad mini ging en ja hoor! Bij het maken van een Master-Detail application binnen Xcode, kan je gewoon iPhone of iPad selecteren, de app werd dan heel basic geupscaled. Ik kan me inbeelden dat dit niet prima werkt voor bepaalde soorten apps, maar voor een app zoals OMT zal wel prima lukken.
    Eerlijk gezegd ken ik amper iets van de overkant, ik kijk er namelijk erg tegenop me te verdiepen in Android dus daar zal ik verder weinig op kunnen zeggen… groetjes Helena!

  • Profielfoto
    Moos

    Het is een feit dat er bij Android van alles kan mis gaan. Je kan een identiek type toestel hebben met identiek dezelfde Android versie erop. Op het ene toestel werkt een app, op het andere niet. Wanneer je deze 2 toestellen terug zet naar fabrieksinstellingen en erin gaat kijken zitten in het ene toestel andere apps dan in het andere. Ook de prestaties zijn anders (ik vermoed door bloatware die een of andere provider erop heeft gezet waardoor hij meer informatie van je toestel mag halen die hij dan weer kan verder verkopen waardoor hij het toestel goedkoper kan verkopen).
    Wij moeten voor nogal wat toestellen aanpassingen maken omdat specifieke functies van onze app niet werken op bepaalde merken of types binnen 1 merk. Dat kost veel tijd en geld.
    Ik snap hen wel.
    Moos