/* * Copyright (C) 2020 The Dagger Authors. * * 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. */ import org.gradle.util.VersionNumber apply plugin: 'com.android.application' apply plugin: 'com.google.dagger.hilt.android' // Gets additional test directories to be added to test and androidTest source // sets. If the directory name is appended with '-agp-x.x.x' then the directory // is conditionally added based on the AGP version of the project. def getAdditionalTestDirs(String variant) { def testDirs = [ 'androidTest': [], 'sharedTest': ['src/sharedTest/java'], 'test': [] ] def suffix = '-agp-' def agpVersion = VersionNumber.parse(agp_version) file("${getProjectDir().absolutePath}/src").eachFile { file -> int indexOf = file.name.indexOf(suffix) if (file.isDirectory() && indexOf != -1) { def dirAgpVersion = VersionNumber.parse(file.name.substring(indexOf + suffix.length())) if (agpVersion >= dirAgpVersion) { testDirs[file.name.substring(0, indexOf)].add("src/${file.name}/java") } } } return testDirs[variant] + testDirs['sharedTest'] } android { compileSdkVersion 33 buildToolsVersion "33.0.0" defaultConfig { applicationId "dagger.hilt.android.simple" minSdkVersion 16 targetSdkVersion 33 versionCode 1 versionName "1.0" testInstrumentationRunner "dagger.hilt.android.simple.SimpleEmulatorTestRunner" } compileOptions { sourceCompatibility JavaVersion.VERSION_11 targetCompatibility JavaVersion.VERSION_11 } testOptions { unitTests.includeAndroidResources = true } lintOptions { checkReleaseBuilds = false } sourceSets { test { java.srcDirs += getAdditionalTestDirs("test") } androidTest { java.srcDirs += getAdditionalTestDirs("androidTest") } } flavorDimensions "tier" productFlavors { free { dimension "tier" } pro { dimension "tier" matchingFallbacks = ["free"] } } } hilt { enableTransformForLocalTests = true enableAggregatingTask = true } configurations.all { resolutionStrategy.eachDependency { DependencyResolveDetails details -> if ("$dagger_version" == 'LOCAL-SNAPSHOT' && details.requested.group == 'com.google.dagger') { details.useVersion 'LOCAL-SNAPSHOT' details.because 'LOCAL-SNAPSHOT should act as latest version.' } } } dependencies { implementation project(':feature') implementation project(':lib') implementation 'androidx.appcompat:appcompat:1.2.0' implementation "com.google.dagger:hilt-android:$dagger_version" annotationProcessor "com.google.dagger:hilt-compiler:$dagger_version" testImplementation 'com.google.truth:truth:1.0.1' testImplementation 'junit:junit:4.13' testImplementation 'org.robolectric:robolectric:4.5-alpha-3' testImplementation 'androidx.core:core:1.3.2' testImplementation 'androidx.test.ext:junit:1.1.3' testImplementation 'androidx.test:runner:1.4.0' testImplementation 'androidx.test.espresso:espresso-core:3.4.0' testImplementation "com.google.dagger:hilt-android-testing:$dagger_version" testAnnotationProcessor "com.google.dagger:hilt-compiler:$dagger_version" androidTestImplementation 'com.google.truth:truth:1.0.1' androidTestImplementation 'junit:junit:4.13' androidTestImplementation 'androidx.test.ext:junit:1.1.3' androidTestImplementation 'androidx.test:runner:1.4.0' androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' androidTestImplementation "com.google.dagger:hilt-android-testing:$dagger_version" androidTestAnnotationProcessor "com.google.dagger:hilt-compiler:$dagger_version" // To help us catch usages of Guava APIs for Java 8 in the '-jre' variant. annotationProcessor'com.google.guava:guava:28.1-android' testAnnotationProcessor'com.google.guava:guava:28.1-android' androidTestAnnotationProcessor'com.google.guava:guava:28.1-android' // To help us catch version skew related issues in hilt extensions. // TODO(bcorso): Add examples testing the actual API. implementation 'androidx.hilt:hilt-work:1.0.0' annotationProcessor 'androidx.hilt:hilt-compiler:1.0.0' testAnnotationProcessor 'androidx.hilt:hilt-compiler:1.0.0' androidTestAnnotationProcessor 'androidx.hilt:hilt-compiler:1.0.0' }