feature TI-188: [Android] Настройка flavor, buildType
This commit is contained in:
parent
601fbceb2b
commit
d577f449bc
|
|
@ -13,53 +13,13 @@ val customEndpoint: String? = Environment.ENDPOINT.getenv()?.takeIf(String::isNo
|
|||
|
||||
android {
|
||||
namespace = "ru.touchin.template"
|
||||
compileSdk = AndroidConfig.COMPILE_SDK_VERSION
|
||||
|
||||
// defaultConfig {
|
||||
// applicationId = Environment.APP_ID.getenv() ?: AndroidConfig.TEST_APP_ID
|
||||
// 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()
|
||||
// }
|
||||
configureSigningConfig(this@Build_gradle::file)
|
||||
|
||||
// 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")
|
||||
}
|
||||
}
|
||||
|
||||
compileOptions {
|
||||
sourceCompatibility = JavaVersion.VERSION_17
|
||||
targetCompatibility = JavaVersion.VERSION_17
|
||||
}
|
||||
|
||||
buildFeatures.viewBinding = true
|
||||
|
||||
tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile::class.java) {
|
||||
kotlinOptions {
|
||||
jvmTarget = "17"
|
||||
}
|
||||
}
|
||||
addBuildType(type = BuildType.Develop, project = rootProject)
|
||||
addBuildType(type = BuildType.Debug, project = rootProject)
|
||||
addBuildType(type = BuildType.Customer, project = rootProject)
|
||||
addBuildType(type = BuildType.Release, project = rootProject)
|
||||
}
|
||||
|
||||
dependencies {
|
||||
|
|
|
|||
|
|
@ -1,29 +1,14 @@
|
|||
import com.android.build.gradle.BaseExtension
|
||||
|
||||
object AndroidConfig {
|
||||
const val COMPILE_SDK_VERSION = 34
|
||||
const val MIN_SDK_VERSION = 23
|
||||
const val TARGET_SDK_VERSION = 34
|
||||
const val BUILD_TOOLS_VERSION = "30.0.3"
|
||||
|
||||
val VERSION_CODE: Int = Environment.BUILD_NUMBER.getenv()?.toIntOrNull() ?: 10000
|
||||
const val VERSION_NAME = "1.0.0"
|
||||
|
||||
// TODO: change test package name
|
||||
const val TEST_APP_ID = "ru.touchin.template"
|
||||
|
||||
// TODO: change common file folder
|
||||
const val COMMON_FOLDER = "Template-common"
|
||||
|
||||
const val RELEASE_DEBUGGABLE = false
|
||||
|
||||
}
|
||||
|
||||
fun BaseExtension.ignoreCustomerProdFlavourIfReleaseIsDebuggable() {
|
||||
variantFilter {
|
||||
ignore = name.contains(ApiFlavour.CustomerProd.name, ignoreCase = true) && AndroidConfig.RELEASE_DEBUGGABLE
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,10 +1,29 @@
|
|||
import com.android.build.gradle.BaseExtension
|
||||
import org.gradle.api.Project
|
||||
import org.gradle.api.artifacts.VersionCatalog
|
||||
import org.gradle.kotlin.dsl.extra
|
||||
|
||||
fun BaseExtension.addFlavors(dimensionName: String, vararg flavorNames: String) {
|
||||
if (flavorNames.isEmpty()) return
|
||||
|
||||
flavorDimensions(dimensionName)
|
||||
|
||||
flavorNames.forEach { flavor ->
|
||||
productFlavors {
|
||||
create(flavor) {
|
||||
dimension = dimensionName
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun BaseExtension.addMobileServicesFlavor() {
|
||||
addFlavors(dimensionName = "mobileServices", flavorNames = arrayOf("huawei", "google"))
|
||||
}
|
||||
|
||||
fun BaseExtension.addBuildType(
|
||||
type: BuildType,
|
||||
project: Project
|
||||
project: Project,
|
||||
) {
|
||||
buildTypes {
|
||||
maybeCreate(type.name)
|
||||
|
|
@ -15,14 +34,16 @@ fun BaseExtension.addBuildType(
|
|||
isShrinkResources = type.optimizeAndObfuscate
|
||||
setMatchingFallbacks(type.matchingFallbacks)
|
||||
|
||||
if (listOf(BuildType.Develop, BuildType.Debug).contains(type)) {
|
||||
applicationIdSuffix = ".${type.name}"
|
||||
}
|
||||
// if (listOf(BuildType.Develop, BuildType.Debug).contains(type)) {
|
||||
// applicationIdSuffix = ".${type.name}"
|
||||
// }
|
||||
|
||||
if (type.optimizeAndObfuscate) {
|
||||
setProguardFiles(
|
||||
project.file("proguard").listFiles().toList() +
|
||||
listOf(
|
||||
project.file("proguard").listFiles(),
|
||||
getDefaultProguardFile("proguard-android-optimize.txt")
|
||||
).filterNotNull()
|
||||
)
|
||||
}
|
||||
|
||||
|
|
@ -35,6 +56,29 @@ fun BaseExtension.addBuildType(
|
|||
}
|
||||
}
|
||||
|
||||
fun BaseExtension.addLibBuildType(
|
||||
type: BuildType,
|
||||
serverType: String? = null,
|
||||
enableConfig: Boolean = false,
|
||||
versionCatalog: VersionCatalog
|
||||
) {
|
||||
buildTypes {
|
||||
maybeCreate(type.name)
|
||||
getByName(type.name) {
|
||||
isMinifyEnabled = type.optimizeAndObfuscate
|
||||
setMatchingFallbacks(type.matchingFallbacks)
|
||||
buildConfigField("String", "VERSION_NAME", "\"${versionCatalog.versionName}\"")
|
||||
if (enableConfig) {
|
||||
val server = serverType ?: type.serverType
|
||||
// buildConfigField("ru.template.data.network.ServerUrl", "DEFAULT_SERVER", type.defaultServer)
|
||||
buildConfigField("String", "DEFAULT_SERVER_TYPE", "\"$server\"")
|
||||
buildConfigField("Boolean", "ENABLE_SSL_PINNING", type.enableSslPinning.toString())
|
||||
buildConfigField("Boolean", "ENABLE_LOGS", type.enabledLogs.toString())
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
sealed class BuildType(
|
||||
val name: String,
|
||||
val optimizeAndObfuscate: Boolean,
|
||||
|
|
@ -42,9 +86,9 @@ sealed class BuildType(
|
|||
val enabledLogs: Boolean,
|
||||
val enabledDebugPanel: Boolean,
|
||||
val enableCrashlytics: Boolean = true,
|
||||
val defaultServer: String = "com.redmadrobot.data.network.ServerUrl.CUSTOMER_TEST",
|
||||
val defaultServer: String = "ru.template.data.network.ServerUrl.CUSTOMER_TEST",
|
||||
val serverType: String,
|
||||
val matchingFallbacks: String = "debug"
|
||||
val matchingFallbacks: String = "debug",
|
||||
) {
|
||||
object Develop : BuildType(
|
||||
name = "develop",
|
||||
|
|
@ -71,7 +115,7 @@ sealed class BuildType(
|
|||
enableSslPinning = true,
|
||||
enabledLogs = false,
|
||||
enabledDebugPanel = false,
|
||||
defaultServer = "com.redmadrobot.data.network.ServerUrl.CUSTOMER_PROD",
|
||||
defaultServer = "ru.template.data.network.ServerUrl.CUSTOMER_PROD",
|
||||
serverType = "Prod",
|
||||
matchingFallbacks = "release"
|
||||
)
|
||||
|
|
@ -82,7 +126,7 @@ sealed class BuildType(
|
|||
enableSslPinning = true,
|
||||
enabledLogs = false,
|
||||
enabledDebugPanel = false,
|
||||
defaultServer = "com.redmadrobot.data.network.ServerUrl.CUSTOMER_PROD",
|
||||
defaultServer = "ru.template.data.network.ServerUrl.CUSTOMER_PROD",
|
||||
serverType = "Prod",
|
||||
matchingFallbacks = "release"
|
||||
)
|
||||
|
|
|
|||
|
|
@ -1,35 +0,0 @@
|
|||
object Module {
|
||||
|
||||
object RoboSwag {
|
||||
const val UTILS = "utils"
|
||||
const val LOGGING = "logging"
|
||||
const val MVI_ARCH = "mvi-arch"
|
||||
const val NAVIGATION_BASE = "navigation-base"
|
||||
const val NAVIGATION_CICERONE = "navigation-cicerone"
|
||||
const val STORABLE = "storable"
|
||||
const val LIFECYCLE = "lifecycle"
|
||||
const val VIEWS = "views"
|
||||
const val RECYCLER_VIEW_ADAPTERS = "recyclerview-adapters"
|
||||
const val RECYCLER_VIEW_DECORATORS = "recyclerview-decorators"
|
||||
const val KOTLIN_EXTENSIONS = "kotlin-extensions"
|
||||
}
|
||||
|
||||
object Feature {
|
||||
const val LOGIN = "feature_login"
|
||||
|
||||
val ALL = listOf(
|
||||
LOGIN
|
||||
)
|
||||
}
|
||||
|
||||
object Core {
|
||||
const val NETWORK = "core_network"
|
||||
const val PREFS = "core_prefs"
|
||||
const val STRINGS = "core_strings"
|
||||
const val UTILS = "core_utils"
|
||||
const val UI = "core_ui"
|
||||
const val DATA = "core_data"
|
||||
const val DOMAIN = "core_domain"
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -5,15 +5,6 @@ object Plugins {
|
|||
const val ANDROID_APP_PLUGIN_WITH_DEFAULT_CONFIG = "android_app"
|
||||
const val ANDROID_LIB_PLUGIN_WITH_DEFAULT_CONFIG = "android_lib"
|
||||
|
||||
const val KOTLIN_ANDROID = "kotlin-android"
|
||||
const val KOTLIN_ANDROID = "org.jetbrains.kotlin.android"
|
||||
const val KOTLIN_KAPT = "kotlin-kapt"
|
||||
const val LICENCE_PLUGIN = "com.google.android.gms.oss-licenses-plugin"
|
||||
|
||||
const val GOOGLE_SERVICES = "com.google.gms.google-services"
|
||||
const val FIREBASE_CRASH = "com.google.firebase.crashlytics"
|
||||
|
||||
const val DEPENDENCY_GRAPH = "com.vanniktech.dependency.graph.generator"
|
||||
|
||||
const val DETEKT = "io.gitlab.arturbosch.detekt"
|
||||
const val CPD = "de.aaschmid.cpd"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,9 +2,5 @@ import org.gradle.api.artifacts.MinimalExternalModuleDependency
|
|||
import org.gradle.api.artifacts.VersionCatalog
|
||||
import org.gradle.api.provider.Provider
|
||||
|
||||
internal val VersionCatalog.stdlib: Provider<MinimalExternalModuleDependency>
|
||||
get() = getLibrary("stdLib")
|
||||
|
||||
|
||||
private fun VersionCatalog.getLibrary(library: String) = findLibrary(library).get()
|
||||
|
||||
|
|
|
|||
|
|
@ -5,3 +5,15 @@ val VersionCatalog.sdkCompile: String
|
|||
|
||||
val VersionCatalog.sdkMin: String
|
||||
get() = findVersion("minSdk").get().requiredVersion
|
||||
|
||||
val VersionCatalog.sdkTarget: String
|
||||
get() = findVersion("targetSdk").get().requiredVersion
|
||||
|
||||
val VersionCatalog.jvmBytecode: String
|
||||
get() = findVersion("jvmBytecode").get().requiredVersion
|
||||
|
||||
val VersionCatalog.versionCode: String
|
||||
get() = findVersion("versionCode").get().requiredVersion
|
||||
|
||||
val VersionCatalog.versionName: String
|
||||
get() = findVersion("versionName").get().requiredVersion
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ sealed class SSLPinningFlavour(
|
|||
|
||||
object OFF : SSLPinningFlavour(
|
||||
name = "withoutSSLPinning",
|
||||
withSslPinning = true
|
||||
withSslPinning = false
|
||||
)
|
||||
|
||||
object ON : SSLPinningFlavour(
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ import org.gradle.api.Project
|
|||
class AndroidLibPlugin : BaseAndroidPlugin() {
|
||||
|
||||
override fun apply(target: Project) {
|
||||
// target.plugins.apply(Plugins.ANDROID_LIBRARY)
|
||||
target.plugins.apply(Plugins.ANDROID_LIBRARY)
|
||||
super.apply(target)
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ import AndroidConfig
|
|||
import BuildType
|
||||
import Plugins
|
||||
import com.android.build.gradle.BaseExtension
|
||||
import jvmBytecode
|
||||
import org.gradle.api.JavaVersion
|
||||
import org.gradle.api.Plugin
|
||||
import org.gradle.api.Project
|
||||
|
|
@ -15,7 +16,11 @@ import org.gradle.internal.impldep.junit.runner.Version.id
|
|||
import org.gradle.kotlin.dsl.dependencies
|
||||
import org.gradle.kotlin.dsl.getByType
|
||||
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
|
||||
import sdkCompile
|
||||
import sdkMin
|
||||
import sdkTarget
|
||||
import versionCode
|
||||
import versionName
|
||||
|
||||
abstract class BaseAndroidPlugin : Plugin<Project> {
|
||||
override fun apply(target: Project) {
|
||||
|
|
@ -25,33 +30,34 @@ abstract class BaseAndroidPlugin : Plugin<Project> {
|
|||
}
|
||||
|
||||
private fun Project.configurePlugins() {
|
||||
// plugins.apply(Plugins.KOTLIN_KAPT)
|
||||
// plugins.apply("com.android.library")
|
||||
plugins.apply("org.jetbrains.kotlin.android")
|
||||
plugins.apply(Plugins.KOTLIN_ANDROID)
|
||||
plugins.apply(Plugins.KOTLIN_KAPT)
|
||||
}
|
||||
|
||||
private fun Project.configureAndroid() = extensions.getByType<BaseExtension>().run {
|
||||
compileSdkVersion(AndroidConfig.COMPILE_SDK_VERSION)
|
||||
buildToolsVersion = AndroidConfig.BUILD_TOOLS_VERSION
|
||||
compileSdkVersion(libs.sdkCompile.toInt())
|
||||
|
||||
defaultConfig {
|
||||
minSdk = libs.sdkMin.toIntOrNull() ?: 24
|
||||
targetSdk = AndroidConfig.TARGET_SDK_VERSION
|
||||
versionCode = AndroidConfig.VERSION_CODE
|
||||
versionName = AndroidConfig.VERSION_NAME
|
||||
minSdk = libs.sdkMin.toInt()
|
||||
targetSdk = libs.sdkTarget.toInt()
|
||||
versionCode = libs.versionCode.toInt()
|
||||
versionName = libs.versionName
|
||||
}
|
||||
|
||||
compileOptions {
|
||||
sourceCompatibility = JavaVersion.VERSION_17
|
||||
targetCompatibility = JavaVersion.VERSION_17
|
||||
sourceCompatibility = JavaVersion.toVersion(libs.jvmBytecode)
|
||||
targetCompatibility = JavaVersion.toVersion(libs.jvmBytecode)
|
||||
isCoreLibraryDesugaringEnabled = true
|
||||
}
|
||||
|
||||
buildFeatures.viewBinding = true
|
||||
buildFeatures.apply {
|
||||
buildConfig = true
|
||||
viewBinding = true
|
||||
}
|
||||
|
||||
tasks.withType(KotlinCompile::class.java) {
|
||||
kotlinOptions {
|
||||
jvmTarget = "17"
|
||||
jvmTarget = libs.jvmBytecode
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,38 +1,48 @@
|
|||
plugins {
|
||||
id(Plugins.ANDROID_APP_PLUGIN_WITH_DEFAULT_CONFIG)
|
||||
id(Plugins.ANDROID_LIB_PLUGIN_WITH_DEFAULT_CONFIG)
|
||||
}
|
||||
|
||||
private val serverType = Environment.SERVER_ENVIRONMENT.getenv()?.takeIf(String::isNotBlank)
|
||||
private val versionCatalog: VersionCatalog
|
||||
get() = extensions.getByType<VersionCatalogsExtension>().named("libs")
|
||||
|
||||
android {
|
||||
namespace = "ru.template.data"
|
||||
compileSdk = 34
|
||||
|
||||
defaultConfig {
|
||||
minSdk = 24
|
||||
addLibBuildType(type = BuildType.Develop, enableConfig = true, versionCatalog = versionCatalog)
|
||||
addLibBuildType(type = BuildType.Debug, enableConfig = true, versionCatalog = versionCatalog)
|
||||
addLibBuildType(type = BuildType.Customer, enableConfig = true, versionCatalog = versionCatalog)
|
||||
addLibBuildType(type = BuildType.Release, enableConfig = true, versionCatalog = versionCatalog)
|
||||
|
||||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
release {
|
||||
isMinifyEnabled = false
|
||||
proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro")
|
||||
sourceSets {
|
||||
getByName("main") {
|
||||
java.srcDirs("src/main/kotlin")
|
||||
}
|
||||
getByName("androidTest") {
|
||||
java.srcDirs("src/androidTest/kotlin")
|
||||
}
|
||||
getByName("test") {
|
||||
java.srcDirs("src/test/kotlin")
|
||||
}
|
||||
}
|
||||
compileOptions {
|
||||
sourceCompatibility = JavaVersion.VERSION_1_8
|
||||
targetCompatibility = JavaVersion.VERSION_1_8
|
||||
}
|
||||
kotlinOptions {
|
||||
jvmTarget = "1.8"
|
||||
|
||||
addMobileServicesFlavor()
|
||||
|
||||
testOptions {
|
||||
unitTests {
|
||||
isReturnDefaultValues = true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation(project(":domain"))
|
||||
implementation(project(":mobile_services"))
|
||||
|
||||
implementation(libs.androidx.core)
|
||||
implementation(libs.androidx.compat)
|
||||
implementation(libs.material)
|
||||
testImplementation(libs.junit)
|
||||
androidTestImplementation(libs.androidx.test.ext.junit)
|
||||
androidTestImplementation(libs.espresso.core)
|
||||
}
|
||||
}
|
||||
|
||||
val Project.buildScriptDir: String
|
||||
get() = rootProject.ext["buildScriptsDir"] as String
|
||||
|
|
@ -1,38 +1,29 @@
|
|||
plugins {
|
||||
id(Plugins.ANDROID_APP_PLUGIN_WITH_DEFAULT_CONFIG)
|
||||
id(Plugins.ANDROID_LIB_PLUGIN_WITH_DEFAULT_CONFIG)
|
||||
}
|
||||
|
||||
private val versionCatalog: VersionCatalog
|
||||
get() = extensions.getByType<VersionCatalogsExtension>().named("libs")
|
||||
|
||||
android {
|
||||
namespace = "ru.template.domain"
|
||||
compileSdk = 34
|
||||
|
||||
defaultConfig {
|
||||
minSdk = 24
|
||||
|
||||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
release {
|
||||
isMinifyEnabled = false
|
||||
proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro")
|
||||
addLibBuildType(BuildType.Develop, versionCatalog = versionCatalog)
|
||||
addLibBuildType(BuildType.Debug, versionCatalog = versionCatalog)
|
||||
addLibBuildType(BuildType.Customer, versionCatalog = versionCatalog)
|
||||
addLibBuildType(BuildType.Release, versionCatalog = versionCatalog)
|
||||
}
|
||||
|
||||
addMobileServicesFlavor()
|
||||
|
||||
sourceSets {
|
||||
getByName("main") {
|
||||
java.srcDirs("src/main/kotlin")
|
||||
}
|
||||
}
|
||||
compileOptions {
|
||||
sourceCompatibility = JavaVersion.VERSION_1_8
|
||||
targetCompatibility = JavaVersion.VERSION_1_8
|
||||
}
|
||||
kotlinOptions {
|
||||
jvmTarget = "1.8"
|
||||
}
|
||||
}
|
||||
|
||||
dependencies {
|
||||
|
||||
implementation(libs.androidx.core)
|
||||
implementation(libs.androidx.compat)
|
||||
implementation(libs.material)
|
||||
testImplementation(libs.junit)
|
||||
androidTestImplementation(libs.androidx.test.ext.junit)
|
||||
androidTestImplementation(libs.espresso.core)
|
||||
implementation(project(":mobile_services"))
|
||||
}
|
||||
|
|
@ -1,37 +1,24 @@
|
|||
plugins {
|
||||
id(Plugins.ANDROID_APP_PLUGIN_WITH_DEFAULT_CONFIG)
|
||||
id(Plugins.ANDROID_LIB_PLUGIN_WITH_DEFAULT_CONFIG)
|
||||
}
|
||||
|
||||
private val versionCatalog: VersionCatalog
|
||||
get() = extensions.getByType<VersionCatalogsExtension>().named("libs")
|
||||
|
||||
android {
|
||||
namespace = "ru.template.mobile.services"
|
||||
compileSdk = 34
|
||||
|
||||
defaultConfig {
|
||||
minSdk = 24
|
||||
|
||||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
release {
|
||||
isMinifyEnabled = false
|
||||
proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro")
|
||||
}
|
||||
}
|
||||
compileOptions {
|
||||
sourceCompatibility = JavaVersion.VERSION_1_8
|
||||
targetCompatibility = JavaVersion.VERSION_1_8
|
||||
}
|
||||
kotlinOptions {
|
||||
jvmTarget = "1.8"
|
||||
addLibBuildType(BuildType.Develop, versionCatalog = versionCatalog)
|
||||
addLibBuildType(BuildType.Debug, versionCatalog = versionCatalog)
|
||||
addLibBuildType(BuildType.Customer, versionCatalog = versionCatalog)
|
||||
addLibBuildType(BuildType.Release, versionCatalog = versionCatalog)
|
||||
}
|
||||
|
||||
addMobileServicesFlavor()
|
||||
}
|
||||
|
||||
dependencies {
|
||||
|
||||
implementation(libs.androidx.core)
|
||||
implementation(libs.androidx.compat)
|
||||
implementation(libs.material)
|
||||
testImplementation(libs.junit)
|
||||
androidTestImplementation(libs.androidx.test.ext.junit)
|
||||
androidTestImplementation(libs.espresso.core)
|
||||
|
|
|
|||
Loading…
Reference in New Issue