๐Ÿ“ฆ airbnb / Showkase

๐Ÿ“„ build.gradle ยท 107 lines
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107apply plugin: 'com.android.library'
apply plugin: 'kotlin-android'
apply plugin: 'org.jetbrains.kotlin.plugin.compose'

if (project.hasProperty('useKsp')) {
    apply plugin: 'com.google.devtools.ksp'
    ksp {
        arg("skipPrivatePreviews", "true")
    }
} else {
    apply plugin: 'kotlin-kapt'
    kapt {
        correctErrorTypes = true
        arguments {
            arg("skipPrivatePreviews", "true")
        }
    }
}

android {
    namespace "com.airbnb.android.showkase_browser_testing"
    // Added to avoid this error -
    // Execution failed for task ':showkase-processor-testing:mergeDebugAndroidTestJavaResource'.
    // > A failure occurred while executing com.android.build.gradle.internal.tasks.Workers$ActionFacade
    // > More than one file was found with OS independent path 'META-INF/gradle/incremental.annotation.processors'
    packagingOptions {
        exclude 'META-INF/gradle/incremental.annotation.processors'
        exclude("META-INF/*.kotlin_module")
    }

    defaultConfig {
        minSdkVersion 26
        compileSdk 36
        targetSdkVersion 33
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        // The following argument makes the Android Test Orchestrator run its
        // "pm clear" command after each test invocation. This command ensures
        // that the app's state is completely cleared between tests.
        testInstrumentationRunnerArguments clearPackageData: 'true'
        
        if (project.hasProperty('useKsp')) {
            buildConfigField "boolean", "IS_RUNNING_KSP", "true"
        } else {
            buildConfigField "boolean", "IS_RUNNING_KSP", "false"
        }
    }
    buildFeatures {
        compose true
        buildConfig = true
    }
    // Added to avoid this error -
    // Execution failed for task ':app:mergeDebugAndroidTestJavaResource'.
    // > A failure occurred while executing com.android.build.gradle.internal.tasks.MergeJavaResWorkAction
    // > 2 files found with path 'META-INF/AL2.0' from inputs:
    packagingOptions {
        exclude 'META-INF/AL2.0'
        exclude 'META-INF/LGPL2.1'
    }
    configurations {
        all {
            // work around this error:
            // Duplicate class org.intellij.lang.annotations.Identifier found in modules annotations-12.0 (com.intellij:annotations:12.0) and annotations-13.0 (org.jetbrains:annotations:13.0)
            exclude group: "com.intellij", module: "annotations"
        }
    }
}

kotlin {
    jvmToolchain(17)
}

dependencies {
    // Support Libraries
    implementation deps.support.appCompat
    // Submodule for testing
    implementation project(':showkase-browser-testing-submodule')
    implementation project(':showkase-browser-testing-submodule-2')

    // Showkase
    implementation project(':showkase')
    if (project.hasProperty('useKsp')) {
        ksp project(':showkase-processor')
    } else {
        kapt project(':showkase-processor')
    }
    implementation project(':showkase-processor')
    implementation project(':showkase-screenshot-testing')

    // Compose
    implementation deps.compose.activityCompose
    implementation deps.compose.composeRuntime
    implementation deps.compose.core
    implementation deps.compose.foundation
    implementation deps.compose.tooling
    androidTestImplementation deps.compose.uiTest

    // Material
    implementation deps.material.material
    implementation deps.material.mdcComposeThemeAdapter

    // Testing
    androidTestImplementation deps.test.junitImplementation
    androidTestImplementation deps.test.androidXTestCore
    androidTestImplementation deps.test.androidXTestRules
    androidTestImplementation deps.test.androidxTestRunner
}