I’m developing from 1996 on multiple platforms and on over 12 languages but it’s hard to find something worst than Android, starting with the best intentions it’s became one of the biggest fail in technology, many resources throw into the trash can…why? Simply analyze these points:
1) XCode wins in terms of speed, no plugins needed to do all you need it’s all embedded. If there is an error Xcode knows 99% of times where it is. Eclipse is heavy, slow, memory hungry, this is a fact, add a wysiwyg plugin for Android development which makes it slower, buggier as hell and you create the hell for a developer. Android Studio which is IntelliJIdea customized version is better and faster but still needs to grow (and i’m hoping Google wont’ change again creating/switching to another editor).
3) Testing: iOS simulator uses hardware resources so it’s not ideal for testing heavy apps but at least i don’t have to wait quite a minute until the android emulator starts, and if i have to configure another kind of device i have to create another new configuration, stop the current one, restart the emulator, wait: CAM’ON….
4) XCode Instruments: perfect for testing and performances/leaks/zombies on both simulator and device.
5) Resolutions: iOS: 3 retina resolutions and 2 not retina (with iOS7 only 1 not retina, 3gs will be gone)…Android: over 3000 devices (i’m not joking) every one with its own resolution, density, performances this need to buy many devices to test if your app really works on them. With iOS buy a iPod touch 4g and/or iPad 3 gen (for retina testing) and you are ready to test/deploy to the whole world.
6) API: Try to read the Android section about resolutions and you start asking WHY the hell you reached that page (“go there”,”ldpi”,”mdpi”, “better to avoid”, “unsupported”, “follow this link”, “deprecated”…) etc etc. Fragments are really fun, you have to use compatibility package to support older device, download it, modify your code to let this work for both 2.x and 4.x resolutions.
an example: MAPS
iOS : Drag and drop map component without need to read anything….DONE
Android: step 1 read:
- The API is now distributed as part of the Google Play services SDK, which you can download with the Android SDK Manager. To learn how to install the package, see Installing the Maps API SDK.
- Maps are now encapsulated in the
MapFragmentclass, an extension of Android’s
Fragmentclass. Now you can add a map as a piece of a larger
Activity. With a
MapFragmentobject, you can show a map by itself on smaller screens, such as mobile phones, or as a part of a more complex UI on larger-screen devices, such as tablets.
- Because maps are encapsulated in the
MapFragmentclass, you can implement them by extending the Android standard
Activityclass, rather than extending the
MapActivityused in version 1.step 2 )Read about fragments if you never didstep 3 Read http://developer.android.com/google/play-services/index.htmlstep 4) Read https://developers.google.com/maps/documentation/android/start#installing_the_google_maps_android_v2_apistep 5) Create develop certificatestep 6) Get API keystep 7) Download map componentsstep 8) Embedd in your appstep 9) Modify manifeststep 10) Test on device (on emulator doesn’t work)step 11) Create public certificatestep 12) PublishDo i need to say other?
7) Google play device compatibility…you publish and discover you cannot disable all the devices and enable only the one you tested on…YOU HAVE TO DISABLE BY HAND 3000 and over devices…or try to understand and fear the largestWidthLimitDp/requiresSmallestWidthDp/smallscreen/etc properties discovering that are only from api 13…
After 5 years of development every time i have to create a project and someone asks me about android i prefer to avoid with the exception of when developing with Unity3D, in the other cases it’s really the NIGHTMARE of every developer.
The Android team probably didn’t know how to address the developing from the beginning and year after year they try to correct all the errors, but now developers are handling a chimera, i’ve never seen from 1997 a huge EPIC FAIL in terms of API development, not even Microsoft did this in decades.
And if in your reply there is “it’s Java”,”it’s open source”, “it’s multiplatform” it’s only because you are still blind and don’t want to admit it: ask yourself on how many devices you deploy and test your application (testing on physical device), ask yourself why in the 2013 you are still trying to understand where the hell the gui XML is broken, ask youselft why you spend hours reading APIs to understand why your client tells about your app not working on a xyz device which has an android OS version compiled how they wanted, ask yourself why skilled developers create apps on less than a day on iOS while on Android you need at least three-four times the time. In the meantime i prefer to spend my time having fun thanks to the hours saved by Xcode/iOS.