Android vs iOS: hvilken plattform er best for utviklere
Makradar Av Teknologi / / December 19, 2019
Android vs iOS. Evige temaet for online kamper, som allerede har skikkelig all podnadoest. Ikke rush å passere teksten i artikkelen og umiddelbart gå videre til utgytelse av hans eneste riktige mening i kommentarfeltet. I dag skal vi snakke igjen om hvilket system som er bedre, men på en annen måte.
Utviklere - de som skaper en viktig del av alle plattformer, dvs. programmer. Det er kvaliteten på utviklingsverktøy, det gir en plattform avhenger det endelige resultatet. Så under hvilke system er bedre å skrive? Svar på dette spørsmålet en erfaren programutvikler, som måtte bli tent i App Store, og i Google Play.
Valget av plattform - et grunnleggende problem for eventuelle nye prosjekt. Android eller iOS? Gitt den siste nyheten om at Android har lyktes i å erobre 80% av markedet, blir valget enda vanskeligere. Det spiller ingen rolle hva ledere og andre ikke så kunnskapsrik med de tekniske aspektene av problemet folk tenker om det. En annen ting - utviklerne.
Hva er deres mening? Fordelen med dette, eller at plattformen er direkte avhengig av sin evne til å gjøre livet bedre.
Og "de" mener jeg "vår". I tillegg til forfatterens aktiviteter på Techcrunch, jeg utvikler seg i HappyFunCorp. Dessuten, ikke så lenge siden, jeg laget en duett opensorsnyh applikasjoner gjennom sitt prosjekt-pet. Det er disse programmene jeg bruker for sammenligning.
For ordens skyld: jeg tidligere måtte skrive noen Android og iOS-applikasjoner, både til eget bruk og for arbeid. Spesielt skrev jeg Mobile-klienten for nyheter aggregator ScanvineSom samler uvanlig populære historier fra sosiale medier. Kildekoden for min søknad finner du på Github (Android | iOS), Og programmene selv er tilgjengelig i Google Play og App Store.
Vel, la kampen begynne.
onsdag
Du kan fortsatt skrive kode i en teksteditor, og mange gjør så langt, men når det gjelder resultatene er mer anvendelig å bruke IDE (Integrated Development Environment - IDE).
I tilfelle av Apple, har vi Xcode, og arbeide i dette miljøet - nytelse. Den er fleksibel, rask, kraftig og i stand til å hjelpe, uten å bli altfor påtrengende. Og hun får bedre, til tross for de vanskelige og paranoide tiltak av Apple for å beholde full kontroll over iOS-applikasjoner og enheter. Debugger går greit, og simulering - rask og responsiv.
Hva med Android? Oh, Android. I øyeblikket, selve utviklingsmiljøet under den er Eclipse, en håndfull av Android tilpasset plug-ins, og det obscenely dårlig. Sakte, klønete, ulogisk, ofte ærlig uforståelig, dårlig utformet, for komplisert - en reell rot. Sin debugger er så upraktisk at mesteparten av tiden jeg bruker på fiksing og triksing med stokker, mens med Xcode i min besittelse et reelt verktøy-jeger bugs. Ikke glem om emulator Android, som først tar noen minutter å laste ned, og da han ikke kunne koble til ADB.
For å være rettferdig å si at Google er klar over dette problemet, og de jobber med en ny Android Studio IDE:
Foreløpig Android Studio er tilgjengelig som en tidlig forhåndsvisning. Noen funksjoner er kanskje ikke satt opp, eller ikke er implementert, som kan forårsake feil. Hvis bruken av det uferdige produktet forårsaker ubehag, så kan du laste ned og fortsette å bruke ADT Bundle (Eclipse plugin med ADT).
Hyggelig å se at de jobber med problemet, men likevel overraskende - etter fire og et halvt år etter kjøpet av min første Android lignende rot er fortsatt grensen av fullkommenhet, som var i stand til å oppnå et utviklingsmiljø Android.
Her slår iOS, betingelsesløst.
konfigurering
Under ferniss av Xcode og Objective-C er skjult redsler Lovecraft fra epoken med syttitallet programmering. Bare tuller, jeg tuller... men likevel. Makroer og header filer, prosjekter, mål, ordning og montering konfigurasjon, og skremmende, skremmende liste over forsamlingen parametre. og mer utrolige funn i stil med "Å, ikke tredjepartskode støtter ARC? Bare legg flagget -fno-objc-bue ». Bare? Nei!
I Android har du et manifest fil, og Eclipse er vanligvis helt gjenoppbygger app hver gang du holder en fil. Jeg ønsker større klarhet når du for eksempel, får du en feilmelding på grunn av det faktum at konfigurere regelen, men det er en mindre feil. Konfigurering av Android applikasjonen er enkel og elegant.
Her slår Android.
grensesnitt design
Det synes som om Apple er definitivt komme seirende. Med sin designer kan du enkelt og raskt bygge en enkel og hyggelig ser grensesnitt. Problemet er at jo lenger jeg jobbet med designeren, jo mindre jeg likte det. Dette er en annen tid når du åpne konfigurasjons kompleksitet - verktøyet er ideelt for å skape enkle ting, men med utviklingen av Søknad enkle ting plutselig blitt komplisert, og jeg virkelig ikke liker disse flerskjermsStoryBoards, som Apple har lagt om et år siden.
På Android, er teorien gitt sammenlignvisualiseringsverktøy, men i praksis du skrive XML-filerInneholder tegning instruksjoner som på et visst hell fører til en korrekt visning av programmet på alle forskjellige formater skjermer på Android-enheter. Apple beveger seg på samme måte, og deres auto Layout klart skjerpet for fremtidig utvidelse varianter skjermer på iOS-enheter.
Samtidig gir Android-utviklere ikonsettMens iOS utviklere er tvunget til å slå til tredjeparts tjenesterEller tegne dine egne ikoner.
I denne runden vinneren til å velge mer vanskelig, men jeg vil gi iOS preferanse for to grunner. For det første, er det fortsatt mye enklere - bare tre skjermstørrelse (inkludert iPad) og 2-format størrelsesforhold. Android mangfold i denne sammenheng legger kompleksitet. Det andre punktet er appellen for mislighold av visuelle elementer (pop-up menyer, meldinger og så videre). I iOS alt ser mye mer attraktivt.
Her slår iOS.
språk
Android-programmer er skrevet i Java, iOS - på Objective-C. Det finnes unntak som XamarinMen i de fleste tilfeller slik inndeling er gyldig.
Jeg lærte å skrive i Java, og først ikke spesielt tenkt på Objective-C, i stor grad på grunn av sin bulkiness.
En streng som:
String s2 = s1.replace ( "abc", "xyz");
Slår til ham i:
NSString * s2 = [s1 stringByReplacingOccurrencesOfString: @ "abc" withString: @ "xyz"];
Men i prosessen oppdage det språket jeg virkelig likte. Han er bedre og renere enn Java.
I dette tilfellet er det også argumenter for Java. For eksempel kan en enkel felle og sporfeil. De siste årene har Android vært en annen svært betydelig fordel i form av avfallsinnsamling, det vil si automatisk rensing av minne fra unødvendige objekter, men nå iOS vet det samme, og er faktisk en fordel kommer til intet. Gitt det faktum at den siste seieren går til iOS her.
Her slår iOS.
API
I Android og iOS har et stort bibliotek av programvare tilgjengelig for utviklere, og generelt sett, de er ganske like: API for drift av telefonfunksjoner og kommunikasjon, API for tilgang til nettverket, arsenal av seerne, inkludert kraftig WebView - nesten en klone av den fulle leseren.
Mesteparten av arbeidet er gjort med kontrollerne, og generell iOS ViewController tilsvarer Android aktivitet.
Som egentlig ikke har Android, fordi det er en full analog kjernedata rammeverk. I det hele tatt, er systemet renere og bedre utformet. For eksempel, bare sammenligne disseto klasse i iOS, som utfører det meste av arbeidet i søknaden, med dissetretilsvar klasser i Android. Til slutt, jeg mye foretrekker å arbeide med iOS CollectionViewControllerEnn med Android ListAdapter.
En annen viktig faktor: antall linjer med kode. Min versjon av programmet for begge plattformer er tilnærmet identiske i egenskaper og funksjoner, men i iOS for å implementere dem Det tok mine 1596 linjer med kode, inkludert header-filer, og for å skape den Android-versjon med de samme funksjonene som kreves 2109 rader. Forskjellen er 32%.
Her slår iOS.
Internett
I dag, de aller fleste applikasjoner er flere guider til Internett, i stedet for frittstående programmer. Dette er et svært viktig poeng, og det bør vurderes separat. I arsenal av begge systemene har en rekke verktøy og API for gjennomføring av samarbeid med Network. Også begge plattformer gjennomføre tilnærmet fullverdig nettleser, som kan bygges inn i app som du liker og hvor du går.
Tilkoblingene må kjøre i bakgrunnen og ikke forstyrrer selve programmet. Å implementere multithreading i Android brukes AsyncTask. Det fungerer veldig bra og gir enkel bestemmeOm brukeren er på nettet for øyeblikket. iOS tilbyr også lignende evner, men de er implementert på et relativt lavt nivå, og ikke møte behovene til utviklere.
Men det er mange tredjeparts biblioteker, åpen kildekode, og de gjør livet mye enklere. Jeg brukte AFNetworking, og det fungerer like godt som det er referert til i annonsen.
Her slår standard Android og iOS ved hjelp av tredjeparts biblioteker.
deling
Hvor enkelt du dele noen av de spesielle programmet i Facebook, Twitter, Evernote, og andre tjenester? Det synes at dette vil være den første runden hvor Android vil vinne 100% knockout: den har en kraftig system for samhandling mellom applikasjoner kalt hensikter, og i alminnelighet er Android mye mer lojalitet til anmodningen og overføring av data mellom applikasjoner.
Generelt har Apple tatt opp betydelig konkurrent i sharinga muligheter. Du kan ikke ta mitt ord, sjekk funksjonskoden "Del story" i Scanvine på Android og iOS. Den eneste grunnen til at iOS koden mer - tilstedeværelsen i det av en mer fleksibel sporing av Google Analytics, snarere enn i Android.
Deretter tegne.
fragmentering
Da trenger jeg ikke å si mye. Imidlertid er Google prøver å bruke interessant defragmentering strategiSlik at i løpet av kort tid elementet vil være re-undersøkt.
Her slår iOS.
publisering av søknaden
Publisering av Android-programmer er svært enkel. Verktøy i Eclipse kan du raskt bygge programmet, og i hendene allerede har en apk fil. Send det inn til en e-post, legger ut på nettet, eller laste ned på Google Play, noe som gjør det tilgjengelig over (nesten) hele verden i løpet av en time. Da blir det mulig å overvåke installasjoner statistikk og krasjrapporter opp til en bestemt linje med kode, på grunn som søknaden krasjer. Hvis det er nødvendig, kan du oppdatere å rulle ut umiddelbart.
Publisering i App Store - det er et mareritt. Min venn råder til å bevilge til utvikling av kalenderen minst en dag på krigen med sertifikater og distribusjons profiler. Uansett hvor mange ganger du har gjort det før, og hvor mye enklere det er å prøve å gjøre prosessen med neste versjon av Xcode - vil du fortsatt være mange problemer. Applikasjonstesting blir enda mer av et problem, med mindre du bruker TestFlight. Legg til dette iTunes Connect, som ikke gå til noen sammenligning med Google Play Developer Console.
Her slår Android, betingelsesløst.
vinneren
Det blir iOS, dessuten med en viss margin. Vi har fordelene av Android, men generelt å skrive en god søknad for iOS er fortsatt mye enklere enn etter Android. Legg til dette det faktum at iOS-brukere mer enn soliditet, og du får et svar på spørsmålet om hvilken plattform bør være en prioritet for en oppstart. Sannsynligvis vil gapet bli redusert etter utgivelsen av Android Studio, og dermed gir for å løse noen problemer... men ikke alle.
Forresten, min viktigste telefonen - er Nexus 4, og jeg veldig fornøyd.
(via)