0
0
Android Kotlinmobile~20 mins

App size optimization in Android Kotlin - Mini App: Build & Ship

Choose your learning style9 modes available
Build: App Size Optimization Demo
This screen demonstrates simple techniques to reduce app size by removing unused resources and enabling code shrinking.
Target UI
-------------------------
| App Size Optimization |
|-----------------------|
| [Optimize Button]     |
|                       |
| Status: Ready         |
-------------------------
Add a button labeled 'Optimize' that simulates app size optimization.
Display a status text below the button showing 'Ready' initially.
When the button is clicked, update the status text to 'Optimization Complete'.
Use ProGuard/R8 configuration to enable code shrinking and resource shrinking in build.gradle.
Remove unused drawable resource from the project (simulate by not referencing it).
Starter Code
Android Kotlin
package com.example.appsizeoptimization

import android.os.Bundle
import android.widget.Button
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 optimizeButton: Button = findViewById(R.id.optimizeButton)
        val statusText: TextView = findViewById(R.id.statusText)

        // TODO: Add click listener to update status text
    }
}
Task 1
Task 2
Task 3
Solution
Android Kotlin
package com.example.appsizeoptimization

import android.os.Bundle
import android.widget.Button
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 optimizeButton: Button = findViewById(R.id.optimizeButton)
        val statusText: TextView = findViewById(R.id.statusText)

        optimizeButton.setOnClickListener {
            statusText.text = "Optimization Complete"
        }
    }
}

/* build.gradle (Module: app) snippet:
android {
    buildTypes {
        release {
            minifyEnabled true
            shrinkResources true
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
}
*/

We added a click listener to the 'Optimize' button that changes the status text to 'Optimization Complete' when clicked. This simulates the user triggering an optimization action.

In the build.gradle file, enabling minifyEnabled and shrinkResources activates code shrinking and resource shrinking using R8 and ProGuard. This reduces the app size by removing unused code and resources.

Unused drawable resources should be removed from the project folder to avoid increasing app size unnecessarily.

Final Result
Completed Screen
-------------------------
| App Size Optimization |
|-----------------------|
| [Optimize Button]     |
|                       |
| Status: Optimization   |
|         Complete      |
-------------------------
User taps the 'Optimize' button.
Status text changes from 'Ready' to 'Optimization Complete'.
Stretch Goal
Add a toggle switch to enable or disable code shrinking at runtime simulation.
💡 Hint
Use a Switch widget and update a TextView to show if shrinking is enabled or disabled.