1.2 Steps to Creating an Android App
In this lesson, I'll walk you through the key decisions that need to be made at each stage of the app lifecycle: inception, design, coding, testing, publishing, and revision.
1.2 Steps to Creating an Android App
[MUSIC] So the first and arguably the most important step when you're going to make a mobile app is to plan. So first you need to come up with the idea of what you gonna build. So this maybe something that is given to you by a client, or you may have just had an idea that wanna actually build out. And once you have that, you'll need to make a list what the features would be for a most valuable product. So this will vary depending on what your app actually does. So if you're making a flashlight app, an MVP would probably just be turning the light on or off. You may wanna add in other features, such as timers or strobe effect, anything else that you would think that would be good in that. Generally you will wanna hit the idea of what is the app gonna do? Why does the user need to use it? And what makes your app better than other apps that are already in the market? So one of the things you can do, if you're making an app that's already been done, but you want to do it better, is you can go to the Google Play Store. And you can just do a quick search for the type of app you wanna make. So let's say it's a flashlight app You see what other apps are out there, what they do, and what you can do to improve on those. Once you have the feature list ready, you'll need to consider how you wanna actually make revenue on it. Or if it's just gonna be a free product that you're giving out for anyone that wants to use it. So if you do wanna make revenue, there's a few different options that you have. The first would be to put in ads, which as you can see here, there's plenty of developer documentation for. So this will just be, ads will either pop up in a video, or intermittently as the user is using the app. Or it can be banner ads at the bottom or top of the screen. If your app lends itself to it, you can also have in-app billing, where you can charge users for general features that they want to use. Or if you wanna sell products to them for their app. So with Android, in-app billing is actually fairly easy using Google Play services. But we're not gonna get into too much detail there. Once you have your idea and feature set ready for your app, the next thing you're gonna need to do is actually start designing it. So you can go over the best practices for user interface from Android, just so you know what things should look like and how they should be used. And once you have a general idea, you can either sketch it out on paper, if it's a small operation, and you're just building this for yourself. Or if you need to be more professional about it, there are few apps such as Sketch and Zeppelin which will allow you to actually design the different components, and how they'll interact and work on the screen. And then you can share that with other developers within your group. Once you have your design ready, it's time to start actually getting into the code. So one of the things you can do is, with your feature list, is look in to libraries you may need to make your life a little bit easier. So that you don't have to reinvent the wheel as you go along. So if I go here into Android Studio, you can see there are few libraries that I have imported into a test project. One of them is the Cast Companion library from Google which makes it incredibly easy to add Google Cast support into your applications. Without having to worry about properly implementing all of the requirements for Google Cast, because it is already implemented through this library. There's also Retrofit, which is great for pulling down data and placing it into model objects within your application. RxJava, which gives you a way to use Reactive code within your application. And then OkHttp, which comes from Square, and is really useful for any kinda networking within your application. So if you wanna look for more open source libraries, there's actually a good amount of code and whatnot for different features you may want to implement through the Google Samples GitHub page. And Square has a bunch of different open source projects that are fairly well used within the Android community. Such as Dagger for dependency Injection, Picasso for image loading, and OkHttp and Retrofit, which we just talked about a second ago. Once you've looked over the libraries that may help you, there's still gonna be a lot of code that you need to write that aren't available within libraries. So your best bet is to again, check for open source code that has just been put out there, such as the Google Samples. You can also go to the Android developer documentation. Which will let you select different areas that you may wanna work with, so that you can kind of find what you're looking for and get a rough idea of how things will work. Such as notifications, media, working with the system, and so forth. On top of that, you can actually go through the Tuts+ page, and you can go for the mobile tutorials. And find whole bunch of different tutorials in how to do things within mobile development. So if we just look at the main page here, there's some iOS ones. There's the Android from Scratch, so activities and applications. A whole much of other things are just always available, it's constantly updating, and it's definitely worth of checking out. Once you have your application built, you're gonna need to test. So what you can do is actually go through and test on emulators, which is good for as you're kind of going along. But generally you will wanna plug in device through USB so that you can see how things will work on a real device. Cuz real devices tend to be a little bit more finicky, just depending on who's made them and any kind of modifications on the device. So if you can catch those early, that's great. And in regards to testing, there's also the testing framework that is now available in Android Studio for JUnit testing. And you can bring in a libraries such as Espresso, so that you can test UI as well. So having a good testing framework is gonna save you a whole bunch of time as you go along. You can also bring in libraries such as Fabric for crash reporting. So that as users run into issues when it's on the store, you'll be able to find out what's going on. So as you can see, this just crashed on us here. And if we had test, it probably would have been all right. [LAUGH]. So let's see what's going on here. And that's just the emulator being buggy, which is another reason why testing on a real device is actually a really good idea. And we'll just not mess with that for right now. So once you actually have your app tested and built and so forth, you're gonna want to publish it. So what you can do now is go to the Google Play Developer Console. And this is where you'll actually be able to upload your application. So as you can see here in the corner, there's a Add new application button. So we'll click that. And we'll just say Tuts+ Coffee Break, and we'll hit Upload APK. And your APK is your install file for an Android application. And then you'll be able to upload that APK, and then you can go through your store listing, give it a description, a full description. You have to upload screenshots. And if it is a TV app or a wearable app, you'll also have to have images for that. Need to do a survey for a questionnaire to give it a content rating. Then there's pricing and distribution, which allow you to set a price for the initial app. As well as determine where it will be available for people to download. So if it's a Google Play for work application, then it'll be available in a special Play Store viewing for that. You can also go to In-App Products to handle any kind of in-app purchases. And then there's an Optimization Tips section, where after it has analyzed your app, it will let you know if there's more things you can do to kind of improve on it. Which kinda leads us to our last point of, once your app is published, you don't want it to just kinda sit stagnant. You will wanna do revisions and maintenance, so as crashes come in, you can see those on the actual Play Store. And you can get those fixed, just to kind of improve the experience for your users. You can also start adding in new features. So when you first launch, you're not gonna have everything completely built yet. You will just put out your MVP, so you can have something out and available. And then you'll slowly start iterating on that to make the app even better as you go along. Just keep giving a value to your users. But once you hit that stage, you're pretty much done. So really, getting an app out there is just a whole lot of planning, a little bit of building. And then just a bunch of iteration at the end of it, to make sure that things are continuously improving. And with that, you should have a general idea of what goes into building an app from scratch in regards to process. And you should be able to start getting ready to do your development. So good luck.