Perché è 10 volte più difficile sviluppare su iOS che su Android?
Se qualcuno vi ha detto così, allora ovviamente ha mentito.
Perché dovrei dire una cosa del genere? Sia Android che iOS, per quanto mi riguarda, hanno la stessa quantità di complessità e sono molto simili in molti modi. Non dovete preoccuparvi che uno sia 10 volte (molto esagerato) più difficile dell'altro.
Vorrei dimostrare questo creando una UITableView in iOS e una RecyclerView in Android. Ho scelto queste per la dimostrazione perché sono usate in quasi tutte le app in un modo o nell'altro.
UITableView in iOS:
Fai la tua classe Model:
Fai la tua UITableViewCell, questa è la tua View:
Crea il tuo Controller, che è l'UIViewController
Ricerca i dati da un server, ho usato Firebase per questo, e ho scritto il codice nella classe Controller. Avrei potuto usare una classe diversa per questo, ma per questa piccola anteprima, funziona anche questa.
Storyboard:
Il risultato è stato questo:
Ora, posso fare la stessa cosa in Android
La classe Model:
L'Adapter che è usato per fornire la RecyclerView
Il layout della cella appare come segue:
Come avrete notato (se avete letto il codice), c'è un riferimento a una classe chiamata Commons. È una classe che uso per fare alcuni compiti di base. Per questo progetto, i Commons assomigliano a :
E infine, l'attività è stata fatta come segue:
E l'xml dell'attività assomiglia a:
E il risultato che si ottiene è molto simile a quello che abbiamo ottenuto in iOS:
Non si tratta solo del risultato, la complessità di implementazione è più o meno allo stesso livello e non c'è motivo di incolpare che uno sia 10 volte più difficile dell'altro. Non ha senso fare un'affermazione del genere.
E ora, dato che la domanda riguarda la difficoltà di implementare l'AutoLayout (che in realtà è piuttosto facile), implementerò due layout abbastanza difficili sia in Android che in iOS.
Questo è l'aspetto dei vincoli nello Storyboard:
Non pretendo che questo sia un modo favorevole per implementare l'Auto Layout in un'applicazione di produzione dove il contenuto è molto dinamico. L'approccio utilizzato per affrontare un tale layout è completamente diverso.
Questo è il layout XML in Android:
E l'output finale di entrambi i layout Android e iOS è il seguente:
Quindi, se credete che ci sia un problema con lo sviluppo iOS e AutoLayout in particolare, posso informarvi con piacere che vi sbagliate.
Vorrei anche affrontare qualcosa che Valerio Cietto ha detto nella sezione commenti.
I pixel indipendenti dalla densità non funzionano davvero nel modo in cui Google pubblicizza che funzionino. È ancora una misura indipendente dalla densità e rende la creazione del layout in Android molto più facile.
Ma,
Entrambi i FrameLayout colorati in grigio scuro sono di 300dp di larghezza e 50 dp di altezza. Sì, questo è un caso estremo, ma ci sono ancora sottili differenze se si dà la larghezza e l'altezza di una vista in misure dp. che non è come Google vuole che tu li usi. Ammetto che avere misure dp con cui lavorare rende il compito molto più semplice quando si tratta di design di icone di sistema e molte altre cose.
Su come gli eventi touch sono gestiti in iOS e Android:
iOS:
I tre metodi usati qui sono,
- IBAction usando il drag and drop per il Button One
- Usando addTarget per Button Two
- Usando un TapGestureRecognizer per la pink View.
dove Android usa:
- Aggiungi un OnClickListener per la tua TexView, Button, etc
- Aggiungendo un onClick alla tua View/Button, etc nell'XML e implementando lo stesso metodo che hai specificato nell'XML, nell'Activity padre. Questo usa una View come parametro, che è la classe madre di tutto ciò che si potrebbe usare nell'XML.
Ancora, non vedo un cambiamento drastico in nessuno dei due.
Disclaimer: Tutte le immagini (esclusi i codici) usate in questa risposta sono immagini di dominio pubblico da pixabay.com, tranne la foto di Hyderabad. Non so a chi appartenga quella foto.
Tutti i codici usati nella risposta sono stati scritti da me per rispondere a questa domanda.
Articoli simili
- Confronto dei costi di sviluppo dei giochi: iOS, Android, DS, PSP. Perché è più economico sviluppare su iOS?
- Quanto è difficile sviluppare con successo un'app Android o iOS e fare soldi con essa?
- È possibile sviluppare un'applicazione mobile per iOS e Android che possa scansionare più codici QR allo stesso tempo e memorizzare il valore?
- Sony sta facendo con la PlayStation 5 un errore simile a quello che ha fatto con la PS3, rendendo la sua console più difficile da sviluppare?