1*7e7863daSAndroid Build Coastguard Worker /* 2*7e7863daSAndroid Build Coastguard Worker * Copyright (C) 2023 The Android Open Source Project 3*7e7863daSAndroid Build Coastguard Worker * 4*7e7863daSAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License"); 5*7e7863daSAndroid Build Coastguard Worker * you may not use this file except in compliance with the License. 6*7e7863daSAndroid Build Coastguard Worker * You may obtain a copy of the License at 7*7e7863daSAndroid Build Coastguard Worker * 8*7e7863daSAndroid Build Coastguard Worker * http://www.apache.org/licenses/LICENSE-2.0 9*7e7863daSAndroid Build Coastguard Worker * 10*7e7863daSAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software 11*7e7863daSAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS, 12*7e7863daSAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*7e7863daSAndroid Build Coastguard Worker * See the License for the specific language governing permissions and 14*7e7863daSAndroid Build Coastguard Worker * limitations under the License. 15*7e7863daSAndroid Build Coastguard Worker */ 16*7e7863daSAndroid Build Coastguard Worker <lambda>null17*7e7863daSAndroid Build Coastguard Workerplugins { 18*7e7863daSAndroid Build Coastguard Worker alias(libs.plugins.android.library) 19*7e7863daSAndroid Build Coastguard Worker alias(libs.plugins.kotlin.android) 20*7e7863daSAndroid Build Coastguard Worker alias(libs.plugins.kotlin.kapt) 21*7e7863daSAndroid Build Coastguard Worker alias(libs.plugins.dagger.hilt.android) 22*7e7863daSAndroid Build Coastguard Worker } 23*7e7863daSAndroid Build Coastguard Worker <lambda>null24*7e7863daSAndroid Build Coastguard Workerandroid { 25*7e7863daSAndroid Build Coastguard Worker namespace = "com.google.jetpackcamera.feature.preview" 26*7e7863daSAndroid Build Coastguard Worker compileSdk = libs.versions.compileSdk.get().toInt() 27*7e7863daSAndroid Build Coastguard Worker compileSdkPreview = libs.versions.compileSdkPreview.get() 28*7e7863daSAndroid Build Coastguard Worker 29*7e7863daSAndroid Build Coastguard Worker defaultConfig { 30*7e7863daSAndroid Build Coastguard Worker minSdk = libs.versions.minSdk.get().toInt() 31*7e7863daSAndroid Build Coastguard Worker testOptions.targetSdk = libs.versions.targetSdk.get().toInt() 32*7e7863daSAndroid Build Coastguard Worker lint.targetSdk = libs.versions.targetSdk.get().toInt() 33*7e7863daSAndroid Build Coastguard Worker 34*7e7863daSAndroid Build Coastguard Worker testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" 35*7e7863daSAndroid Build Coastguard Worker } 36*7e7863daSAndroid Build Coastguard Worker 37*7e7863daSAndroid Build Coastguard Worker flavorDimensions += "flavor" 38*7e7863daSAndroid Build Coastguard Worker productFlavors { 39*7e7863daSAndroid Build Coastguard Worker create("stable") { 40*7e7863daSAndroid Build Coastguard Worker dimension = "flavor" 41*7e7863daSAndroid Build Coastguard Worker isDefault = true 42*7e7863daSAndroid Build Coastguard Worker } 43*7e7863daSAndroid Build Coastguard Worker 44*7e7863daSAndroid Build Coastguard Worker create("preview") { 45*7e7863daSAndroid Build Coastguard Worker dimension = "flavor" 46*7e7863daSAndroid Build Coastguard Worker targetSdkPreview = libs.versions.targetSdkPreview.get() 47*7e7863daSAndroid Build Coastguard Worker } 48*7e7863daSAndroid Build Coastguard Worker } 49*7e7863daSAndroid Build Coastguard Worker 50*7e7863daSAndroid Build Coastguard Worker compileOptions { 51*7e7863daSAndroid Build Coastguard Worker sourceCompatibility = JavaVersion.VERSION_17 52*7e7863daSAndroid Build Coastguard Worker targetCompatibility = JavaVersion.VERSION_17 53*7e7863daSAndroid Build Coastguard Worker } 54*7e7863daSAndroid Build Coastguard Worker kotlin { 55*7e7863daSAndroid Build Coastguard Worker jvmToolchain(17) 56*7e7863daSAndroid Build Coastguard Worker } 57*7e7863daSAndroid Build Coastguard Worker buildFeatures { 58*7e7863daSAndroid Build Coastguard Worker buildConfig = true 59*7e7863daSAndroid Build Coastguard Worker compose = true 60*7e7863daSAndroid Build Coastguard Worker } 61*7e7863daSAndroid Build Coastguard Worker composeOptions { 62*7e7863daSAndroid Build Coastguard Worker kotlinCompilerExtensionVersion = libs.versions.composeCompiler.get() 63*7e7863daSAndroid Build Coastguard Worker } 64*7e7863daSAndroid Build Coastguard Worker 65*7e7863daSAndroid Build Coastguard Worker @Suppress("UnstableApiUsage") 66*7e7863daSAndroid Build Coastguard Worker testOptions { 67*7e7863daSAndroid Build Coastguard Worker unitTests { 68*7e7863daSAndroid Build Coastguard Worker isReturnDefaultValues = true 69*7e7863daSAndroid Build Coastguard Worker isIncludeAndroidResources = true 70*7e7863daSAndroid Build Coastguard Worker } 71*7e7863daSAndroid Build Coastguard Worker managedDevices { 72*7e7863daSAndroid Build Coastguard Worker localDevices { 73*7e7863daSAndroid Build Coastguard Worker create("pixel2Api28") { 74*7e7863daSAndroid Build Coastguard Worker device = "Pixel 2" 75*7e7863daSAndroid Build Coastguard Worker apiLevel = 28 76*7e7863daSAndroid Build Coastguard Worker } 77*7e7863daSAndroid Build Coastguard Worker create("pixel8Api34") { 78*7e7863daSAndroid Build Coastguard Worker device = "Pixel 8" 79*7e7863daSAndroid Build Coastguard Worker apiLevel = 34 80*7e7863daSAndroid Build Coastguard Worker systemImageSource = "aosp_atd" 81*7e7863daSAndroid Build Coastguard Worker } 82*7e7863daSAndroid Build Coastguard Worker } 83*7e7863daSAndroid Build Coastguard Worker } 84*7e7863daSAndroid Build Coastguard Worker } 85*7e7863daSAndroid Build Coastguard Worker 86*7e7863daSAndroid Build Coastguard Worker kotlinOptions { 87*7e7863daSAndroid Build Coastguard Worker freeCompilerArgs += "-Xcontext-receivers" 88*7e7863daSAndroid Build Coastguard Worker } 89*7e7863daSAndroid Build Coastguard Worker } 90*7e7863daSAndroid Build Coastguard Worker <lambda>null91*7e7863daSAndroid Build Coastguard Workerdependencies { 92*7e7863daSAndroid Build Coastguard Worker // Reflect 93*7e7863daSAndroid Build Coastguard Worker implementation(libs.kotlin.reflect) 94*7e7863daSAndroid Build Coastguard Worker // Compose 95*7e7863daSAndroid Build Coastguard Worker val composeBom = platform(libs.compose.bom) 96*7e7863daSAndroid Build Coastguard Worker implementation(composeBom) 97*7e7863daSAndroid Build Coastguard Worker androidTestImplementation(composeBom) 98*7e7863daSAndroid Build Coastguard Worker 99*7e7863daSAndroid Build Coastguard Worker // Compose - Material Design 3 100*7e7863daSAndroid Build Coastguard Worker implementation(libs.compose.material3) 101*7e7863daSAndroid Build Coastguard Worker implementation(libs.compose.material.icons.extended) 102*7e7863daSAndroid Build Coastguard Worker 103*7e7863daSAndroid Build Coastguard Worker // Compose - Android Studio Preview support 104*7e7863daSAndroid Build Coastguard Worker implementation(libs.compose.ui.tooling.preview) 105*7e7863daSAndroid Build Coastguard Worker debugImplementation(libs.compose.ui.tooling) 106*7e7863daSAndroid Build Coastguard Worker 107*7e7863daSAndroid Build Coastguard Worker // Compose - Integration with ViewModels with Navigation and Hilt 108*7e7863daSAndroid Build Coastguard Worker implementation(libs.hilt.navigation.compose) 109*7e7863daSAndroid Build Coastguard Worker 110*7e7863daSAndroid Build Coastguard Worker // Compose - Lifecycle utilities 111*7e7863daSAndroid Build Coastguard Worker implementation(libs.androidx.lifecycle.viewmodel.compose) 112*7e7863daSAndroid Build Coastguard Worker implementation(libs.androidx.lifecycle.runtime.compose) 113*7e7863daSAndroid Build Coastguard Worker 114*7e7863daSAndroid Build Coastguard Worker // Compose - Testing 115*7e7863daSAndroid Build Coastguard Worker androidTestImplementation(libs.compose.junit) 116*7e7863daSAndroid Build Coastguard Worker debugImplementation(libs.compose.test.manifest) 117*7e7863daSAndroid Build Coastguard Worker // noinspection TestManifestGradleConfiguration: required for release build unit tests 118*7e7863daSAndroid Build Coastguard Worker testImplementation(libs.compose.test.manifest) 119*7e7863daSAndroid Build Coastguard Worker testImplementation(libs.compose.junit) 120*7e7863daSAndroid Build Coastguard Worker 121*7e7863daSAndroid Build Coastguard Worker // Testing 122*7e7863daSAndroid Build Coastguard Worker testImplementation(libs.junit) 123*7e7863daSAndroid Build Coastguard Worker testImplementation(libs.truth) 124*7e7863daSAndroid Build Coastguard Worker testImplementation(libs.mockito.core) 125*7e7863daSAndroid Build Coastguard Worker testImplementation(libs.kotlinx.coroutines.test) 126*7e7863daSAndroid Build Coastguard Worker testImplementation(libs.robolectric) 127*7e7863daSAndroid Build Coastguard Worker debugImplementation(libs.androidx.test.monitor) 128*7e7863daSAndroid Build Coastguard Worker implementation(libs.androidx.junit) 129*7e7863daSAndroid Build Coastguard Worker androidTestImplementation(libs.androidx.junit) 130*7e7863daSAndroid Build Coastguard Worker androidTestImplementation(libs.androidx.espresso.core) 131*7e7863daSAndroid Build Coastguard Worker 132*7e7863daSAndroid Build Coastguard Worker // Futures 133*7e7863daSAndroid Build Coastguard Worker implementation(libs.futures.ktx) 134*7e7863daSAndroid Build Coastguard Worker 135*7e7863daSAndroid Build Coastguard Worker // CameraX 136*7e7863daSAndroid Build Coastguard Worker implementation(libs.camera.core) 137*7e7863daSAndroid Build Coastguard Worker implementation(libs.camera.viewfinder.compose) 138*7e7863daSAndroid Build Coastguard Worker 139*7e7863daSAndroid Build Coastguard Worker // Hilt 140*7e7863daSAndroid Build Coastguard Worker implementation(libs.dagger.hilt.android) 141*7e7863daSAndroid Build Coastguard Worker kapt(libs.dagger.hilt.compiler) 142*7e7863daSAndroid Build Coastguard Worker 143*7e7863daSAndroid Build Coastguard Worker //Tracing 144*7e7863daSAndroid Build Coastguard Worker implementation(libs.androidx.tracing) 145*7e7863daSAndroid Build Coastguard Worker 146*7e7863daSAndroid Build Coastguard Worker implementation(libs.kotlinx.atomicfu) 147*7e7863daSAndroid Build Coastguard Worker 148*7e7863daSAndroid Build Coastguard Worker // Project dependencies 149*7e7863daSAndroid Build Coastguard Worker implementation(project(":data:settings")) 150*7e7863daSAndroid Build Coastguard Worker implementation(project(":core:camera")) 151*7e7863daSAndroid Build Coastguard Worker implementation(project(":core:common")) 152*7e7863daSAndroid Build Coastguard Worker testImplementation(project(":core:common")) 153*7e7863daSAndroid Build Coastguard Worker } 154*7e7863daSAndroid Build Coastguard Worker 155*7e7863daSAndroid Build Coastguard Worker // Allow references to generated code 156*7e7863daSAndroid Build Coastguard Worker kapt { 157*7e7863daSAndroid Build Coastguard Worker correctErrorTypes = true 158*7e7863daSAndroid Build Coastguard Worker }