0
0
Android Kotlinmobile~15 mins

APK vs App Bundle in Android Kotlin - Build Both & Compare

Choose your learning style9 modes available
Build: App Package Info
This screen shows the difference between APK and App Bundle formats used in Android app distribution.
Target UI
---------------------------------
|       App Package Info         |
---------------------------------
| Format:                       |
| [APK]                        |
| Description:                 |
| Android Package Kit file.    |
| Contains all app resources.  |
|                             |
| Format:                       |
| [App Bundle]                 |
| Description:                 |
| Google Play app publishing   |
| format. Optimizes downloads. |
---------------------------------
Display two sections: one for APK and one for App Bundle.
Each section must have a title and a short description.
Use a vertical scrollable layout.
Use simple TextViews with clear labels.
Add a header with the screen name.
Starter Code
Android Kotlin
package com.example.apppackageinfo

import android.os.Bundle
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.rememberScrollState
import androidx.compose.foundation.verticalScroll
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Surface
import androidx.compose.material3.Text
import androidx.compose.material3.TopAppBar
import androidx.compose.material3.Scaffold
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 {
      AppPackageInfoScreen()
    }
  }
}

@Composable
fun AppPackageInfoScreen() {
  Scaffold(
    topBar = { TopAppBar(title = { Text("App Package Info") }) }
  ) { paddingValues ->
    Column(
      modifier = Modifier
        .padding(paddingValues)
        .padding(16.dp)
        .verticalScroll(rememberScrollState())
    ) {
      // TODO: Add APK section
      // TODO: Add App Bundle section
    }
  }
}
Task 1
Task 2
Task 3
Task 4
Task 5
Solution
Android Kotlin
package com.example.apppackageinfo

import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Surface
import androidx.compose.material3.Text
import androidx.compose.material3.TopAppBar
import androidx.compose.material3.Scaffold
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.dp

class MainActivity : ComponentActivity() {
  override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContent {
      AppPackageInfoScreen()
    }
  }
}

@Composable
fun AppPackageInfoScreen() {
  Scaffold(
    topBar = { TopAppBar(title = { Text("App Package Info") }) }
  ) { paddingValues ->
    Column(
      modifier = Modifier
        .padding(paddingValues)
        .padding(16.dp)
        .verticalScroll(rememberScrollState())
    ) {
      Text("Format: APK", fontWeight = FontWeight.Bold, style = MaterialTheme.typography.titleMedium)
      Text("Android Package Kit file. Contains all app resources.", modifier = Modifier.padding(top = 4.dp))
      Spacer(modifier = Modifier.height(24.dp))
      Text("Format: App Bundle", fontWeight = FontWeight.Bold, style = MaterialTheme.typography.titleMedium)
      Text("Google Play app publishing format. Optimizes downloads.", modifier = Modifier.padding(top = 4.dp))
    }
  }
}

This app screen uses Jetpack Compose to show two sections describing APK and App Bundle formats.

We use a Scaffold with a TopAppBar for the header.

The content is inside a vertically scrollable Column with padding.

Each section has a bold title and a description below it with spacing between sections for clarity.

This simple layout helps beginners understand the difference visually.

Final Result
Completed Screen
---------------------------------
|       App Package Info         |
---------------------------------
| Format: APK                   |
| Android Package Kit file.     |
| Contains all app resources.   |
|                              |
| Format: App Bundle            |
| Google Play app publishing    |
| format. Optimizes downloads.  |
---------------------------------
User can scroll vertically if screen is small.
No buttons or navigation, just static info.
Stretch Goal
Add a toggle button to switch between light and dark theme.
💡 Hint
Use a state variable to track theme mode and apply MaterialTheme color scheme accordingly.