in Android App Development, Android Security, Best Practices

Building Android Apps: 10 Things Learned the Hard Way

Apps, apps, apps! When you’re thinking of building one, it’s natural to feel a tearing sense of urgency and the need to get as creative as you can. In the rush to create our next masterpiece, though, we forget how our decisions (or lack of) will impact the end user. If we’re not careful, things can go south pretty easily, as some app developers learned the hard way.

In this post, we present ten real-world lessons in Android development that app developers learned after a long time and with dire consequences. We urge you to follow these nuggets of wisdom and get more value out of your efforts (not to mention, make your users curse less.)

#1 Don’t use sounds

Seriously, just don’t. Unless you’re making a game. And even then, try not to play a sound every time a control is hit. But back to the main idea: sounds are distracting, and frankly, irritating. Does your favorite browser make sounds? Imagine how your life would be if every time you hit “Back” you heard a ding and every time you scrolled you heard a crisp, grating sound of stone wheels turning in a granite valley. We fully understand and admire the passion you have for your cute little app, but sounds are not the way to go. Limit sounds to notifications and exceptional circumstances; but if you really want our opinion, you can skip them here too!

#2 Sign-up woes

Sign-ups are the “in thing” in apps these days. And why not! After all, it’s very easy to add a “Sign up with Google” or “Sign up with Facebook” button and the process takes a few seconds. We suggest you to not do it. Real-world experience and UX studies indicate that sign-up screens are seen as an additional burden on a user trying out an app. When a user sees a sign-up screen, they go “What?! Not again…”, and, you guessed it, they immediately exit the app and uninstall it.

The best practices here are:

  • Do not, under any circumstances, make the sign-up screen the first thing the user sees.
  • The sign-up process can be pushed later into the UX flow. But perhaps even better, it can be moved to the settings area, with regular notifications reminding the user to complete their profile.

The reason for these suggestions is simple: once a user has invested some time and effort in your app (and has come to like it), they are much more likely to provide the details you are so badly after.

#3 Creating custom UI components

So you want a fancy effect or want to place your content in a weird hexagonal grid that will dazzle your app users? That’s good, and we highly recommend it. The only problem is that most developers tend to reinvent the wheel when it comes to UI components. If you look deeply into the standard UI components provided these days, you’ll be astonished as the usability and composability of these. In 90% of your use cases, you don’t need to create a custom UI component. How can you make sure your case isn’t covered by the standard offering? You can do two things: 1) Get to know the standard libraries more intimately; 2) Ask the experts in Android forums!

Even if you don’t find what you’re looking for in the standard offerings, we strongly urge you to shell out a few dollars and purchase components built by other people. This will save you tons of time and headache later on, say, when the hexagonal grid you designed starts displaying like a curved rectangle on tablets!

#4 One size fits all

Android development is hard. Much, much harder than iOS development. No, it’s not a Java vs Swift thing. Just look at the Android market: several versions of the operating system are in use, with the prehistoric ones still refusing to die. And don’t even get us started on the screen sizes: everything from 4 inches to 6.4 inches is competing in the market, with every imaginable size in between. It’s a soup. It’s a developer’s nightmare. And that is what makes it hard. Of course, Google tries its best (the Material Design guidelines, for example) but it still can’t dictate the market forces.

So don’t get comfortable if your app works flawlessly on your device. Become ruthless in your testing. Fire up the emulator with as many screen sizes as you can, and go through the app flow painstakingly. It’s hard, but it’s the only way known to mankind to save itself from Android embarrassment. Of course, you also need to worry about different pixel densities on different devices.

#5 Java programming? Meh.

Part of Android’s success (or most of it?) was due to the adoption of Java – the most famous programming language on the planet. But if you’re an app developer, you’re more focused on learning the ins and outs of the platform. You spend time on learning the common recipes of Android, and maybe even have a serious focus on security. The problem is, developers don’t dive into Java deeper, and the resulting code is inefficient, if not just plain ugly.

Dig deeper into Java. Don’t stop at the “Hello world” programs and stuffing all functions in one or very few classes. Learn how to speed up your algorithms, how to architect large code bases,  how to run automated testing, etc. It will make your apps better.

#6 Security? Is that a new software on the market?

The whole process of making an app involves so much work that if you ask a developer of what security measures they took, they’ll hit you with a chair. They are of course very aware of the dangers of lax security in mobile apps, but the whole things are just so damn hard and amorphous. Like, how do they even get started?

It used to be a valid excuse, but not anymore. Tools like Devknox now exist, and all you need to do is add them to your Android Studio and follow the code suggestions before you hit the publish button and celebrate. It’s the least you can and should do, and you’ll be surprised how much this helps.

#7 Trying to support older devices

It’s totally understandable that you want to command the maximum market share by making your app run on as many devices as possible. Our only advice? Don’t do it. The road to perfect compatibility is littered with thorns, pits, and werewolves, and you’ll never reach the end alive. Some of the features supported effortlessly by newer devices and versions are plain impossible with the older ones; moreover, there are gaping security holes in earlier Android versions.

Just set the minSdkVersion to 14 and disconnect yourself emotionally from the plight of those hundreds of thousands of users whose lives won’t be enriched by your awesome app.

#8 Underestimating the effort

Apps are small and cute, but the effort needed to develop one is anything but. An application done properly is just like software development, and requires finalization of specifications, architecture, development, user interface and user experience design, unit testing, acceptance testing, stress testing, security testing, etc. But even if you’re a single developer and are going to make all the decisions by yourself, it’s unlikely that you’ll finish that app “over the weekend” or even in the next 7-10 days.

Good apps take some time to create, and it’s time you help your clients and yourself understand this.

#9 Ignoring beta releases

It’s easy to get confident once you see everything working as it should. But the real world is a hard place where things will go wrong in ways you could’ve never anticipated. How does your app behave when there is no Internet when it was expecting a connection? What if the Internet turns off when it was updating some data? What if the memory became full in the middle of an operation? These are cases that are best dealt with in a beta release and tested by more forgiving users.

The best part of beta releases is that Android now has beta users program. You can now release your app as beta and it will be hidden from the masses until you’ve worked on the feedback.

#10 Not having a monetization strategy

The Android app market has very low percentage of paying users as compared to the iOS market. Ads are annoying, and full-screen display ads are enough to send the users flying off the orbit. In-app purchases are hard to convert – people would rather just move on to another competing app. What, then, is your monetization strategy for your app?

If you’re creating apps for monetization but your strategy is “we’ll see”, trust us, the outcome is not going to be pretty.


While Android app development has matured fully, developers haven’t. Good coding practices, awareness of security and design issues, and a focus on the big picture are needed to succeed in today’s app market.

Build great, secure Android apps effortlessly.

Try Devknox

  • freakqnc

    Some great point made here, although you provide an advice on each point but the last one. Should readers assume you have none when it comes to monetization strategy, or perhaps you simply forgot to expand on that point providing a “do” advices in addition to the disclosed (and already well known) “do nots”? Thanks for sharing your experience here.