0
0
Android Kotlinmobile~20 mins

Build variants (debug, release) in Android Kotlin - Mini App: Build & Ship

Choose your learning style9 modes available
Build: Build Variants Demo
This screen shows a simple message that changes depending on the build variant (debug or release). It helps you understand how to use build variants in Android Kotlin projects.
Target UI
-------------------------
| Build Variants Demo    |
|-----------------------|
| Message:               |
| [Build variant message]|
|                       |
-------------------------
Create two build variants: debug and release
Show a TextView with message 'This is DEBUG build' in debug variant
Show a TextView with message 'This is RELEASE build' in release variant
Use buildConfigField or resource values to differentiate messages
Use a simple Activity with a TextView centered on screen
Starter Code
Android Kotlin
package com.example.buildvariantsdemo

import android.os.Bundle
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val messageTextView = findViewById<TextView>(R.id.messageTextView)
        // TODO: Set messageTextView text based on build variant
    }
}
Task 1
Task 2
Solution
Android Kotlin
package com.example.buildvariantsdemo

import android.os.Bundle
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val messageTextView = findViewById<TextView>(R.id.messageTextView)
        messageTextView.text = BuildConfig.BUILD_MESSAGE
    }
}

// In build.gradle (Module: app) add inside android block:
// buildTypes {
//     debug {
//         buildConfigField "String", "BUILD_MESSAGE", '"This is DEBUG build"'
//     }
//     release {
//         buildConfigField "String", "BUILD_MESSAGE", '"This is RELEASE build"'
//         minifyEnabled false
//         proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
//     }
// }

// In res/layout/activity_main.xml:
// <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
//     android:layout_width="match_parent"
//     android:layout_height="match_parent"
//     android:gravity="center"
//     android:orientation="vertical">
//
//     <TextView
//         android:id="@+id/messageTextView"
//         android:layout_width="wrap_content"
//         android:layout_height="wrap_content"
//         android:textSize="24sp" />
// </LinearLayout>

We use buildConfigField in the build.gradle file to define a string constant BUILD_MESSAGE that differs between debug and release builds. In the MainActivity, we set the TextView text to this constant. This way, when you run the app in debug mode, it shows "This is DEBUG build", and in release mode, it shows "This is RELEASE build". This demonstrates how build variants can change app behavior or content easily.

Final Result
Completed Screen
-------------------------
| Build Variants Demo    |
|-----------------------|
| Message:               |
| This is DEBUG build    |
|                       |
-------------------------
When running debug build, the message shows 'This is DEBUG build'.
When running release build, the message shows 'This is RELEASE build'.
Stretch Goal
Add a button that shows a Toast message indicating the current build variant.
💡 Hint
Use BuildConfig.DEBUG boolean to check if the build is debug or release and show appropriate Toast.