485 lines
No EOL
20 KiB
Kotlin
485 lines
No EOL
20 KiB
Kotlin
import com.tangem.plugin.configuration.configurations.extension.kaptForObfuscatingVariants
|
|
import java.util.Properties
|
|
|
|
plugins {
|
|
alias(deps.plugins.android.application)
|
|
alias(deps.plugins.kotlin.android)
|
|
alias(deps.plugins.kotlin.kapt)
|
|
alias(deps.plugins.kotlin.serialization)
|
|
alias(deps.plugins.google.services)
|
|
alias(deps.plugins.hilt.android)
|
|
alias(deps.plugins.firebase.crashlytics)
|
|
alias(deps.plugins.firebase.perf)
|
|
alias(deps.plugins.ksp)
|
|
id(deps.plugins.agconnect.get().pluginId)
|
|
id("configuration")
|
|
}
|
|
|
|
agcp {
|
|
manifest = false
|
|
}
|
|
|
|
android {
|
|
namespace = "com.tangem.wallet"
|
|
testOptions {
|
|
animationsDisabled = true
|
|
execution = "ANDROIDX_TEST_ORCHESTRATOR"
|
|
}
|
|
packaging {
|
|
jniLibs {
|
|
useLegacyPackaging = true
|
|
excludes.add("lib/x86_64/libargon2.so")
|
|
}
|
|
resources.excludes.add("META-INF/LICENSE.md")
|
|
resources.excludes.add("META-INF/NOTICE.md")
|
|
resources.excludes.add("META-INF/DISCLAIMER")
|
|
resources.excludes.add("META-INF/DEPENDENCIES")
|
|
resources.excludes.add("META-INF/FastDoubleParser-NOTICE")
|
|
resources.excludes.add("META-INF/FastDoubleParser-LICENSE")
|
|
resources.excludes.add("META-INF/io.netty.versions.properties")
|
|
resources.excludes.add("META-INF/INDEX.LIST")
|
|
resources.excludes.add("META-INF/versions/9/OSGI-INF/MANIFEST.MF")
|
|
}
|
|
androidResources {
|
|
generateLocaleConfig = true
|
|
}
|
|
signingConfigs {
|
|
getByName("debug") {
|
|
val keystorePath = "src/main/assets/tangem-app-config/android/keystore/debug_keystore"
|
|
val propertiesPath = "src/main/assets/tangem-app-config/android/keystore/debug_keystore.properties"
|
|
|
|
val keystoreProperties = Properties()
|
|
file(propertiesPath)
|
|
.inputStream()
|
|
.use { keystoreProperties.load(it) }
|
|
|
|
storeFile = file(keystorePath)
|
|
storePassword = keystoreProperties["store_password"] as String
|
|
keyAlias = keystoreProperties["key_alias"] as String
|
|
keyPassword = keystoreProperties["key_password"] as String
|
|
}
|
|
}
|
|
|
|
flavorDimensions += "services"
|
|
|
|
productFlavors {
|
|
create("google") {
|
|
dimension = "services"
|
|
buildConfigField("String", "FLAVOR_NAME", "\"google\"")
|
|
}
|
|
create("huawei") {
|
|
dimension = "services"
|
|
buildConfigField("String", "FLAVOR_NAME", "\"huawei\"")
|
|
}
|
|
}
|
|
|
|
// `src/prodDi/` holds production DI bindings for interfaces with a `mocked` counterpart.
|
|
// Wired into every build type EXCEPT `mocked`, which supplies its own bindings from `src/mocked/`.
|
|
buildTypes.configureEach {
|
|
if (name != "mocked") {
|
|
sourceSets.named(name) {
|
|
java.srcDir("src/prodDi/java")
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
configurations.all {
|
|
exclude(group = "org.bouncycastle", module = "bcprov-jdk15to18")
|
|
exclude(group = "com.github.komputing.kethereum")
|
|
exclude(group = "com.android.tools.build", module = "gradle")
|
|
|
|
resolutionStrategy {
|
|
dependencySubstitution {
|
|
substitute(module("org.bouncycastle:bcprov-jdk15on"))
|
|
.using(module("org.bouncycastle:bcprov-jdk18on:1.73"))
|
|
}
|
|
|
|
force(
|
|
"org.bouncycastle:bcpkix-jdk15on:1.70",
|
|
deps.kotlin.coroutines,
|
|
deps.kotlin.coroutines.jvm,
|
|
deps.kotlin.coroutines.android,
|
|
)
|
|
}
|
|
}
|
|
|
|
configurations.androidTestImplementation {
|
|
exclude(module = "protobuf-lite")
|
|
}
|
|
dependencies {
|
|
implementation(projects.domain.legacy)
|
|
implementation(projects.libs.blockchainSdk)
|
|
implementation(projects.domain.account)
|
|
implementation(projects.domain.account.status)
|
|
implementation(projects.domain.addressBook)
|
|
implementation(projects.domain.appsflyer)
|
|
implementation(projects.domain.models)
|
|
implementation(projects.domain.core)
|
|
api(projects.domain.common)
|
|
implementation(projects.domain.card)
|
|
implementation(projects.domain.demo)
|
|
implementation(projects.domain.demo.models)
|
|
implementation(projects.domain.dynamicAddresses)
|
|
implementation(projects.domain.express)
|
|
implementation(projects.domain.wallets)
|
|
implementation(projects.domain.wallets.models)
|
|
implementation(projects.domain.settings)
|
|
implementation(projects.domain.appUpdate)
|
|
implementation(projects.domain.tokens)
|
|
implementation(projects.domain.tokens.models)
|
|
implementation(projects.domain.txhistory)
|
|
implementation(projects.domain.appCurrency)
|
|
implementation(projects.domain.appCurrency.models)
|
|
implementation(projects.domain.appTheme)
|
|
implementation(projects.domain.appTheme.models)
|
|
implementation(projects.domain.balanceHiding)
|
|
implementation(projects.domain.balanceHiding.models)
|
|
implementation(projects.domain.pushNotificationPreferences)
|
|
implementation(projects.domain.transaction)
|
|
implementation(projects.domain.transaction.models)
|
|
implementation(projects.domain.analytics)
|
|
implementation(projects.domain.visa)
|
|
implementation(projects.domain.onboarding)
|
|
implementation(projects.domain.feedback)
|
|
implementation(projects.domain.feedback.models)
|
|
implementation(projects.domain.qrScanning)
|
|
implementation(projects.domain.qrScanning.models)
|
|
implementation(projects.domain.staking)
|
|
implementation(projects.domain.walletConnect)
|
|
implementation(projects.domain.walletConnect.models)
|
|
implementation(projects.domain.markets)
|
|
implementation(projects.domain.manageTokens)
|
|
implementation(projects.domain.nft)
|
|
implementation(projects.domain.nft.models)
|
|
implementation(projects.domain.offramp)
|
|
implementation(projects.domain.onramp)
|
|
implementation(projects.domain.stories)
|
|
implementation(projects.domain.stories.models)
|
|
implementation(projects.domain.marketing)
|
|
implementation(projects.domain.marketing.models)
|
|
implementation(projects.domain.networks)
|
|
implementation(projects.domain.quotes)
|
|
implementation(projects.domain.notifications)
|
|
implementation(projects.domain.notifications.models)
|
|
implementation(projects.domain.swap.models)
|
|
implementation(projects.domain.swap)
|
|
implementation(projects.domain.walletManager)
|
|
implementation(projects.domain.walletManager.models)
|
|
implementation(projects.domain.yieldSupply)
|
|
implementation(projects.domain.promo)
|
|
implementation(projects.domain.blockaid)
|
|
implementation(projects.domain.hotWallet)
|
|
implementation(projects.domain.news)
|
|
implementation(projects.domain.earn)
|
|
implementation(projects.domain.assetsdiscovery)
|
|
implementation(projects.domain.search)
|
|
|
|
implementation(projects.common)
|
|
implementation(projects.common.routing)
|
|
implementation(projects.common.google)
|
|
implementation(projects.core.analytics)
|
|
implementation(projects.core.analytics.models)
|
|
implementation(projects.core.navigation)
|
|
implementation(projects.core.abTests)
|
|
implementation(projects.core.configToggles)
|
|
implementation(projects.core.res)
|
|
implementation(projects.core.ui)
|
|
implementation(projects.core.datasource)
|
|
implementation(projects.core.utils)
|
|
implementation(projects.core.decompose)
|
|
implementation(projects.core.error.ext)
|
|
implementation(projects.core.security)
|
|
implementation(projects.libs.crypto)
|
|
implementation(projects.libs.auth)
|
|
implementation(projects.libs.blockchainSdk)
|
|
implementation(projects.libs.tangemSdkApi)
|
|
|
|
implementation(projects.data.account)
|
|
implementation(projects.data.addressBook)
|
|
implementation(projects.data.appCurrency)
|
|
implementation(projects.data.appTheme)
|
|
implementation(projects.data.balanceHiding)
|
|
implementation(projects.data.pushNotificationPreferences)
|
|
implementation(projects.data.card)
|
|
implementation(projects.data.common)
|
|
implementation(projects.data.settings)
|
|
implementation(projects.data.appUpdate)
|
|
implementation(projects.data.tokens)
|
|
implementation(projects.data.assetsdiscovery)
|
|
implementation(projects.data.txhistory)
|
|
implementation(projects.data.wallets)
|
|
implementation(projects.data.analytics)
|
|
implementation(projects.data.appsflyer)
|
|
implementation(projects.data.transaction)
|
|
implementation(projects.data.visa)
|
|
implementation(projects.data.stories)
|
|
implementation(projects.data.marketing)
|
|
implementation(projects.data.onboarding)
|
|
implementation(projects.data.dynamicAddresses)
|
|
implementation(projects.data.feedback)
|
|
implementation(projects.data.qrScanning)
|
|
implementation(projects.data.staking)
|
|
implementation(projects.data.walletConnect)
|
|
implementation(projects.data.markets)
|
|
implementation(projects.data.manageTokens)
|
|
implementation(projects.data.nft)
|
|
implementation(projects.data.onramp)
|
|
implementation(projects.data.networks)
|
|
implementation(projects.data.quotes)
|
|
implementation(projects.data.blockaid)
|
|
implementation(projects.data.notifications)
|
|
implementation(projects.data.swap)
|
|
implementation(projects.data.walletManager)
|
|
implementation(projects.data.yieldSupply)
|
|
implementation(projects.data.promo)
|
|
implementation(projects.data.hotWallet)
|
|
implementation(projects.data.news)
|
|
implementation(projects.data.earn)
|
|
implementation(projects.data.search)
|
|
|
|
implementation(projects.common.ui)
|
|
|
|
/** Features */
|
|
implementation(projects.features.addressBook.api)
|
|
implementation(projects.features.addressBook.impl)
|
|
implementation(projects.features.rating.impl)
|
|
implementation(projects.features.referral.impl)
|
|
implementation(projects.features.referral.domain)
|
|
implementation(projects.features.referral.data)
|
|
implementation(projects.features.swap.api)
|
|
implementation(projects.features.swap.impl)
|
|
implementation(projects.features.swap.domain)
|
|
implementation(projects.features.swap.domain.api)
|
|
implementation(projects.features.swap.data)
|
|
implementation(projects.features.swapV2.api)
|
|
implementation(projects.features.swapV2.impl)
|
|
implementation(projects.features.tester.api)
|
|
implementation(projects.features.tester.impl)
|
|
implementation(projects.features.wallet.api)
|
|
implementation(projects.features.wallet.impl)
|
|
implementation(projects.features.tokendetails.api)
|
|
implementation(projects.features.tokendetails.impl)
|
|
implementation(projects.features.manageTokens.api)
|
|
implementation(projects.features.manageTokens.impl)
|
|
implementation(projects.features.send.api)
|
|
implementation(projects.features.send.impl)
|
|
implementation(projects.features.qrScanning.api)
|
|
implementation(projects.features.qrScanning.impl)
|
|
implementation(projects.features.staking.api)
|
|
implementation(projects.features.staking.impl)
|
|
implementation(projects.features.details.api)
|
|
implementation(projects.features.details.impl)
|
|
implementation(projects.features.disclaimer.api)
|
|
implementation(projects.features.disclaimer.impl)
|
|
implementation(projects.features.forceUpdate.api)
|
|
implementation(projects.features.forceUpdate.impl)
|
|
implementation(projects.features.pushNotifications.api)
|
|
implementation(projects.features.pushNotifications.impl)
|
|
implementation(projects.features.pushNotificationSettings.api)
|
|
implementation(projects.features.pushNotificationSettings.impl)
|
|
implementation(projects.features.walletSettings.api)
|
|
implementation(projects.features.walletSettings.impl)
|
|
implementation(projects.features.markets.api)
|
|
implementation(projects.features.markets.impl)
|
|
implementation(projects.features.feed.api)
|
|
implementation(projects.features.feed.impl)
|
|
implementation(projects.features.promoBanners.api)
|
|
implementation(projects.features.promoBanners.impl)
|
|
implementation(projects.features.onramp.api)
|
|
implementation(projects.features.onramp.impl)
|
|
implementation(projects.features.onboardingV2.api)
|
|
implementation(projects.features.onboardingV2.impl)
|
|
implementation(projects.features.stories.api)
|
|
implementation(projects.features.stories.impl)
|
|
implementation(projects.features.survey.api)
|
|
implementation(projects.features.survey.impl)
|
|
implementation(projects.features.txhistory.api)
|
|
implementation(projects.features.txhistory.impl)
|
|
implementation(projects.features.biometry.api)
|
|
implementation(projects.features.biometry.impl)
|
|
implementation(projects.features.nft.api)
|
|
implementation(projects.features.nft.impl)
|
|
implementation(projects.features.walletconnect.api)
|
|
implementation(projects.features.walletconnect.impl)
|
|
implementation(projects.features.commonFeatures.api)
|
|
implementation(projects.features.commonFeatures.impl)
|
|
implementation(projects.features.usedesk.api)
|
|
implementation(projects.features.usedesk.impl)
|
|
implementation(projects.features.hotWallet.api)
|
|
implementation(projects.features.hotWallet.impl)
|
|
implementation(projects.features.kyc.api)
|
|
debugImplementation(projects.features.kyc.impl)
|
|
internalImplementation(projects.features.kyc.impl)
|
|
mockedImplementation(projects.features.kyc.impl)
|
|
releaseImplementation(projects.features.kyc.impl)
|
|
externalImplementation(projects.features.kyc.impl)
|
|
implementation(projects.features.welcome.api)
|
|
implementation(projects.features.welcome.impl)
|
|
implementation(projects.features.createWalletSelection.api)
|
|
implementation(projects.features.createWalletSelection.impl)
|
|
implementation(projects.features.createWalletStart.api)
|
|
implementation(projects.features.createWalletStart.impl)
|
|
implementation(projects.features.home.api)
|
|
implementation(projects.features.home.impl)
|
|
implementation(projects.features.account.api)
|
|
implementation(projects.features.account.impl)
|
|
implementation(projects.features.tangempay.details.api)
|
|
implementation(projects.features.tangempay.details.impl)
|
|
implementation(projects.features.tangempay.main.api)
|
|
implementation(projects.features.tangempay.main.impl)
|
|
implementation(projects.features.tangempay.onboarding.api)
|
|
implementation(projects.features.tangempay.onboarding.impl)
|
|
implementation(projects.features.virtualAccounts.onboarding.impl)
|
|
implementation(projects.features.virtualAccounts.onboarding.api)
|
|
implementation(projects.features.virtualAccounts.main.impl)
|
|
implementation(projects.features.virtualAccounts.main.api)
|
|
implementation(projects.features.virtualAccounts.details.impl)
|
|
implementation(projects.features.virtualAccounts.details.api)
|
|
implementation(projects.features.tokenRecieve.api)
|
|
implementation(projects.features.tokenRecieve.impl)
|
|
implementation(projects.features.yieldSupply.api)
|
|
implementation(projects.features.yieldSupply.impl)
|
|
implementation(projects.features.approval.api)
|
|
implementation(projects.features.approval.impl)
|
|
implementation(projects.features.forYou.api)
|
|
implementation(projects.features.forYou.impl)
|
|
|
|
/** AndroidX libraries */
|
|
implementation(deps.androidx.core.ktx)
|
|
implementation(deps.androidx.core.splashScreen)
|
|
implementation(deps.androidx.appCompat)
|
|
implementation(deps.androidx.datastore)
|
|
implementation(deps.androidx.fragment.ktx)
|
|
implementation(deps.androidx.constraintLayout)
|
|
implementation(deps.androidx.activity.compose)
|
|
implementation(deps.androidx.browser)
|
|
implementation(deps.androidx.paging.runtime)
|
|
implementation(deps.androidx.swipeRefreshLayout)
|
|
implementation(deps.androidx.fragment.compose)
|
|
implementation(deps.androidx.workmanager)
|
|
implementation(deps.lifecycle.runtime.ktx)
|
|
implementation(deps.lifecycle.common.java8)
|
|
implementation(deps.lifecycle.viewModel.ktx)
|
|
implementation(deps.lifecycle.compose)
|
|
implementation(deps.hilt.work)
|
|
|
|
/** Compose libraries */
|
|
implementation(deps.compose.constraintLayout)
|
|
implementation(deps.compose.material3)
|
|
implementation(deps.compose.animation)
|
|
implementation(deps.compose.coil)
|
|
implementation(deps.compose.constraintLayout)
|
|
implementation(deps.compose.foundation)
|
|
implementation(deps.compose.navigation.hilt)
|
|
implementation(deps.compose.shimmer)
|
|
implementation(deps.compose.ui)
|
|
implementation(deps.compose.ui.tooling)
|
|
implementation(deps.compose.paging)
|
|
|
|
/** Firebase libraries */
|
|
implementation(platform(deps.firebase.bom))
|
|
implementation(deps.firebase.analytics)
|
|
implementation(deps.firebase.crashlytics)
|
|
implementation(deps.firebase.messaging)
|
|
implementation(deps.firebase.perf) {
|
|
exclude(group = "com.google.firebase", module = "protolite-well-known-types")
|
|
exclude(group = "com.google.protobuf", module = "protobuf-javalite")
|
|
}
|
|
/** Tangem libraries */
|
|
implementation(tangemDeps.blockchain) {
|
|
exclude(module = "joda-time")
|
|
}
|
|
implementation(tangemDeps.card.core)
|
|
implementation(tangemDeps.card.android) {
|
|
exclude(module = "joda-time")
|
|
}
|
|
implementation(tangemDeps.hot.core)
|
|
implementation(tangemDeps.hot.android)
|
|
|
|
/** DI */
|
|
implementation(deps.hilt.android)
|
|
kapt(deps.hilt.kapt)
|
|
kapt(deps.hilt.compilerx)
|
|
|
|
/** Other libraries */
|
|
implementation(deps.arrow.fx)
|
|
implementation(deps.kotlin.immutable.collections)
|
|
implementation(deps.material)
|
|
implementation(deps.googlePlay.review)
|
|
implementation(deps.googlePlay.review.ktx)
|
|
implementation(deps.googlePlay.services.wallet)
|
|
implementation(deps.googlePlay.services)
|
|
implementation(deps.googlePlay.advertising)
|
|
coreLibraryDesugaring(deps.desugar)
|
|
implementation(deps.zxing.qrCore)
|
|
implementation(deps.coil)
|
|
implementation(deps.coil.gif)
|
|
implementation(deps.coil.svg)
|
|
implementation(deps.amplitude)
|
|
implementation(deps.appsflyer)
|
|
implementation(deps.appsflyer.oaid)
|
|
implementation(deps.customerio.analytics)
|
|
implementation(deps.customerio.messaging)
|
|
implementation("com.android.installreferrer:installreferrer:2.2")
|
|
implementation(deps.spongecastle.core)
|
|
implementation(deps.lottie)
|
|
implementation(deps.compose.accompanist.appCompatTheme)
|
|
implementation(deps.compose.accompanist.systemUiController)
|
|
implementation(deps.xmlShimmer)
|
|
implementation(deps.viewBindingDelegate)
|
|
implementation(deps.armadillo)
|
|
implementation(deps.kotlin.serialization)
|
|
implementation(deps.reownCore)
|
|
implementation(deps.reownWeb3)
|
|
implementation(deps.decompose.ext.compose)
|
|
implementation(deps.moshi.adapters)
|
|
implementation(deps.moshi.kotlin)
|
|
ksp(deps.moshi.kotlin.codegen)
|
|
kaptForObfuscatingVariants(deps.retrofit.response.type.keeper)
|
|
implementation(files("libs/dexprotector-annotations.jar"))
|
|
|
|
/** Testing libraries */
|
|
testImplementation(projects.test.core)
|
|
testImplementation(projects.common.test)
|
|
androidTestImplementation(deps.test.junit.android)
|
|
androidTestImplementation(deps.test.espresso)
|
|
androidTestImplementation(deps.test.espresso.intents)
|
|
androidTestImplementation(deps.test.kaspresso)
|
|
androidTestImplementation(deps.test.kaspresso.compose)
|
|
androidTestImplementation(deps.test.kaspresso.allure)
|
|
androidTestImplementation(deps.test.compose.junit)
|
|
androidTestImplementation(deps.test.hamcrest)
|
|
androidTestImplementation(deps.test.hilt)
|
|
kaptAndroidTest(deps.test.hilt.compiler)
|
|
|
|
/** Chucker */
|
|
debugImplementation(deps.chucker)
|
|
mockedImplementation(deps.chucker)
|
|
externalImplementation(deps.chuckerStub)
|
|
internalImplementation(deps.chuckerStub)
|
|
releaseImplementation(deps.chuckerStub)
|
|
|
|
/** Camera */
|
|
implementation(deps.camera.camera2)
|
|
implementation(deps.camera.lifecycle)
|
|
implementation(deps.camera.view)
|
|
implementation(deps.listenableFuture)
|
|
implementation(deps.mlKit.barcodeScanning)
|
|
|
|
androidTestUtil(deps.test.orchestrator)
|
|
|
|
/** Leakcanary */
|
|
debugImplementation(deps.leakcanary)
|
|
|
|
/** Excluded dependencies */
|
|
implementation("com.google.guava:guava:30.0-android") {
|
|
// excludes version 9999.0-empty-to-avoid-conflict-with-guava
|
|
exclude(group = "com.google.guava", module = "listenablefuture")
|
|
}
|
|
|
|
/** Huawei flavor-specific dependencies */
|
|
"huaweiImplementation"(deps.huawei.push)
|
|
"huaweiImplementation"(deps.agconnect.agcp)
|
|
"huaweiImplementation"(deps.agconnect.core)
|
|
} |