1// Copyright (C) 2023 The Android Open Source Project
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7//      http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14buildscript {
15    ext.versions = [
16            'gradle'       : '8.1.0',
17            'minSdk'       : 34,
18            'targetSdk'    : 34,
19            'compileSdk'   : 34,
20            'buildTools'   : '30.0.3',
21            'kotlin'       : '1.6.21',
22            'ktx'          : '1.10.1',
23            'coroutines'   : '1.6.4',
24            'appcompat'    : '1.6.1',
25            'androidXLib'  : '1.1.0-alpha02',
26            'androidXRun'  : '1.1.0-alpha4',
27            'guava'        : '31.0.1-android',
28            'filament'     : '1.12.5',
29            'dagger'       : '2.44',
30            'material'     : '1.9.0',
31            'junit'        : '4.13.2',
32            'androidXTest' : '1.5.0',
33            'mockito'      : '2.28.3',
34    ]
35
36    repositories {
37        google()
38        mavenCentral()
39    }
40
41    dependencies {
42        classpath "com.android.tools.build:gradle:$versions.gradle"
43        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.8.0"
44    }
45}
46
47allprojects {
48    repositories {
49        google()
50        mavenCentral()
51    }
52}
53
54apply plugin: 'com.android.application'
55apply plugin: 'kotlin-android'
56apply plugin: 'org.jetbrains.kotlin.kapt'
57
58android {
59    namespace 'com.google.android.wallpaper.weathereffects'
60    compileSdk versions.compileSdk
61
62    defaultConfig {
63        applicationId 'com.google.android.wallpaper.weathereffects'
64        minSdk versions.minSdk
65        targetSdk versions.targetSdk
66        versionCode 1
67        versionName '0.1.0'
68        signingConfig signingConfigs.debug
69
70        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
71    }
72
73    sourceSets {
74        main {
75            // TODO: Split out debug source.
76            java.srcDirs = ["${rootDir}/src", "${rootDir}/debug/src"]
77            res.srcDirs = ["${rootDir}/res", "${rootDir}/debug/res"]
78            manifest.srcFile "AndroidManifest.xml"
79        }
80
81        debug {
82            java.srcDirs = ["${rootDir}/debug/src"]
83            res.srcDirs = ["${rootDir}/debug/res"]
84            assets.srcDirs = ["${rootDir}/debug/assets"]
85            manifest.srcFile "debug/AndroidManifest.xml"
86        }
87
88        test {
89            java.srcDirs = ["${rootDir}/unitTests/src"]
90            res.srcDirs = ["${rootDir}/unitTests/res"]
91        }
92
93        androidTest {
94            java.srcDirs = ["${rootDir}/tests/src"]
95            res.srcDirs = ["${rootDir}/tests/res"]
96        }
97    }
98
99    buildTypes {
100        debug {
101            minifyEnabled false
102            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
103            testCoverageEnabled true
104        }
105
106        release {
107            minifyEnabled true
108            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
109            testCoverageEnabled true
110        }
111    }
112
113    compileOptions {
114        sourceCompatibility JavaVersion.VERSION_17
115        targetCompatibility JavaVersion.VERSION_17
116    }
117
118    kotlinOptions {
119        jvmTarget = '17'
120    }
121
122    testOptions {
123        unitTests {
124            includeAndroidResources = true
125        }
126    }
127}
128
129dependencies {
130    implementation project(':toruslib')
131    implementation project(':graphics')
132
133    implementation "androidx.slice:slice-builders:$versions.androidXLib"
134    implementation "androidx.slice:slice-core:$versions.androidXLib"
135    implementation "androidx.core:core-ktx:$versions.ktx"
136    implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:$versions.coroutines"
137    implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:$versions.coroutines"
138    implementation "androidx.appcompat:appcompat:$versions.appcompat"
139    implementation "androidx.constraintlayout:constraintlayout:2.1.4"
140
141    debugImplementation "com.google.android.material:material:$versions.material"
142
143    androidTestImplementation "junit:junit:$versions.junit"
144    androidTestImplementation "androidx.test:core:$versions.androidXTest"
145    androidTestImplementation "androidx.test:rules:$versions.androidXTest"
146    androidTestImplementation "androidx.test:runner:1.5.2"
147    androidTestImplementation 'androidx.test.ext:junit-ktx:1.1.5'
148    androidTestImplementation "com.google.truth:truth:1.1.3"
149    androidTestImplementation "org.mockito:mockito-core:5.3.1"
150    androidTestImplementation "com.linkedin.dexmaker:dexmaker-mockito-inline:$versions.mockito"
151    androidTestImplementation "com.linkedin.dexmaker:dexmaker-mockito-inline-extended:$versions.mockito"
152    androidTestImplementation "org.jetbrains.kotlinx:kotlinx-coroutines-test:$versions.coroutines"
153    androidTestImplementation "org.jetbrains.kotlinx:kotlinx-coroutines-test:$versions.coroutines"
154
155    // Dagger
156    api "com.google.dagger:dagger:$versions.dagger"
157    api "com.google.dagger:dagger-android:$versions.dagger"
158    kapt "com.google.dagger:dagger-compiler:$versions.dagger"
159    kapt "com.google.dagger:dagger-android-processor:$versions.dagger"
160    kaptAndroidTest "com.google.dagger:dagger-compiler:$versions.dagger"
161    kaptAndroidTest "com.google.dagger:dagger-android-processor:$versions.dagger"
162}
163