plugins { alias(libs.plugins.android.application) alias(libs.plugins.jetbrains.kotlin.android) alias(libs.plugins.kotlin.serialization) alias(libs.plugins.hilt.android) alias(libs.plugins.kotlin.ksp) alias(libs.plugins.openapi.generator) id("kotlin-kapt") } val openapiOutputDir: String = layout.buildDirectory.dir("generated/api").get().asFile.path android { namespace = "top.rrricardo.chiara" compileSdk = 34 defaultConfig { applicationId = "top.rrricardo.chiara" minSdk = 28 targetSdk = 34 versionCode = 1 versionName = "1.0" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" vectorDrawables { useSupportLibrary = true } } sourceSets["main"].kotlin { srcDir("$openapiOutputDir/src/main/kotlin") } buildTypes { release { isMinifyEnabled = false proguardFiles( getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro" ) } } compileOptions { sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 } kotlinOptions { jvmTarget = "1.8" } buildFeatures { compose = true } composeOptions { kotlinCompilerExtensionVersion = "1.5.1" } packaging { resources { excludes += "/META-INF/{AL2.0,LGPL2.1}" } } } dependencies { // Default implementation(libs.androidx.core.ktx) 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) 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) // ViewModel implementation(libs.androidx.lifecycle.viewmodel.ktx) // ViewModel utilities for Compose implementation(libs.androidx.lifecycle.viewmodel.compose) // LiveData implementation(libs.androidx.lifecycle.livedata.ktx) // Lifecycles only (without ViewModel or LiveData) implementation(libs.androidx.lifecycle.runtime.ktx) // Lifecycle utilities for Compose implementation(libs.androidx.lifecycle.runtime.compose) // Saved state module for ViewModel implementation(libs.androidx.lifecycle.viewmodel.savedstate) // Annotation processor kapt(libs.androidx.lifecycle.compiler) // Navigation Controller implementation(libs.androidx.navigation.compose) // Palette implementation(libs.androidx.palette) // Media Exo Player implementation(libs.media3.exoplayer) implementation(libs.media3.session) implementation(libs.media3.ui) implementation(libs.media3.hls) // Hilt implementation(libs.hilt.android) implementation(libs.hilt.navigation.compose) kapt(libs.hilt.android.compiler) // Constraint Layout implementation(libs.constraintlayout.compose) // Coil implementation(libs.coil) // openapi implementation(libs.okhttp3) implementation(libs.retrofit.retrofit) implementation(libs.retrofit.converter.scalars) implementation(libs.retrofit.serialization.converter) implementation(libs.kotlinx.serialization) } openApiGenerate { generatorName.set("kotlin") inputSpec.set("$rootDir/app/src/main/openapi/chiara.json") outputDir.set(openapiOutputDir) apiPackage.set("top.rrricardo.chiara.openapi.api") modelPackage.set("top.rrricardo.chiara.openapi.model") packageName.set("top.rrricardo.chiara.openapi.client") generateApiTests.set(false) generateModelTests.set(false) configOptions.set( mapOf( "dataLibrary" to "java8" ) ) additionalProperties.set( mapOf( "library" to "jvm-retrofit2", "serializationLibrary" to "kotlinx_serialization", "useCoroutines" to "true", ) ) }