Some things are much more sane and well thought out than iOS. Styling and layouts, for example, are so much better than Interface Builder, which is pretty much just a toy for demos.
Other things like the way events are handled and some of the native widgets are clunky. Some of us are fed up enough with all the incidental complexity Apple puts in your way every day as a developer (provisioning, in particular), that we prefer to put up with Android's warts.
That said the native app market is feeling pretty saturated these days and I'm not sure that boning up on building responsive/progressive web apps isn't a better long term bet.
- No way to define reusable styles.
- No way to compose layouts out of other layouts.
- Trait classes are way too coarse to be useful.
- Versioning of Storyboards is a nightmare.
- Anything beyond trivial auto layout editing is useless.
- Segues force you into stringly-typed APIs.
- @IBDesignable is still super buggy.
I've been much much happier since I dumped it and started doing everything with SnapKit.
It's really not – I think you're working with outdated knowledge from several years ago. An "iPhone app" is one specifically built for iPhones. That's not the norm these days. Normally you would build an iOS app with universal storyboards that would work for both iPhones and iPads. Normally opening an iOS application on an iPad would result in a layout that works well for iPads.
Phone layouts automatically blowing up to a 10 inch screen and allowing developers to be lazy is not an advantage. The tablet apps on Android are still garbage after all these years.
Android vs. Web Apps is exactly where I was sitting on the fence, but then I just looked at the sheer number of Android devices out there, and it doesn't seem to be stopping!
If I understand you to mean I would be able to deploy to all types of devices with browsers or webkit, you're right.
There are more Android OS devices shipping and out there than all of the other OSs combined. By focusing on just Android, I can be assured it will look and perform more uniformly than the web app route. Even ART has closed the gap with NDK on some HPC or numerical use cases vs. the older Dalvik.
I don't like Java compared to other languages, even JavaScript ;) But it's not too bad, and Android documentation is great as well as the number of answers you can find on SE for any given question.
IB is ok for getting started but it will eventually hold you back. If you get to the point where you feel like you're fighting it as much as using it then look into doing your layouts in code with one of these libraries:
It may take a little getting used to but, especially for the kind of dynamic apps people want to build today, it will save you a lot of time and headaches in the end.
Also make sure you get your head around UIStackView. It's a little tricky to learn at first but makes a lot of common layout problems easier to solve.
As someone learning the basics of iOS development, I'd suggest you stick with IB. I get that most people either love it or hate it but there will never be a WYSIWYG editor that everyone will be happy with and there are ways it's lacking. But to call it a toy for demos is simply over the top. I've personally made pretty complex interfaces using iOS's auto layout using very little UI code.
Other things like the way events are handled and some of the native widgets are clunky. Some of us are fed up enough with all the incidental complexity Apple puts in your way every day as a developer (provisioning, in particular), that we prefer to put up with Android's warts.
That said the native app market is feeling pretty saturated these days and I'm not sure that boning up on building responsive/progressive web apps isn't a better long term bet.