295 lines
10 KiB
Kotlin
295 lines
10 KiB
Kotlin
/*
|
|
* Copyright 2022 Google LLC
|
|
*
|
|
* 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
|
|
*
|
|
* https://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 {
|
|
id("com.android.application")
|
|
kotlin("android")
|
|
kotlin("kapt")
|
|
id("androidx.navigation.safeargs.kotlin")
|
|
id("com.google.firebase.crashlytics")
|
|
id("dagger.hilt.android.plugin")
|
|
}
|
|
|
|
android {
|
|
compileSdk = Versions.COMPILE_SDK
|
|
defaultConfig {
|
|
applicationId = "com.google.samples.apps.iosched"
|
|
minSdk = Versions.MIN_SDK
|
|
targetSdk = Versions.TARGET_SDK
|
|
versionCode = Versions.versionCodeMobile
|
|
versionName = Versions.versionName
|
|
testInstrumentationRunner = "com.google.samples.apps.iosched.tests.CustomTestRunner"
|
|
|
|
buildConfigField(
|
|
"com.google.android.gms.maps.model.LatLng",
|
|
"MAP_VIEWPORT_BOUND_NE",
|
|
"new com.google.android.gms.maps.model.LatLng(${project.properties["map_viewport_bound_ne"]})"
|
|
)
|
|
buildConfigField(
|
|
"com.google.android.gms.maps.model.LatLng",
|
|
"MAP_VIEWPORT_BOUND_SW",
|
|
"new com.google.android.gms.maps.model.LatLng(${project.properties["map_viewport_bound_sw"]})"
|
|
)
|
|
|
|
buildConfigField("float", "MAP_CAMERA_FOCUS_ZOOM", project.properties["map_camera_focus_zoom"] as String)
|
|
|
|
resValue("dimen", "map_camera_bearing", project.properties["map_default_camera_bearing"] as String)
|
|
resValue("dimen", "map_camera_target_lat", project.properties["map_default_camera_target_lat"] as String)
|
|
resValue("dimen", "map_camera_target_lng", project.properties["map_default_camera_target_lng"] as String)
|
|
resValue("dimen", "map_camera_tilt", project.properties["map_default_camera_tilt"] as String)
|
|
resValue("dimen", "map_camera_zoom", project.properties["map_default_camera_zoom"] as String)
|
|
resValue("dimen", "map_viewport_min_zoom", project.properties["map_viewport_min_zoom"] as String)
|
|
resValue("dimen", "map_viewport_max_zoom", project.properties["map_viewport_max_zoom"] as String)
|
|
|
|
manifestPlaceholders["crashlyticsEnabled"] = true
|
|
|
|
vectorDrawables.useSupportLibrary = true
|
|
|
|
javaCompileOptions {
|
|
annotationProcessorOptions {
|
|
arguments["room.incremental"] = "true"
|
|
}
|
|
}
|
|
}
|
|
buildTypes {
|
|
getByName("release") {
|
|
isMinifyEnabled = true
|
|
// TODO: b/120517460 shrinkResource can't be used with dynamic-feature at this moment.
|
|
// Need to ensure the app size has not increased
|
|
manifestPlaceholders["crashlyticsEnabled"] = true
|
|
proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro")
|
|
resValue(
|
|
"string",
|
|
"google_maps_key",
|
|
"AIzaSyD5jqwKMm1SeoYsW25vxCXfTlhDBeZ4H5c"
|
|
)
|
|
|
|
buildConfigField("String", "MAP_TILE_URL_BASE", "\"https://storage.googleapis.com/io2019-festivus-prod/images/maptiles\"")
|
|
}
|
|
getByName("debug") {
|
|
versionNameSuffix = "-debug"
|
|
manifestPlaceholders["crashlyticsEnabled"] = false
|
|
resValue(
|
|
"string",
|
|
"google_maps_key",
|
|
"AIzaSyAhJx57ikQH9rYc8IT8W3d2As5cGHMBvuo"
|
|
)
|
|
|
|
buildConfigField("String", "MAP_TILE_URL_BASE", "\"https://storage.googleapis.com/io2019-festivus/images/maptiles\"")
|
|
}
|
|
maybeCreate("staging")
|
|
getByName("staging") {
|
|
initWith(getByName("debug"))
|
|
versionNameSuffix = "-staging"
|
|
|
|
// Specifies a sorted list of fallback build types that the
|
|
// plugin should try to use when a dependency does not include a
|
|
// "staging" build type.
|
|
// Used with :test-shared, which doesn't have a staging variant.
|
|
matchingFallbacks += listOf("debug")
|
|
}
|
|
|
|
maybeCreate("benchmark")
|
|
getByName("benchmark") {
|
|
initWith(getByName("staging"))
|
|
versionNameSuffix = "-benchmark"
|
|
isMinifyEnabled = true
|
|
isDebuggable = false
|
|
proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro", "proguard-rules-benchmark.pro")
|
|
|
|
// Specifies a sorted list of fallback build types that the
|
|
// plugin should try to use when a dependency does not include a
|
|
// "benchmark" build type.
|
|
// Used with :test-shared, which doesn't have a benchmark variant.
|
|
matchingFallbacks += listOf("staging", "debug")
|
|
}
|
|
}
|
|
|
|
buildFeatures {
|
|
viewBinding = true
|
|
dataBinding = true
|
|
compose = true
|
|
}
|
|
|
|
composeOptions {
|
|
kotlinCompilerExtensionVersion = Versions.COMPOSE
|
|
}
|
|
|
|
signingConfigs {
|
|
// We need to sign debug builds with a debug key to make firebase auth happy
|
|
getByName("debug") {
|
|
storeFile = file("../debug.keystore")
|
|
keyAlias = "androiddebugkey"
|
|
keyPassword = "android"
|
|
storePassword = "android"
|
|
}
|
|
}
|
|
|
|
// debug and release variants share the same source dir
|
|
sourceSets {
|
|
getByName("debug") {
|
|
java.srcDir("src/debugRelease/java")
|
|
}
|
|
getByName("release") {
|
|
java.srcDir("src/debugRelease/java")
|
|
}
|
|
getByName("benchmark") {
|
|
java.srcDir("src/staging/java")
|
|
res.srcDir("src/staging/res")
|
|
}
|
|
}
|
|
|
|
lint {
|
|
// Eliminates UnusedResources false positives for resources used in DataBinding layouts
|
|
checkGeneratedSources = true
|
|
// Running lint over the debug variant is enough
|
|
checkReleaseBuilds = false
|
|
// See lint.xml for rules configuration
|
|
|
|
// TODO: Remove when upgrading lifecycle from `2.4.0-alpha01`.
|
|
// Fix: https://android-review.googlesource.com/c/platform/frameworks/support/+/1697465
|
|
// Bug: https://issuetracker.google.com/184830263
|
|
disable += "NullSafeMutableLiveData"
|
|
}
|
|
|
|
testBuildType = "staging"
|
|
|
|
// Required for AR because it includes a library built with Java 8
|
|
compileOptions {
|
|
sourceCompatibility = JavaVersion.VERSION_1_8
|
|
targetCompatibility = JavaVersion.VERSION_1_8
|
|
}
|
|
// To avoid the compile error: "Cannot inline bytecode built with JVM target 1.8
|
|
// into bytecode that is being built with JVM target 1.6"
|
|
kotlinOptions {
|
|
val options = this as org.jetbrains.kotlin.gradle.dsl.KotlinJvmOptions
|
|
options.jvmTarget = "1.8"
|
|
}
|
|
|
|
packagingOptions {
|
|
resources.excludes += "META-INF/AL2.0"
|
|
resources.excludes += "META-INF/LGPL2.1"
|
|
}
|
|
}
|
|
|
|
kapt {
|
|
arguments {
|
|
arg("dagger.hilt.shareTestComponents", "true")
|
|
}
|
|
}
|
|
|
|
dependencies {
|
|
api(platform(project(":depconstraints")))
|
|
kapt(platform(project(":depconstraints")))
|
|
androidTestApi(platform(project(":depconstraints")))
|
|
|
|
implementation(project(":shared"))
|
|
implementation(project(":ar"))
|
|
testImplementation(project(":test-shared"))
|
|
testImplementation(project(":androidTest-shared"))
|
|
implementation(fileTree(mapOf("dir" to "libs", "include" to listOf("*.jar"))))
|
|
|
|
implementation(Libs.CORE_KTX)
|
|
implementation(Libs.APP_STARTUP)
|
|
implementation(Libs.PROFILE_INSTALLER)
|
|
|
|
// UI
|
|
implementation(Libs.ACTIVITY_KTX)
|
|
implementation(Libs.APPCOMPAT)
|
|
implementation(Libs.FRAGMENT_KTX)
|
|
implementation(Libs.CARDVIEW)
|
|
implementation(Libs.BROWSER)
|
|
implementation(Libs.CONSTRAINT_LAYOUT)
|
|
implementation(Libs.DRAWER_LAYOUT)
|
|
implementation(Libs.MATERIAL)
|
|
implementation(Libs.FLEXBOX)
|
|
implementation(Libs.LOTTIE)
|
|
implementation(Libs.INK_PAGE_INDICATOR)
|
|
implementation(Libs.SLIDING_PANE_LAYOUT)
|
|
|
|
// Architecture Components
|
|
implementation(Libs.LIFECYCLE_LIVE_DATA_KTX)
|
|
implementation(Libs.LIFECYCLE_RUNTIME_KTX)
|
|
kapt(Libs.LIFECYCLE_COMPILER)
|
|
testImplementation(Libs.ARCH_TESTING)
|
|
implementation(Libs.NAVIGATION_FRAGMENT_KTX)
|
|
implementation(Libs.NAVIGATION_UI_KTX)
|
|
implementation(Libs.ROOM_KTX)
|
|
implementation(Libs.ROOM_RUNTIME)
|
|
kapt(Libs.ROOM_COMPILER)
|
|
testImplementation(Libs.ROOM_KTX)
|
|
testImplementation(Libs.ROOM_RUNTIME)
|
|
|
|
// Compose
|
|
implementation(Libs.ACTIVITY_COMPOSE)
|
|
implementation(Libs.COMPOSE_ANIMATION)
|
|
implementation(Libs.COMPOSE_MATERIAL)
|
|
implementation(Libs.COMPOSE_RUNTIME)
|
|
implementation(Libs.COMPOSE_THEME_ADAPTER)
|
|
implementation(Libs.COMPOSE_TOOLING)
|
|
implementation(Libs.VIEWMODEL_COMPOSE)
|
|
implementation(Libs.MDC_COMPOSE_THEME_ADAPTER)
|
|
androidTestImplementation(Libs.COMPOSE_TEST)
|
|
|
|
// Dagger Hilt
|
|
implementation(Libs.HILT_ANDROID)
|
|
androidTestImplementation(Libs.HILT_TESTING)
|
|
kapt(Libs.HILT_COMPILER)
|
|
kaptAndroidTest(Libs.HILT_COMPILER)
|
|
|
|
// DataStore
|
|
implementation(Libs.DATA_STORE_PREFERENCES)
|
|
androidTestImplementation(Libs.DATA_STORE_PREFERENCES)
|
|
|
|
// Glide
|
|
implementation(Libs.GLIDE)
|
|
kapt(Libs.GLIDE_COMPILER)
|
|
|
|
// Fabric and Firebase
|
|
implementation(Libs.FIREBASE_UI_AUTH)
|
|
implementation(Libs.CRASHLYTICS)
|
|
|
|
// Date and time API for Java.
|
|
implementation(Libs.THREETENABP)
|
|
testImplementation(Libs.THREETENBP)
|
|
|
|
// Kotlin
|
|
implementation(Libs.KOTLIN_STDLIB)
|
|
|
|
// Instrumentation tests
|
|
androidTestImplementation(Libs.ESPRESSO_CORE)
|
|
androidTestImplementation(Libs.ESPRESSO_CONTRIB)
|
|
androidTestImplementation(Libs.EXT_JUNIT)
|
|
androidTestImplementation(Libs.RUNNER)
|
|
androidTestImplementation(Libs.RULES)
|
|
androidTestImplementation(Libs.FRAGMENT_TEST)
|
|
debugImplementation(Libs.FRAGMENT_TEST)
|
|
add("stagingImplementation", Libs.FRAGMENT_TEST)
|
|
|
|
// Local unit tests
|
|
testImplementation(Libs.JUNIT)
|
|
testImplementation(Libs.MOCKITO_CORE)
|
|
testImplementation(Libs.MOCKITO_KOTLIN)
|
|
testImplementation(Libs.HAMCREST)
|
|
|
|
// Solve conflicts with gson. DataBinding is using an old version.
|
|
implementation(Libs.GSON)
|
|
|
|
implementation(Libs.ARCORE)
|
|
}
|
|
|
|
apply(plugin = "com.google.gms.google-services")
|