From b99dec674cf0c251e733b966fc92350f01aa17b8 Mon Sep 17 00:00:00 2001 From: Evgeny Dubravin Date: Thu, 21 Mar 2024 22:09:35 +0700 Subject: [PATCH] add template dependencies --- app/build.gradle.kts | 129 +++++++++++++++--- app/google-services.json | 2 +- app/src/main/AndroidManifest.xml | 3 +- build.gradle.kts | 27 ++-- buildSrc/build.gradle.kts | 29 +--- gradle/libs.versions.toml | 164 ++++++++++++++++++++++- gradle/wrapper/gradle-wrapper.properties | 4 +- settings.gradle.kts | 31 +++-- 8 files changed, 308 insertions(+), 81 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 70fe55c..e91419b 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -1,38 +1,129 @@ plugins { - id(Plugins.ANDROID_APP_PLUGIN_WITH_DEFAULT_CONFIG) - id(Plugins.FIREBASE_CRASH) - id(Plugins.GOOGLE_SERVICES) - id(Plugins.LICENCE_PLUGIN) + // id(Plugins.ANDROID_APP_PLUGIN_WITH_DEFAULT_CONFIG) + + alias(libs.plugins.android.application) + alias(libs.plugins.kotlin.android) + alias(libs.plugins.kotlin.kapt) + alias(libs.plugins.google.services) + alias(libs.plugins.firebase.crashlytics) + alias(libs.plugins.firebase.perf) + id(libs.plugins.google.oss.licenses.plugin.get().pluginId) } val customEndpoint: String? = Environment.ENDPOINT.getenv()?.takeIf(String::isNotBlank) android { - configureSigningConfig(this@Build_gradle::file) + namespace = "ru.touchin.template" + compileSdk = AndroidConfig.COMPILE_SDK_VERSION - with(defaultConfig) { + defaultConfig { applicationId = Environment.APP_ID.getenv() ?: AndroidConfig.TEST_APP_ID - signingConfig = signingConfigs.getByName(SigningConfig.CONFIG_NAME) + versionCode = libs.versions.versionCode.get().toInt() + versionName = libs.versions.versionName.get() + + compileSdk = libs.versions.compileSdk.get().toInt() + minSdk = libs.versions.minSdk.get().toInt() + targetSdk = libs.versions.targetSdk.get().toInt() } - firebaseCrashlytics { - mappingFileUploadEnabled = true +// configureSigningConfig(this@Build_gradle::file) + +// with(defaultConfig) { +// applicationId = Environment.APP_ID.getenv() ?: AndroidConfig.TEST_APP_ID +// signingConfig = signingConfigs.getByName("debug") +// } + + buildTypes { + getByName("debug") { + isMinifyEnabled = false + isShrinkResources = false + proguardFiles(getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro") + testProguardFiles(getDefaultProguardFile("proguard-android.txt"), "proguardTest-rules.pro") + } + + getByName("release") { + isMinifyEnabled = true + isShrinkResources = true + proguardFiles(getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro") + testProguardFiles(getDefaultProguardFile("proguard-android.txt"), "proguardTest-rules.pro") + } } - addBuildType(BuildType.Debug, buildScriptDir = buildScriptDir) - addBuildType(BuildType.Release, buildScriptDir = buildScriptDir) -} + compileOptions { + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 + } -androidExtensions { - features = setOf("parcelize") + buildFeatures.viewBinding = true + + tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile::class.java) { + kotlinOptions { + jvmTarget = "17" + } + } } dependencies { - implementation(Library.ANDROIDX_APPCOMPAT) - implementation(Library.ANDROIDX_CORE) - implementation(Library.ANDROID_MATERIAL) - implementation(Library.ANDROIDX_FRAGMENT) - implementation(Library.ANDROIDX_FRAGMENT_KTX) + // AndroidX + implementation(libs.bundles.androidX) + + // KotlinX + implementation(libs.coroutines) + + // UI + implementation(libs.bundles.ui) + + // Lifecycle + implementation(libs.bundles.lifecycle) + kapt(libs.androidx.lifecycle.compiler) + + // Dagger + implementation(libs.bundles.dagger) + kapt(libs.dagger.compiler) + kapt(libs.dagger.assisted.inject.processor) + + // Glide + implementation(libs.glide) + implementation(libs.glide.okhttp3) + kapt(libs.glide.compiler) + + // Retrofit2, OkHttp3 + implementation(libs.retrofit) + implementation(libs.retrofit.converter.moshi) + implementation(libs.okhttp) + implementation(libs.okhttp.logging.interceptor) + + // Moshi + implementation(libs.moshi) + implementation(libs.moshi.kotlin) + kapt(libs.moshi.codegen) + + // Room + implementation(libs.room) + implementation(libs.room.ktx) + kapt(libs.room.compiler) + + // LeakCanary + implementation(libs.leakcanary) + + // Chucker + debugImplementation(libs.chucker.debug) + releaseImplementation(libs.chucker.release) + + // GMS + implementation(platform(libs.firebase.bom)) + implementation(libs.bundles.firebase) + implementation(libs.google.oss.licenses) + + // Security + implementation(libs.androidx.security.crypto) + + // Biometric + implementation(libs.androidx.biometric) + + // Groupie + implementation(libs.groupie) + implementation(libs.groupie.viewbinding) } apply(from = "$buildScriptDir/gradle/scripts/applicationFileNaming.gradle") diff --git a/app/google-services.json b/app/google-services.json index 89951fd..2fdeca4 100644 --- a/app/google-services.json +++ b/app/google-services.json @@ -10,7 +10,7 @@ "client_info": { "mobilesdk_app_id": "1:1084813714260:android:b6d7bb18a0acfe96255ec1", "android_client_info": { - "package_name": "com.touchin.template" + "package_name": "ru.touchin.template" } }, "oauth_client": [ diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index f7d90c6..b11b905 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,7 +1,6 @@ + xmlns:tools="http://schemas.android.com/tools"> diff --git a/build.gradle.kts b/build.gradle.kts index 696b5e1..80aa122 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,31 +1,26 @@ buildscript { repositories { - mavenCentral() google() + mavenCentral() maven("https://plugins.gradle.org/m2/") } + dependencies { - classpath("com.android.tools.build:gradle:${Version.ANDROID_PLUGIN}") - classpath(kotlin("gradle-plugin", version = Version.KOTLIN)) - classpath("com.google.gms:google-services:${Version.GOOGLE_SERVICES_PLUGIN}") - classpath("com.google.firebase:firebase-crashlytics-gradle:${Version.FIREBASE_CRASH_PLUGIN}") - classpath("com.vanniktech:gradle-dependency-graph-generator-plugin:0.5.0") - classpath("com.google.android.gms:oss-licenses-plugin:0.10.2") +// classpath("com.vanniktech:gradle-dependency-graph-generator-plugin:0.5.0") + classpath(libs.google.oss.licenses.plugin) } } plugins { - id(Plugins.DEPENDENCY_GRAPH).version("0.5.0") +// id(Plugins.DEPENDENCY_GRAPH).version("0.5.0") // id("static-analysis-android") -} -allprojects { - repositories { - mavenCentral() - google() - maven("http://dl.bintray.com/touchin/touchin-tools") - maven("https://jitpack.io") - } + alias(libs.plugins.android.application) apply false + alias(libs.plugins.kotlin.android) apply false + alias(libs.plugins.kotlin.kapt) apply false + alias(libs.plugins.google.services) apply false + alias(libs.plugins.firebase.crashlytics) apply false + alias(libs.plugins.firebase.perf) apply false } val buildScriptsDir = "${rootProject.projectDir}/BuildScripts" diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts index bda1b11..0b778a2 100644 --- a/buildSrc/build.gradle.kts +++ b/buildSrc/build.gradle.kts @@ -1,33 +1,10 @@ -import org.jetbrains.kotlin.gradle.tasks.KotlinCompile - plugins { `kotlin-dsl` - `kotlin-dsl-precompiled-script-plugins` - kotlin("jvm") version embeddedKotlinVersion +// `kotlin-dsl-precompiled-script-plugins` +// kotlin("jvm") version embeddedKotlinVersion } // The kotlin-dsl plugin requires a repository to be declared repositories { - jcenter() - google() - maven { - url = uri("https://plugins.gradle.org/m2/") - } -} - -dependencies { - // android gradle plugin, required by custom plugin - implementation("com.android.tools.build:gradle:4.0.0") - - // kotlin plugin, required by custom plugin - implementation(kotlin("gradle-plugin", embeddedKotlinVersion)) - - gradleKotlinDsl() - implementation(kotlin("stdlib-jdk8")) -} - - -val compileKotlin: KotlinCompile by tasks -compileKotlin.kotlinOptions { - jvmTarget = "1.8" + mavenCentral() } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 9641153..fb402a8 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,9 +1,171 @@ [versions] +# Project +versionCode = "1" +versionName = "1.0.0" +compileSdk = "34" +targetSdk = "34" +minSdk = "23" + kotlin = "1.8.22" +androidGradlePlugin = "8.1.4" + +# AndroidX +androidxCompat = "1.6.1" +androidxConstraint = "2.1.4" +androidxCore = "1.12.0" +androidxRecycler = "1.3.2" + +# UI +androidxActivity = "1.8.2" +androidxBiometric = "1.1.0" +androidxFragment = "1.6.2" +androidxSecurity = "1.1.0-alpha06" +androidxSwipeRefresh = "1.1.0" +material = "1.11.0" + +# Lifecyle +androidxLifecycle = "2.7.0" + +# Dagger +dagger = "2.51" +daggerAssistedInject = "0.8.1" +daggerComponentsManager = "2.1.1" + +# Glide +glide = "4.16.0" + +# Retrofit2, OkHttp3 +retrofit = "2.9.0" +okhttp = "4.12.0" + +# Moshi +moshi = "1.15.1" + +#Room +room = "2.6.1" + +# KotlinX +coroutines = "1.8.0" + +cicerone = "7.1" +leakCanary = "2.13" +chucker = "4.0.0" +javapoet = "1.13.0" + +# GMS +googleServices = "4.4.1" +googleLicenses = "17.0.1" +googleLicensesPlugin = "0.10.6" +firebaseBom = "32.7.4" +firebaseCrashlytics = "2.9.9" +firebasePerf = "1.4.2" + +# Groupie +groupie = "2.10.1" [libraries] +# AndroidX +androidx-compat = { group = "androidx.appcompat", name = "appcompat", version.ref = "androidxCompat" } +androidx-constraint = { group = "androidx.constraintlayout", name = "constraintlayout", version.ref = "androidxConstraint" } +androidx-core = { group = "androidx.core", name = "core-ktx", version.ref = "androidxCore" } +androidx-recycler = { group = "androidx.recyclerview", name = "recyclerview", version.ref = "androidxRecycler" } + +# KotlinX +coroutines = { group = "org.jetbrains.kotlinx", name = "kotlinx-coroutines-android", version.ref = "coroutines" } + +# UI +androidx-activity = { group = "androidx.activity", name = "activity-ktx", version.ref = "androidxActivity" } +anroidx-fragment-ktx = { group = "androidx.fragment", name = "fragment-ktx", version.ref = "androidxFragment" } +androidx-swipe-refresh = { group = "androidx.swiperefreshlayout", name = "swiperefreshlayout", version.ref = "androidxSwipeRefresh" } +material = { group = "com.google.android.material", name = "material", version.ref = "material" } + +# Lifecyle +androidx-lifecycle-compiler = { group = "androidx.lifecycle", name = "lifecycle-compiler", version.ref = "androidxLifecycle" } +androidx-lifecycle-livedata-ktx = { group = "androidx.lifecycle", name = "lifecycle-livedata-ktx", version.ref = "androidxLifecycle" } +androidx-lifecycle-runtime-ktx = { group = "androidx.lifecycle", name = "lifecycle-runtime-ktx", version.ref = "androidxLifecycle" } +androidx-lifecycle-viewmodel-ktx = { group = "androidx.lifecycle", name = "lifecycle-viewmodel-ktx", version.ref = "androidxLifecycle" } + +# Dagger +dagger = { group = "com.google.dagger", name = "dagger", version.ref = "dagger" } +dagger-compiler = { group = "com.google.dagger", name = "dagger-compiler", version.ref = "dagger" } +dagger-assisted-inject-annotations = { group = "com.squareup.inject", name = "assisted-inject-annotations-dagger2", version.ref = "daggerAssistedInject" } +dagger-assisted-inject-processor = { group = "com.squareup.inject", name = "assisted-inject-processor-dagger2", version.ref = "daggerAssistedInject" } +dagger-components-manager = { group = "com.github.valeryponomarenko.componentsmanager", name = "androidx", version.ref = "daggerComponentsManager" } + +# Glide +glide = { group = "com.github.bumptech.glide", name = "glide", version.ref = "glide" } +glide-compiler = { group = "com.github.bumptech.glide", name = "compiler", version.ref = "glide" } +glide-okhttp3 = { group = "com.github.bumptech.glide", name = "okhttp3-integration", version.ref = "glide" } + +# Retrofit2, OkHttp3 +retrofit = { group = "com.squareup.retrofit2", name = "retrofit", version.ref = "retrofit" } +retrofit-converter-moshi = { group = "com.squareup.retrofit2", name = "converter-moshi", version.ref = "retrofit" } +okhttp = { group = "com.squareup.okhttp3", name = "okhttp", version.ref = "okhttp" } +okhttp-logging-interceptor = { group = "com.squareup.okhttp3", name = "logging-interceptor", version.ref = "okhttp" } + +# Moshi +moshi = { group = "com.squareup.moshi", name = "moshi", version.ref = "moshi" } +moshi-codegen = { group = "com.squareup.moshi", name = "moshi-kotlin-codegen", version.ref = "moshi" } +moshi-kotlin = { group = "com.squareup.moshi", name = "moshi-kotlin", version.ref = "moshi" } + +# Room +room = { group = "androidx.room", name = "room-runtime", version.ref = "room" } +room-compiler = { group = "androidx.room", name = "room-compiler", version.ref = "room" } +room-ktx = { group = "androidx.room", name = "room-ktx", version.ref = "room" } + +# Cicerone +cicerone = { group = "com.github.terrakok", name = "cicerone", version.ref = "cicerone" } + +# LeakCanary +leakcanary= { group = "com.squareup.leakcanary", name = "leakcanary-android", version.ref = "leakCanary" } + +# Chucker +chucker-debug = { group = "com.github.chuckerteam.chucker", name = "library", version.ref = "chucker" } +chucker-release = { group = "com.github.chuckerteam.chucker", name = "library-no-op", version.ref = "chucker" } + +# GMS +firebase-bom = { group = "com.google.firebase", name = "firebase-bom", version.ref = "firebaseBom" } +firebase-analytics = { module = "com.google.firebase:firebase-analytics" } +firebase-crashlytics = { module = "com.google.firebase:firebase-crashlytics" } +firebase-perf = { module = "com.google.firebase:firebase-perf" } +google-oss-licenses = { group = "com.google.android.gms", name = "play-services-oss-licenses", version.ref = "googleLicenses" } +google-oss-licenses-plugin = { group = "com.google.android.gms", name = "oss-licenses-plugin", version.ref = "googleLicensesPlugin" } + +# Security +androidx-security-crypto = { group = "androidx.security", name = "security-crypto", version.ref = "androidxSecurity" } + +# Biometric +androidx-biometric = { group = "androidx.biometric", name = "biometric", version.ref = "androidxBiometric" } + +# Groupie +groupie = { group = "com.github.lisawray.groupie", name = "groupie", version.ref = "groupie" } +groupie-viewbinding = { group = "com.github.lisawray.groupie", name = "groupie-viewbinding", version.ref = "groupie" } + +javapoet = { module = "com.squareup:javapoet", version = "javapoet" } + [plugins] -[bundles] \ No newline at end of file +android-application = { id = "com.android.application", version.ref = "androidGradlePlugin" } +android-library = { id = "com.android.library", version.ref = "androidGradlePlugin" } +android-test = { id = "com.android.test", version.ref = "androidGradlePlugin" } +kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" } +kotlin-kapt = { id = "org.jetbrains.kotlin.kapt", version.ref = "kotlin" } +google-services = { id = "com.google.gms.google-services", version.ref = "googleServices" } +google-oss-licenses-plugin = { id = "com.google.android.gms.oss-licenses-plugin", version.ref = "googleLicensesPlugin" } +firebase-crashlytics = { id = "com.google.firebase.crashlytics", version.ref = "firebaseCrashlytics" } +firebase-perf = { id = "com.google.firebase.firebase-perf", version.ref = "firebasePerf" } + +[bundles] + +androidX = ["androidx-compat", "androidx-constraint", "androidx-core", "androidx-recycler"] + +ui = ["androidx-activity", "anroidx-fragment-ktx", "androidx-swipe-refresh", "material"] + +lifecycle = ["androidx-lifecycle-livedata-ktx", "androidx-lifecycle-runtime-ktx", "androidx-lifecycle-viewmodel-ktx"] + +dagger = ["dagger", "dagger-assisted-inject-annotations", "dagger-components-manager"] + +firebase = ["firebase-analytics", "firebase-crashlytics", "firebase-perf"] + diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index a5f939e..51fcd9d 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Thu Feb 13 13:31:53 MSK 2020 +#Tue Mar 19 16:59:59 GMT+07:00 2024 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.2.1-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-all.zip diff --git a/settings.gradle.kts b/settings.gradle.kts index 139751f..a3bc55d 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -1,17 +1,20 @@ -includeBuild("BuildScripts/gradle/plugins") +pluginManagement { + includeBuild("BuildScripts/gradle/plugins") + repositories { + gradlePluginPortal() + mavenCentral() + google() + } +} -val roboswagModules = listOf( - "utils", - "logging", - "recyclerview-decorators", - "kotlin-extensions" -) -//roboswagModules.forEach { module -> -// val moduleDir = file("RoboSwag/$module") -// if (moduleDir.isDirectory) { -// include(":$module") -// project(":$module").projectDir = moduleDir -// } -//} +dependencyResolutionManagement { + repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) + repositories { + mavenCentral() + google() + maven("https://dl.bintray.com/touchin/touchin-tools") + maven("https://jitpack.io") + } +} include(":app")