In the last couple of posts, we wrote a simple times tables flash card app. Let’s add some advertisements to it so we can make some money if anybody decides to actually use it.
Enter Google AdMob, one of the simplest and easiest ways to monetize an app.
The base code that we’ll be adding to is here on my Gihub account:
https://github.com/jamesmcclay/android_kotlin_times_tables
Let’s apply and get some ads popping up in our app!
Start the process
The application process starts here:
https://admob.google.com/home/
Clicking on “Get Started” will do what it promises.

If you’re already logged in with a Google Account, this part is easy. Your account will be created and you’ll be taken to the main AdMob page:

Click on “Add Your First App” to start adding an app.
Add your app
This part is pretty quick too. Just follow the prompts, answer the questions and create your app.


Now that we’ve created an app, we’ll need to add an ad to it. Once we’re done creating the app it leads us to the main page for the app. Clicking on “Add Ad Unit” will take us through the process to create an ad.
Create an ad unit
Ad units are just an ad within the app. There’s several different types to choose from. Some are simpler and less intrusive like the banner, and others take up the whole page and completely interrupt the flow of the app. Choose wisely. In this case, we’ll pick the simplest one, the banner.

Once the ad unit is created, we’ll get some identifiers we can use in our code to display the ad and connect it to our account to get paid.

Add the SDK
Now it’s time to write some code. We’re mostly going to be using the code given to us by Google, but since it’s in code we have a lot of control over how/when/if the ad is displayed. We’re following the quick start instructions on the Google documentation found here:
https://developers.google.com/admob/android/quick-start
We need to add some stuff to the build.gradle file located in the root directory (not the app-level one):
buildscript { repositories { google() mavenCentral() } } allprojects { repositories { google() mavenCentral() } }
I also ran into an issue where I had to change a line in settings.gradle to be this:
repositoriesMode.set(RepositoriesMode.PREFER_SETTINGS)
The key was changing “FAIL_ON_PROJECT_REPOS” to “PREFER_SETTINGS”. After that, syncing gradle worked.
Now we need to add the dependency to the app-level build.gradle file (the other one) like this:
dependencies { implementation 'com.google.android.gms:play-services-ads:20.4.0' // For apps targeting Android 12, add WorkManager dependency. constraints { implementation('androidx.work:work-runtime:2.7.0') { because '''androidx.work:work-runtime:2.1.0 pulled from play-services-ads has a bug using PendingIntent without FLAG_IMMUTABLE or FLAG_MUTABLE and will fail in apps targeting S+.''' } } }
Then we need to add the follow to AndroidManifest.xml. Make sure you put in the Application ID for your app that’s in the Google AdMob dashboard. It’s not the Ad ID that you created, the app ID. I got confused, so I thought I’d specifically call it out:
<manifest> <application> <meta-data android:name="com.google.android.gms.ads.APPLICATION_ID" android:value="ca-app-pub-xxxxxxxxxxxxxxxx~yyyyyyyyyy"/> </application> </manifest>
With that, the SDK is added to the project. Next step is to initialize it.
Initialize the SDK
To initialize, we need to add the import at the top of the TableActivity.kt file (we’re going to put this on the flash card screen) and run the initializer inside onCreate
. We’ll also add a global variable called mAdView
to connect to adView
(which we’ll create next):
import com.google.android.gms.ads.MobileAds class TableActivity : AppCompatActivity() { lateinit var mAdView : AdView override fun onCreate(savedInstanceState: Bundle?) { MobileAds.initialize(this) {} mAdView = binding.adView val adRequest = AdRequest.Builder().build() mAdView.loadAd(adRequest)
Now all we need to do is add an AdView
to the layout file so there’s an actual spot for ads. In the activity_table.xml file, we’ll stick this at the bottom, it came right from the Google documentation:
<com.google.android.gms.ads.AdView xmlns:ads="http://schemas.android.com/apk/res-auto" android:id="@+id/adView" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_alignParentBottom="true" ads:adSize="BANNER" ads:adUnitId="ca-app-pub-3940256099942544/6300978111"> </com.google.android.gms.ads.AdView>
You’ll notice there’s a real adUnitId in there, that’s on purpose. That’s actually the Google AdMob official test ID, we’re supposed to use that for testing. You can get your account suspended if you use your actual AdMob production ad ID.
And that should do it! When we fire up the app, we should see a test banner at the bottom of the flash card screen

Happy coding!