Getting started with Firebase on Android (2020) - Firecasts

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
TODD KERPELMAN: Hey there, Android developers. Interested in getting started with Firebase in your Android apps? Well, you've come to the right place. Let's get started on this episode of "Firecasts." [MUSIC PLAYING] So this here is my little sample app. I've got a button that I can click on and some text that updates, and I'm going to get it set up to start working with Firebase. Go ahead and grab your own basic app to work with. It doesn't really have to look like mine. Honestly, as long as it's some kind of Android app, you should be fine. Now, there are two main parts to getting the Firebase platform up and running, adding your app to the Firebase console and installing the SDK. And there are two ways to do that, either by heading over to the Firebase console directly or by using the Firebase Assistant in Android Studio. Now, we've made some recent improvements to the Firebase Assistant that's made it easier to work with. But personally I think it's worth taking the time to get to know the Firebase console. So that's what we're going to do here. So let's get started. And as with most projects, we get to start with the most exciting part, and that's making sure my app fulfills all the minimum requirements and prerequisites. [APPLAUSE] I know. It's not even my birthday! So first off, let's head over to the documentation. And here I can see the various API targets and tools that I need to get started. Obviously, depending on when you're watching this video, exact version numbers might look slightly different. So go with what you see in the documentation, not with what I'm saying in this video. So first, let's see if my Android Studio is mostly up to date. I just recently updated to version 3.6.2, and it looks like this is still the latest version of Android studio so I'm good here. Next, it looks like I need to target a minimum API of 16 or later. Let me open up my app-level build.gradle file. And here I can see my minimum SDK is version 19, so that's OK. I also need to make sure I'm running Gradle 4.1 or later. I can find that out by opening my gradle-wrapper.properties file here. And it looks like I have version 5.6.4, so that's good. Next, I need to make sure I'm using the new and improved AndroidX support libraries and have the right setting in my project to support those. So I can make sure I have the AndroidX enabled by opening up my gradle.properties file and looking for this line here. And then let's make sure I'm using an up-to-date version of the Gradle plugin. And I could find this in my project-level build.gradle file, and this looks good. And finally, I need to make sure my compileSdkVersion is version 28 or later. I'll go back to my app-level Gradle file, and it looks like I'm good there, too. Finally, since I'm going to run this on an emulator, the documentation recommends that I run this on one with Google Play available. I'll pick this Pixel 3a running Android P from my ABD Manager. But for best results, go ahead and pick any device with the Play Store icon here. All right. Time to start creating a project. In order to do that, let's visit the console over at firebase.google.com/console. Again, the UI here might look a little different than what you have on your screen, but the general concepts should remain the same. Now, when you first visit the Firebase console, you'll see a few options here for what to do next. Depending on your situation, you might see a list of existing Firebase projects, or you might just have an Add Project button. I'm going to go ahead and click that, because I do want to create a new project. But before we go further, let me take a moment to explain the difference between projects and apps. A project can contain one or more apps. All apps in the same project use the same Cloud Firestore, Realtime Database, and cloud storage back-ends, and you can view combined analytics data across all apps in the same project. You can also use features like Firebase Cloud Messaging or in-app messaging to talk to all of your apps at once. You don't have to, but you can, which is sometimes convenient. So our recommendation is, if you've got versions of the same app on different platforms, such as Android, iOS, and the web, you'll want to connect each of those platform-specific apps to the same Firebase project. This way, your users can access the same data if they switch back and forth between different versions of your app, and you can use different Firebase products, like Remote Config or FCM, to target all apps at once, and so on. On the other hand, if your apps really are different, and you don't need to share that much data between them, you should put those in different Firebase projects. And for those of you building white-label or multi-tenant apps, we generally recommend using a separate Firebase project for each of your customers in order to keep that data nicely separated. So if your iOS or web team has already created a Firebase project for their app, you should probably just select that project and add your Android app to it. But if you're the first one to be adding Firebase capabilities to your app, lucky you. You get to be the one to create the new Firebase project, and that's what I'm going to do here. So I'm going to create a new project here I could give it a name, although you'll notice I also have this dropdown box underneath the name. This gives me the option to add Firebase features to any existing Google Cloud projects I have access to. Now, this will still keep all the capabilities of your existing Google Cloud project, while adding in the new services needed for Firebase. So if you're working on a project that you've already set up through Google Cloud, make sure you pick that. Don't create a new Firebase project. In my case, I am starting a brand-new project, so I'll type in a new name. And you can see, it's giving me a little ID string here, which will get updated as I type. This is the project ID, which is a globally unique identifier for your project across Firebase and Google Cloud. It's not really publicly facing, so don't worry too much. If you see random characters at the end or anything like this. It doesn't really matter. I'm going to click on the Continue button, and now I get to choose whether or not to add Google Analytics to my project. Enabling Analytics will allow me to use a number of useful features, such as A/B testing, running Firebase predictions, and getting crash-free user reports. If I don't enable Analytics, I won't be able to use those features. It's totally optional, so go with whatever works for you. Personally, I'm going to keep Analytics enabled. Now, if you do, you're going to need to associate this project with an account. Now, a Google Analytics account isn't an account like a Gmail account or anything. It's really just a folder of Analytics projects. It's mostly just there for organizational purposes. Some developers like to have separate accounts for each project. Me, I have one for all of my test projects. And so that's where this is going. Now I can proceed to the next step, which is actually creating the project. Firebase will think for a few moments, and then I will have a shiny new project to work with. Ooh, it still has that new-project smell. [SNIFFS] Mmm. OK, the next step is actually adding my Android app to this project I'm going to go ahead and click on the Android icon here, and I have a few fields to fill out. First step, adding my Android package name, also known as your application ID. In my case it's com.example.buttonclicker, but go ahead and use your own package name here. The app nickname is strictly internal and just a way of identifying my app in a user-friendly way, in the Firebase console. I'm going to go ahead and call it Button Clicker Android. Finally, I'm being asked to optionally add the SHA-1 hash of my debug signing certificate, so my app can kind of prove that it belongs to me. Yeah, that's an oversimplification. Go check out the docs for a real answer. Note that this is optional. It's really only used in a few situations, like Firebase Dynamic Links and Google sign-in, so you can leave it out or provide it later in your Firebase project settings. In fact, I kind of recommend leaving this out until you need it, because you can't have the same combination of package name and SHA-1 hash in more than one place. And if somebody else on your project team ends up registering your app in a test project with your shared production key, and then decide you want to register it in a different project later on, you're going to have to hunt down that original project and delete the signature, and that might be kind of a hassle, particularly if you have a lot of folks in your company that have access to that SHA-1. So you know what? I'm not even going to do this right now. If you want to do it, follow the instructions at the link here. But for now, I'm going to move on to the next step, which is to download this JSON file. I'm going to download google-services.json by clicking this button. And then I'm going to drag it into the right place in my Android project. Let's see. Here on my project panel, I'm going to switch my view from Android to project, which gives me more of a file-system-y view of my project. And then I'm going to drag that JSON file I just downloaded into my button-clicker/app folder. Now, if we look at this file, you can see that it basically contains a bunch of constants that the Firebase SDK needs to configure itself correctly. It's got the name of my project, the cloud storage bucket I might use, some OAuth Client IDs, and so on. Now, none of this is secret, but you should really only share this file with your team. If you're making an open-source demo app to be shared publicly with the world, you'll probably want anybody who runs their own version of this app to generate their own version of this file to hook up to their very own Firebase project. In my case, I'm not going to be sharing that publicly. This is just for me personally, which is why I told Android Studio to go ahead and check it into my Git repository. OK, next we're being told to make a few Gradle changes. In a somewhat unusual move, I guess, the first change we need to make is in our project-level.gradle file. So let me open this one up and confirm first that Google is listed in my build script repositories and in my all projects repositories. And it is. Then I'll copy this line into my dependency section to make sure that we're using this plugin here. By the way, don't confuse this with Google Play services. This is just the plug-in that parses that JSON file we added. OK, next up, let's open up our app-level Gradle file. That's this one. And this is where you're going to add the dependencies for the Firebase Android libraries that you're going to be working with. Now, the first thing I have to do is apply that Google services plugin in my app.gradle file, which I can do by copying and pasting this line up at the beginning of my file. Now, because I said I'm using Analytics in my project, the console is helpfully giving me a line I can use to load up the Analytics library. Again, these numbers will probably be quite different than what you're seeing when you watch this video. So let me copy and paste that into my Gradle file, like so, and I'll click Sync Now. Now, if you want to add other libraries, There's a full list of them over in the Android Getting Started documentation, down in the Available Libraries section. Just make sure you have the right tab selected, since these library names are sometimes different between Java and Kotlin. So in fact, let me copy over this line to use the cloud storage for Firebase library. Now, one thing I will point out is, you can sometimes run into strange and hard-to-track-down errors if your libraries are out of sync. So if you go ahead and update one of your libraries to the latest version, make sure you update the rest of them, too. Gee, in fact, it looks like my Analytics library is already slightly out of date. So I could update it by copying and pasting this line, but it looks like Android Studio is helpfully telling me the same thing. So let's fix it that way. And if all this versioning work sounds like a hassle to deal with, hey, you're in luck. There's actually a fairly new way to handle all of this called a Bill of Materials . Basically, a Bill of Materials is an officially published list of libraries and their version numbers that work well together. So let's try using one of these instead. So if you have Gradle version 5 or later, and as you recall, I do, you can head on over to the Bill of Materials section of the documentation, and then you can just copy and paste this line here into your Gradle dependencies. Then, and this is important, go ahead and remove your version numbers from these individual libraries. Gradle will then find the versions of these libraries in this Bill of Materials and use those for my app. Then, when you want to update to the latest version of Firebase, you just update this one Bill of Materials version instead of all the individual libraries. The only thing I noticed is that Android Studio doesn't seem to tell you when your Bill of Materials version is old. You'll need to go to the Android release notes section of the documentation and see what the latest version is. That will also tell you exactly what library version is in each one of these things, in case you were curious. OK, so I once again sync my file, and I should have Firebase properly installed and working. So how can I make sure I did this right? Well, let's see. If I run my app, and I search my logcat for Firebase, I see this line. And that should be enough to confirm that Firebase is properly initialized. Don't worry too much about this line underneath. I see that sometimes when I'm working on the emulator. Finally, you might notice the console is also waiting to see if it's gotten any contact from your app. To be honest, I don't always find this dialog super reliable. But it seems like it generally finds my app if I go ahead and move it to the background like this. Ah, there we go. But hey, while we're here, let's go ahead and add an Analytics caller, too. Now this isn't in Analytics tutorial. That's a whole separate video. So I'll keep this simple. First, let me add a lateinit variable to store my Analytics reference. I will initialize it here in my onCreate. Then let me go ahead and make an Analytics call in my app. Let's see here. Maybe I will add a custom event for clicking the button. Then let me jump into my terminal and set my logging level to verbose for both FA and FA-SVC. These are the Analytics tags. And if you're wondering how I knew this, I read the documentation. So now let's restart my app. Once it starts up, I'm going to head on over to my logcat, and I can see one Analytics message here. But I think to properly view my Firebase message logs, it helps to select Firebase from this dropdown on the right. Hopefully, you have something similar in your own version of Android Studio. And now, when I click my buttons, these button click events are properly being logged by the Firebase SDK for Google Analytics. Nice. Now that you have Firebase properly set up and initialized in your app, there's lots more you can do. You can store, query, and sync data from the cloud using Cloud Firestore, our globally scalable NoSQL database, use Firebase Auth to easily sign-in your users from a variety of sign-in providers, record custom events and user properties in Analytics, and combine that with Remote Config to run A/B tests or personalize your app, add services like Crashlytics-- you can find out exactly where your app is crashing and why-- and much more. If you want to find out more, why not subscribe to our YouTube channel? You can also check out the Firebase documentation or play around with any of our sample apps. Have fun creating, and I will see you soon on another episode of "Firecasts." [MUSIC PLAYING]
Info
Channel: Firebase
Views: 148,026
Rating: undefined out of 5
Keywords: GDS: Yes, getting started with firebase on android, getting started with firebase on android 2020, getting started with firebase on android tutorial, how to get started with firebase on android, firebase on android, firebase on android tutorial, intro to firebase on android, tutorial, how to firebase on android, android developers, google developers, firebase developers, firecasts, firebase bill of materials, android bill of materials firebase, Todd Kerpelman
Id: dRYnm_k3w1w
Channel Id: undefined
Length: 13min 26sec (806 seconds)
Published: Tue May 19 2020
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.