blob: 8686bdad589e5822d24ff3e7b720a93dad1129f4 [file] [log] [blame]
/*
* 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
}