I making an app in Android Studio using Kotlin. I read about build types here: https://developer.android.com/build/build-variants. That page states:
Android Studio automatically creates the debug and release build types.
Although the debug build type doesn't appear in the build configuration file, Android Studio configures it with debuggable true.
A build type that doesn't appear seems hard to configure settings for. I want to set isCrunchPngs = false for both release and debug build types, to improve performance. (I am have already crunched/optimized them all manually, no un-crunched version exists in the project).
However, I can't tell if isCrunchPngs is actually set to false properly. It doesn't appear in the Project Structure GUI:
I don't even know if I am using the release build at all (which is a separate question here I will post soon )
viewBinding
and compose
are set to true, but for which build type? Just release, just debug, both?My apologies for the multiple questions, I thought them closely related enough to combine in a single post.
My forever gratitude!
My build.gradle is as follows:
plugins {
alias(libs.plugins.androidApplication)
alias(libs.plugins.jetbrainsKotlinAndroid)
id("com.google.gms.google-services")
}
android {
namespace = "com.example.vyze"
compileSdk = 34
defaultConfig {
applicationId = "com.example.vyze"
minSdk = 24
targetSdk = 34
versionCode = 1
versionName = "1.0"
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
vectorDrawables {
useSupportLibrary = true
}
}
buildTypes {
release {
isMinifyEnabled = false
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro"
)
isCrunchPngs = false
}
}
compileOptions {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = "1.8"
}
buildFeatures {
viewBinding = true
compose = true
}
composeOptions {
kotlinCompilerExtensionVersion = "1.5.1"
}
packaging {
resources {
excludes += "/META-INF/{AL2.0,LGPL2.1}"
}
}
}
dependencies {
implementation(libs.androidx.core.ktx)
implementation(libs.androidx.appcompat)
implementation(libs.material)
implementation(libs.androidx.activity)
implementation(libs.androidx.constraintlayout)
implementation(libs.firebase.auth)
implementation(libs.androidx.lifecycle.runtime.ktx)
implementation(libs.androidx.activity.compose)
implementation(platform(libs.androidx.compose.bom))
implementation(libs.androidx.ui)
implementation(libs.androidx.ui.graphics)
implementation(libs.androidx.ui.tooling.preview)
implementation(libs.androidx.material3)
implementation(libs.firebase.firestore)
testImplementation(libs.junit)
androidTestImplementation(libs.androidx.junit)
androidTestImplementation(libs.androidx.espresso.core)
androidTestImplementation(platform(libs.androidx.compose.bom))
androidTestImplementation(libs.androidx.ui.test.junit4)
debugImplementation(libs.androidx.ui.tooling)
debugImplementation(libs.androidx.ui.test.manifest)
}
Here's a quick answer for all of your questions
I don't even know if I am using the release build at all
You can generate a release build, from Android Studio, by referring to the guide here
Have I configured release build to crunch pngs correctly?
Yes, it appears like that from your build.gradle.kts
code
How do I configure the debug build to not crunch pngs, since the debug build doesn't appear in build.gradle?
You can simply add the debug build variant like so, and customise as per your needs
buildTypes {
release {
isMinifyEnabled = false
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro"
)
isCrunchPngs = false
}
debug {
// Configure your debug build here
}
}
In the buildFeatures section, viewBinding and compose are set to true, but for which build type? Just release, just debug, both?
Yes, these features, are not actually related to the build types at all, and enabling them would enable them for all your build variants. How would you build your app if you enable compose or view binding selectively. You can't