Ep. 19 — Is Android app dev easier or harder than iOS app dev?

Billy Lo
2 min readJul 29, 2019

--

Image by StockSnap from Pixabay

If an iOS native app takes me 1 month to build, its Android equivalent would take ~1.5 months for me unfortunately.

Want to know why?

  1. Base SDK complexity: Google tries to add features quickly AND support old devices at the same time. The end result is a hard-to-use Android framework. e.g. the Toolbar class has 4 different flavors (android.widget, android.support.v4.widget, android.support.v7.widget, androidx.widget). Each has different compatibility with other things. With so many variations, coding on top of Android is much harder than iOS, even with more docs and samples on StackOverflow.
  2. Android devices are diverse: from circular watches, to foldable phones, to 21" giant tablets, to Chromebooks running Android apps. They have different camera capabilities and sensors availability. Developers need to fit a lot of concepts in their heads to write code that works on target devices and handles exceptions gracefully on unsupported devices.
  3. There are too many options to do similar things: Case in point… if you’d like to do work in background threads (all good apps do), you have the following options within the Android SDK: AsyncTask, DownloadManager, WorkManager, Foreground Service, IntentService, Service, AlarmManager, Handler and BroadcastReceiver. And then you have the Java APIs too: Executor/Futures/Callables, Runnable, Thread, CompletableFuture. iOS has several too, but not as crazy as Android.
  4. The platform and IDE is shifting very fast with breaking changes: Every time I see the notification Android Studio/Gradle has a new major upgrade, I cringe. Gradle, Android app’s main build system has gone from 2.0 to 5.5 in a short four years. androidx is another major re-architecture that brings on significant changes and migration pain. By comparison, Xcode and xcodebuild hasn’t created as much headaches in 10+ years.
  5. Abstract but important concepts in Android are harder to grasp, relatively speaking. I am still making mistakes on the proper usage of Intent, PendingIntent or Context after months of experimentation.

I prefer Android’s openness as a platform, so I sincerely hope Google would find ways to simplify things so developers can be more productive.

--

--

No responses yet