/* * Copyright (C) 2023 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ plugins { alias(libs.plugins.android.application) alias(libs.plugins.kotlin.android) alias(libs.plugins.kotlin.kapt) alias(libs.plugins.dagger.hilt.android) } android { compileSdk = libs.versions.compileSdk.get().toInt() compileSdkPreview = libs.versions.compileSdkPreview.get() namespace = "com.google.jetpackcamera" defaultConfig { applicationId = "com.google.jetpackcamera" minSdk = libs.versions.minSdk.get().toInt() targetSdk = libs.versions.targetSdk.get().toInt() versionCode = 1 versionName = "0.1.0" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" } buildTypes { getByName("debug") { signingConfig = signingConfigs.getByName("debug") } getByName("release") { isMinifyEnabled = true proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt")) } create("benchmark") { initWith(buildTypes.getByName("release")) signingConfig = signingConfigs.getByName("debug") matchingFallbacks += listOf("release") } } flavorDimensions += "flavor" productFlavors { create("stable") { dimension = "flavor" isDefault = true } create("preview") { dimension = "flavor" targetSdkPreview = libs.versions.targetSdkPreview.get() } } compileOptions { sourceCompatibility = JavaVersion.VERSION_17 targetCompatibility = JavaVersion.VERSION_17 } kotlin { jvmToolchain(17) } buildFeatures { buildConfig = true compose = true } composeOptions { kotlinCompilerExtensionVersion = libs.versions.composeCompiler.get() } packaging { resources { excludes += "/META-INF/{AL2.0,LGPL2.1}" } } @Suppress("UnstableApiUsage") testOptions { managedDevices { localDevices { create("pixel2Api28") { device = "Pixel 2" apiLevel = 28 } create("pixel8Api34") { device = "Pixel 8" apiLevel = 34 systemImageSource = "aosp_atd" } } } } kotlinOptions { freeCompilerArgs += "-Xcontext-receivers" } } dependencies { implementation(libs.androidx.tracing) implementation(project(":core:common")) // Compose val composeBom = platform(libs.compose.bom) implementation(composeBom) androidTestImplementation(composeBom) // Compose - Material Design 3 implementation(libs.compose.material3) implementation(libs.compose.material.icons.extended) // Compose - Android Studio Preview support implementation(libs.compose.ui.tooling.preview) debugImplementation(libs.compose.ui.tooling) // Compose - Integration with ViewModels implementation(libs.androidx.lifecycle.viewmodel.compose) implementation(libs.androidx.lifecycle.runtime.compose) // Compose - Integration with Activities implementation(libs.androidx.activity.compose) // Compose - Testing androidTestImplementation(libs.compose.junit) // Testing testImplementation(libs.junit) androidTestImplementation(libs.androidx.junit) androidTestImplementation(libs.androidx.espresso.core) androidTestImplementation(libs.androidx.rules) androidTestImplementation(libs.androidx.uiautomator) androidTestImplementation(libs.truth) implementation(libs.androidx.core.ktx) implementation(libs.androidx.lifecycle.runtime.compose) // Hilt implementation(libs.dagger.hilt.android) kapt(libs.dagger.hilt.compiler) // Accompanist - Permissions implementation(libs.accompanist.permissions) // Jetpack Navigation implementation(libs.androidx.navigation.compose) // Access Settings data implementation(project(":data:settings")) // Camera Preview implementation(project(":feature:preview")) // Settings Screen implementation(project(":feature:settings")) // Permissions Screen implementation(project(":feature:permissions")) // benchmark implementation(libs.androidx.profileinstaller) } // Allow references to generated code kapt { correctErrorTypes = true }