You are ready to build your first Android app, well good luck and welcome aboard an exciting journey. My first Android app took me a year to build because of the complexities of porting a legacy desktop application to mobile app and dealing with constantly changing business requirements.
Below are my ten tips for building your first Android app and hopefully it will help you ship your app in a lot less time than my first app took me. These tips are applicable to non-game apps because I do not have experience building Android game apps.
1. App Idea – Pick an existing app in the store: Picking an app idea is an effective screening post for many would be app developers because it keeps many would be developers from joining the camp of has becomed developers. This topic has been debated to death on the web, there is a reddit topic, there are over 10 Udemy courses for helping people to pick their first app idea.
My advice is it doesn’t matter for your first app, this is not the app that will change the world, this is not the app that will get you a million download in one week.Your first Android app is the app that gives you a better understanding of what it takes to make an Android app, accelerates your learning of Android development and gives a significant boost to your confidence and career.The goal of your first Android app therefore should be learning, and since you cannot learn from a non existent example,
I will suggest that you set aside your awesome ideas for now and choose something that people have already built. So here is my three step process for choosing your first app idea in 30 minutes.
1. Go the Play Store, find a non-game category that you are slightly interested in
2. Take a look at the top 5 apps in this category,
3. What is the core feature that these apps have in common, or which of theses 5 app do you like the most and what is the main feature of that app? The answer to any of these question could become your first Android app idea. You should aim to build a scaled down version of that popular app, you cannot re-create the whole app, just a a feature from that.
The reason for this suggestion is that for any top/popular app there has been numerous attempts to build that core feature that the app has and therefore numerous resources for you to learn from.
2. Keep it simple – 2 to 5 screen: Having identified the general idea of the first Android app that you want to build, the next step is to narrow it down to as many screen as needed to accomplish the core feature of the app. The more screens you have the more complex your app is becoming and the less likelihood that you will actually publish it as your first app. Even 99Designs.com encourages you to limit your initial app design screens to 5 screens.
How do you know the number of screens your app should be or how do you limit the number of screens your app should have? – you sketch it. Before you sketch your app though try to answer the question “what does my planned app do”. It will be easier if you can answer this question in one sentence without using the word “and” because that introduces complexity.
3. Plan it out – Draw a picture: I once heard the saying “when in doubt, draw a picture” , in app design this step is referred to as prototyping or wire-framing and there are many tools that helps with this. However do not get caught up in choosing a prototyping tool. Use the one that you have and use all the time, paper and pencil.
For your next app, you should start to graduate towards a commercial prototyping tools because according to a blog post by Dave Kearney of FluidUI, there are quantifiable benefits to prototyping your app.I have not actually used FluidUI, and I am seriously considering it, just trying to get over the hump of their annual payment requirement. I have however used Ninjamock.com for some of my apps.I actually start with some UML diagram (Use Case, Sequence diagram, etc). UML diagraming is one of the first things you learn in any college Software Engineering curriculum, if you are not familiar with it don’t worry about it. However it does help with translating your vague app description to a prototype. Watch this Google IO video to appreciate the importance of planning your app before you begin.
Here is how I transitioned this app description
Book Manager – will be an app to help me keep track of the books that I read. There should be categories and subcategories to organize the book, I should be able to add information about the author, publication date and date read.
And with the above proposed app description I first created a simple UML Use Case diagram, then used NinjaMock to create a wireframe and then used that wireframe to creat an Android Activity screen – in that order
4. Commit to ship it – do not change your mind: Yep, once you get started, follow it to completion. One of my favorite quotes from the bestseller book The One Thing is that “all the could haves, should haves, would haves ran away from one little did”. The emphasis is on the did. Your first Android app is not an app until you publish it. Don’t worry about how many downloads you will get, that number is unpredictable rather focus on the number that is solidly predictable which is the number of downloads your unpublished app will get – you guessed it, its zero.
Focus on improving on that number and you do that by clicking on the published button.There will be tough days ahead, things will not make sense, your questions will be dismissed in StackOverfow.com because people think is does not make sense, don’t take any of these personal. Focus on publishing that app that you started, don’t just abandon it and start another one that is more promising because that one won’t be easy either.
5. Build Native app – Use Android Studio and Java: There are increasing number of options to build a mobile app, however when it comes to building your first app, I would kindly suggest that you stay native. Because no one can match the amount of investment that each platform vendor (Google, Apple & Microsoft) has made in their respective ecosystem.
6. Implement Behavior first – embrace the Fragments: You might have heard the famous statement from Steve Jobs “design is not just what it looks like , its how it works”. This could not be more true for mobile apps. With Android, that includes how you transition from one screen to the other (navigation), how you deal with touch and gestures and how you handle configuration changes including but not limited to screen orientation. Ideally your first Android app, should focus on one core feature so you are not overwhelmed with all the nuances of implementing mobile app behavior.
Navigation and screen orientation is one behavior you will have to deal with no matter what is your app’s core feature and Fragment is at the center of dealing with this in Android.I will encourage you to limit your first Android app to two Fragment per screen. You can get away with one Activity one Fragment, but by having atleast two Fragment you will get to learn the subtleties of dealing with the Fragment Manager, dealing with transactions in the back stack, changing the ActionBar (or ToolBar) title to reflect the current Fragment, dealing with the Up button from within the Fragment and handling onBackPressed from Fragment.
All these will be skills that will save you time in your subsequent apps and you may not get exposed to them if you just do one Activity and one Fragment.On the other hand, if you go with one Activity and more than 2 Fragments, then you may encounter issues that you will rather avoid in building your first Android app.Which ever approach you choose with Fragments, you will do well to setup the core behavior of your app or specifically how your app handles configuration changes before you start writing your application logic.
You can add Textviews, or Toast or colored background to test how you app response to screen rotation, handles retain instance, selects alternate resources before you proceed.To the extent possible, I will gently encourage you to avoid implementing dual screen as shown below for your first app. If you doubt me, go back to the Play store and take a look again at the top 5 apps in the category that you looked at in the beginning of this post, how many of them have implemented a dual screen in their apps? I bet the ones that do are the corporate apps with big budget development team. You are a solo developer at this time, focus on the screen in the right of the image, the one with with the title handset. Place one view (one Fragment) per screen. Use alternate resource folders such as sw600dp, w820dp, to provide layouts with extra margins, padding and larger text sizes for the bigger screen, define your sizes in resvaluedimens folders so Android can auto adjust sizes for your layouts.
7. Implement In App Purchases – hide behind the pay-wall: You receive not, because you ask not. That is some religious quote from my faith. But the truth is that you deserve to be paid. And you cannot get paid unless you ask to be paid and in Android app you ask to get paid through in app purchases. An outdated business model is to have two apps, one free and one paid, however it appears that developers have shifted to in app purchases and in some cases subscription as their app business model.
Even if you want to give away your app for free, going through the process of implementing in app purchases allows you to structure your app around your app main feature, such that you are able to place a pay wall beyond certain point.
Let’s say for example that your app is an app that let users send mass text messages to their contacts. Well the core feature there is “send text messages”. So you place your pay-wall in front of this “send text messages”.This could be a simple counter that increments for each text message sent, and then you can provide just one button from which a text message can be sent from your app. And every time a text message is sent successfully you increment your counter and each time that button gets click, you check the counter to see if the free limit you set has been reached, if yes you throw up an Alert dialog or Toast message asking the user to upgrade.
Again even if you plan to give away your app for free, it may worth your while to go through this step of implementing in app purchases, at least you learn it and also by the time you finish your app you may fail to understand why anyone will want you to give away all this effort for free. Besides by having the mindset of getting paid you will go the extra mile to make sure that your app did not increment the number of junk apps in the store.
8. Get the Strings – makes translation easier: Any time you see your self adding a string like this
Toast.makeText(getActivity(), "Hello World", Toast.LENGTH_SHORT).show();
You could do this instead
Toast.makeText(getActivity(), getString(R.string.hello_world), Toast.LENGTH_SHORT).show();
The good thing is that with Android Studio, even if the string does not exist, it will give you an error and an opportunity to right click and create the string without opening up your String.xml file. This is a good habit according to the official guideline and should more than one person download your app and you are fired up to go international, then you have a ready to go string to translate to any other language.
Copypasta – be mindful of what you copy: Not a small amount of apps have been written with atleast one line of code from StackOverflow.com, none other than Joel Spolsky one of the co-founders declares it “the largest, most trusted repository of programming knowledge in the world.” and he can certainly make that argument. So copy with confidence, however please beware of bugs.
Atleast read, or type what you are coping, try to understand what that piece of code is doing because you will come back to it to – debug! . Reworking defects in requirements, design, and code consumes 40-50% of the total cost of software development.
10. Git from the start – commit often: When you create your first project, add source control immediately if possible and commit often. Android Studio has a built in Git support that you can access from the VCS tab. Things will unavoidably go wrong an you will want to back to the last know good commit, if you commit often then you can roll back and will have only lost a small amount of productivity
That is it, my simple ten tips for creating your first Android app. I have left out some things for brevity and I am hoping that the above will get your programming juice flowing. You will have noticed that my tips are not prescriptive, that is I am not telling you what to do, I am merely suggesting and sharing my experience with you. That is because at the end of the day, you will have to make the decisions, you will have to take ownership of the project, you will be responsible for getting it done. In doing so you will get the credit for building an app, you will be called an Android App Developer.
However, if you need a step by step guide in building your first Android app, I am creating a paid video tutorial and lots of supporting materials to help you build your first professional Android app and publish it to the Play Store in 3 days. This will be a massive shortcut for you to watch me implement these sometimes confusing features into an app and go through the process and publish it live. If you want to get a free beta access, please use the contact us button at the top of the page to send me your name and email.
Get thee a tablet – if you have a phone, get a tablet and if you have a tablet get a phone. With two physical devices and the emulator you should be covered for testing your first app.
How about crash report, analytic, insights, etc – these are all excellent tools, again for your first app, keep it simple; there is no need in gathering data that you cannot act upon. Just put a Contact Us button to your app and wrap it with a Send Action Intent so that users can quickly send you an email.
I don’t know Java what should I do – if you don’t know Java then learn some Java, if you know any other object oriented language or if you have taken at-least a semester of programming class then you can get started and learn Java as needed.
Re-skinning, can’t I just buy a source code – I know re-skinning is big with the iOS community, I am not sure if that is a good approach for you if you are trying to learn and/or improve your Android development skill. Many of those source codes in my experience are unnecessarily convoluted. Going though some of the source codes is an exercise in confusion management. And besides you can get even better code samples from the official Android samples and Stackoverflow.com
App name, icon, design – Don’t worry about your app name that much, no one has taken your app name. As long as it is not a copyrighted name, two apps can have the same name as long as they both do not belong to you. For icon, use Fiverr.com to get a $5.00 icon and keep going. As for design focus on functionality, ship the app and revisit design.
Good luck and happy coding.
I am a Software Engineer with expertise in Android Development. I am available for Android development projects.