Bird
Raised Fist0
Android Kotlinmobile~20 mins

Play Store submission in Android Kotlin - Mini App: Build & Ship

Choose your learning style10 modes available
Build: Play Store Submission Guide
This screen guides the user through the steps to prepare and submit an Android app to the Google Play Store.
Target UI
----------------------------------
| Play Store Submission Guide    |
|--------------------------------|
| 1. Prepare app release          |
| 2. Create app listing           |
| 3. Upload APK or AAB            |
| 4. Set pricing & distribution   |
| 5. Review and publish           |
|                                |
| [Start Submission]             |
----------------------------------
Display a list of 5 submission steps with short titles
Show a button labeled 'Start Submission' at the bottom
When the button is tapped, show a simple Toast message 'Submission started!'
Use a vertical layout with clear spacing
Use Material Design components
Starter Code
Android Kotlin
package com.example.playstoresubmission

import android.os.Bundle
import android.widget.Toast
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.height
import androidx.compose.material3.Button
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Surface
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp

class MainActivity : ComponentActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContent {
            MaterialTheme {
                Surface(modifier = Modifier.padding(16.dp)) {
                    SubmissionScreen(onStartClick = {
                        // TODO: Show Toast message here
                    })
                }
            }
        }
    }
}

@Composable
fun SubmissionScreen(onStartClick: () -> Unit) {
    Column {
        // TODO: Add list of steps here
        Spacer(modifier = Modifier.height(24.dp))
        Button(onClick = onStartClick) {
            Text(text = "Start Submission")
        }
    }
}
Task 1
Task 2
Solution
Android Kotlin
package com.example.playstoresubmission

import android.os.Bundle
import android.widget.Toast
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.height
import androidx.compose.material3.Button
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Surface
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.unit.dp

class MainActivity : ComponentActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContent {
            MaterialTheme {
                Surface(modifier = Modifier.padding(16.dp)) {
                    SubmissionScreen(onStartClick = {
                        Toast.makeText(this, "Submission started!", Toast.LENGTH_SHORT).show()
                    })
                }
            }
        }
    }
}

@Composable
fun SubmissionScreen(onStartClick: () -> Unit) {
    val steps = listOf(
        "1. Prepare app release",
        "2. Create app listing",
        "3. Upload APK or AAB",
        "4. Set pricing & distribution",
        "5. Review and publish"
    )
    Column {
        for (step in steps) {
            Text(text = step, style = MaterialTheme.typography.bodyLarge, modifier = Modifier.padding(vertical = 4.dp))
        }
        Spacer(modifier = Modifier.height(24.dp))
        Button(onClick = onStartClick) {
            Text(text = "Start Submission")
        }
    }
}

This app screen uses Jetpack Compose to show a vertical list of the 5 main steps for submitting an app to the Play Store. Each step is a Text composable with some vertical padding for spacing. Below the list is a Material Design Button labeled "Start Submission". When the user taps the button, a Toast message "Submission started!" appears briefly at the bottom of the screen. The layout uses a Column with padding around the edges for a clean look. This simple UI helps beginners understand how to build a list and handle button clicks in Android Kotlin Compose.

Final Result
Completed Screen
----------------------------------
| Play Store Submission Guide    |
|--------------------------------|
| 1. Prepare app release          |
| 2. Create app listing           |
| 3. Upload APK or AAB            |
| 4. Set pricing & distribution   |
| 5. Review and publish           |
|                                |
| [Start Submission]             |
----------------------------------
User taps 'Start Submission' button
A Toast message 'Submission started!' appears briefly at the bottom
Stretch Goal
Add a dark mode toggle switch that changes the app theme between light and dark
💡 Hint
Use a state variable to track dark mode and MaterialTheme's colorScheme to switch themes dynamically

Practice

(1/5)
1. Why is it important to sign your Android app before submitting it to the Play Store?
easy
A. It verifies the app's author and ensures updates come from the same source.
B. It makes the app run faster on all devices.
C. It automatically translates the app to multiple languages.
D. It removes all bugs from the app.

Solution

  1. Step 1: Understand app signing purpose

    Signing confirms the identity of the developer and secures app updates.
  2. Step 2: Recognize Play Store requirements

    Google Play requires signed apps to ensure trust and security for users.
  3. Final Answer:

    It verifies the app's author and ensures updates come from the same source. -> Option A
  4. Quick Check:

    App signing = Verify author and secure updates [OK]
Hint: Signing proves app ownership and update safety [OK]
Common Mistakes:
  • Thinking signing improves app speed
  • Believing signing translates the app
  • Assuming signing fixes bugs automatically
2. Which of the following is the correct way to specify the version code in your Android app's build.gradle file before Play Store submission?
easy
A. versionCode = 1
B. versionCode = "1.0"
C. versionCode = true
D. versionCode = 1.0

Solution

  1. Step 1: Identify versionCode data type

    versionCode must be an integer, not a string or decimal.
  2. Step 2: Check each option's type

    versionCode = 1 uses an integer 1, which is correct; others use string, boolean, or float.
  3. Final Answer:

    versionCode = 1 -> Option A
  4. Quick Check:

    versionCode = integer [OK]
Hint: versionCode must be an integer number [OK]
Common Mistakes:
  • Using quotes around versionCode value
  • Using decimal numbers for versionCode
  • Assigning boolean values to versionCode
3. Given this snippet in your build.gradle file, what will happen when you try to upload the app to the Play Store?
android {
    defaultConfig {
        applicationId "com.example.app"
        minSdkVersion 21
        targetSdkVersion 33
        versionCode 2
        versionName "1.1"
    }
}
medium
A. The upload will fail because applicationId is missing.
B. The app will upload successfully with version 1.1 and code 2.
C. The app will upload but with minSdkVersion ignored.
D. The upload will fail because versionCode must be a string.

Solution

  1. Step 1: Check versionCode and versionName types

    versionCode is integer 2 and versionName is string "1.1" which is correct.
  2. Step 2: Verify required fields

    applicationId, minSdkVersion, targetSdkVersion are all present and valid.
  3. Final Answer:

    The app will upload successfully with version 1.1 and code 2. -> Option B
  4. Quick Check:

    Valid config = Successful upload [OK]
Hint: Check types and required fields before upload [OK]
Common Mistakes:
  • Confusing versionCode type as string
  • Missing applicationId in config
  • Assuming minSdkVersion is optional
4. You tried to submit your app to the Play Store but got an error saying your APK is not signed. What is the most likely cause?
medium
A. You used the wrong package name in your manifest.
B. Your app's versionName is missing.
C. You forgot to generate and use a signing key before building the APK.
D. You set minSdkVersion too high.

Solution

  1. Step 1: Understand the error message

    "APK is not signed" means the app was built without a signing key.
  2. Step 2: Identify the cause

    Not generating or applying a signing key before building causes this error.
  3. Final Answer:

    You forgot to generate and use a signing key before building the APK. -> Option C
  4. Quick Check:

    Unsigned APK error = Missing signing key [OK]
Hint: Unsigned APK error means no signing key used [OK]
Common Mistakes:
  • Confusing package name errors with signing errors
  • Ignoring versionName warnings
  • Thinking minSdkVersion affects signing
5. You want to submit an update to your app on the Play Store. Your current live app has versionCode 5 and versionName "1.4". Which of the following is the correct way to update these values in your build.gradle file?
hard
A. versionCode 5 versionName "1.5"
B. versionCode 6 versionName "1.4"
C. versionCode 4 versionName "1.5"
D. versionCode 6 versionName "1.5"

Solution

  1. Step 1: Understand Play Store versioning rules

    versionCode must increase with each update; versionName usually increases to reflect new version.
  2. Step 2: Evaluate options

    versionCode 6 versionName "1.5" increases versionCode to 6 and versionName to "1.5", which follows rules.
  3. Final Answer:

    versionCode 6 versionName "1.5" -> Option D
  4. Quick Check:

    Update requires higher versionCode and updated versionName [OK]
Hint: Always increase versionCode and update versionName for new releases [OK]
Common Mistakes:
  • Keeping versionCode same as previous release
  • Decreasing versionCode accidentally
  • Not updating versionName with new release
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard