Despite how great Android development is and how much I enjoy it over any other platforms – it has few things that I hate. Pretty sure everybody here will agree on those
I’m going to talk about mainstream Android development environment – Android Studio with Java/Kotlin and Gradle
Build times are really horrible. I have 8 GB of RAM, i5, HDD and code both on Linux and Windows. Windows performs actually better I think
Initial builds ~ 1.5 – 2 minutes, incremental of 1 minute. But with every build system gets slower and slower. Then you come to the point where just incremental build takes 5 – 7 minutes and by that time system is dead, I mean OS doesn’t respond to anything, you just wait for build to complete. Plus after such a long build I actually forget about what I wrote and what to test
And this happens not after 100 builds, just about after 20. Restarting system helps a bit
I’m not the kind of guy who can just write code for hours and then just click build button and get everything working. I get so many bugs during development, that I need to build almost every minute when building layouts or debugging and fixing bugs
Most of the times you get this error with exact particular reason message, like
this attribute has different value in other manifest, so add tools:replace
But I think with Instant run there’s a new bug. This manifest merger error doesn’t give you any reasoning message. It could even happen during just few incremental builds. And you keep looking maybe for some manifest error that you made or maybe new library’s manifest that you added
Fortunately in most cases it resolves with just cleaning build. But it’s a pretty confusing error message and I recently got it during branch merging, besides multiple merge conflicts – I got this one, so it was total hell, which took me few hours to fix
I use Data Binding everywhere and enjoy it very much, but error messages it gives are just amazing. It take print you 25-40 error messages, depending on number of layouts with <layout/>. You’ll get an error for each of them
Just some meaningless messages like: “Could not find MyActivityLayoutBinding class” or something. It happens during layout building most of the time and it’s very confusing, like
Ok, I get it, it’s a layout error, but I have 50 of them, do I need to go through every of them?
Luckily, I think I figured how to get to the actual source of the problem – you need to scroll to the very bottom of all those numerous meaningless error messages, the last one usually is an actual message. Like wrong Data Binding statement or if you declared your own Binding Adapters – attribute not found or any other one
In everything else – Android development is really enjoyable. I will create few posts like Android development vs JS front end vs iOS
Java or Kotlin are both static types compiled languages which makes Android development already great. Plus Google have great docs, if you look at Apple documentation – it looks like 8 years old
And if you ever tried to publish an app to App Store – those 5 – 8 minutes of building release Android apk and then uploading it to Play Store is F-1 fast compare to iOS experience
It takes 1 hour+ to just build release and upload it to Itunes Connect and then it needs to be verified by Apple team, which takes multiple days as well
Tell me about things that you hate about Android development as well!
Formerly an Android developer, lately picked up some Flutter. This blog is everything that I find exciting about Android and Flutter development. Stay tuned and hope to see you again!