plugins { alias(libs.plugins.android.application) alias(libs.plugins.kotlin.android) alias(libs.plugins.ksp) alias(libs.plugins.naviagation) alias(libs.plugins.sqldelight) alias(libs.plugins.google.services) alias(libs.plugins.composeCompiler) } apply plugin: "kotlin-parcelize" apply plugin: 'kotlin-kapt' configurations { compile.exclude group: 'org.apache.httpcomponents', module: 'httpclient' } configurations.configureEach { resolutionStrategy { force 'com.fasterxml.jackson.core:jackson-core:2.9.6' force 'com.fasterxml.jackson.core:jackson-databind:2.9.6' force 'com.fasterxml.jackson.core:jackson-annotations:2.9.6' eachDependency { DependencyResolveDetails details -> if (details.requested.group == "com.google.guava" && details.requested.name == "guava") { details.useTarget(libs.guava) } } } } ksp { arg("deepLink.incremental", "true") arg("deepLink.customAnnotations", "com.airbnb.AppDeepLink|com.airbnb.WebDeepLink") } dependencies { implementation project(includePrefix + ':walletmodel') implementation project(includePrefix + ':wapi') implementation project(includePrefix + ':walletcore') implementation project(includePrefix + ':trezor') implementation project(includePrefix + ':lt-api') implementation project(includePrefix + ':mbwlib') implementation project(includePrefix + ':btchip') implementation project(includePrefix + ':LVL') implementation project(includePrefix + ':libs:nordpol') implementation project(includePrefix + ':bitlib') implementation project(includePrefix + ':view') implementation project(includePrefix + ':fiosdk') implementation project(includePrefix + ':androidfioserializationprovider') implementation project(includePrefix + ':supportChat') implementation project(':common') implementation libs.guava implementation libs.bundles.retrofit // ViewModel and LiveData implementation "androidx.activity:activity-ktx:1.3.1" implementation "androidx.activity:activity-compose:1.9.3" implementation libs.compose.runtime implementation libs.compose.ui implementation libs.compose.foundation implementation libs.compose.material3 implementation libs.gitlive.firebase.firestore implementation libs.gitlive.firebase.functions implementation "androidx.appcompat:appcompat:$appCompatVersion" implementation 'androidx.constraintlayout:constraintlayout:2.1.0' implementation libs.bundles.lifecycle implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" implementation(platform(libs.firebase.bom)) implementation libs.bundles.firebase.bom implementation "com.google.code.findbugs:jsr305:3.0.2" implementation "com.squareup:otto:$ottoVersion" implementation 'androidx.browser:browser:1.5.0' implementation "androidx.biometric:biometric:1.1.0" implementation libs.androidx.core implementation "androidx.fragment:fragment-ktx:1.3.6" implementation "androidx.vectordrawable:vectordrawable-animated:1.1.0" implementation libs.recyclerview implementation "androidx.gridlayout:gridlayout:1.0.0" implementation "androidx.preference:preference:1.1.1" implementation "androidx.work:work-runtime-ktx:$workManagerVersion" implementation libs.bundles.navigation implementation "androidx.viewpager2:viewpager2:1.1.0-beta01" implementation "com.google.android.material:material:$materialVersion" implementation "org.ocpsoft.prettytime:prettytime:3.2.5.Final" implementation "com.squareup.wire:wire-runtime:$wireVersion" implementation "com.squareup.okhttp3:logging-interceptor:3.8.1" implementation "com.squareup.okhttp:okhttp:$okhttpVersion" implementation "commons-codec:commons-codec:1.10" compileOnly libs.protobuf.javalite implementation "androidx.constraintlayout:constraintlayout:$constraintLayoutVersion" //USED BY KYC only, have to be reviewed later implementation "com.googlecode.libphonenumber:libphonenumber:8.12.2" implementation "com.nulab-inc:zxcvbn:1.3.0" implementation 'io.reactivex.rxjava2:rxandroid:2.1.1' // Because RxAndroid releases are few and far between, it is recommended you also // explicitly depend on RxJava's latest version for bug fixes and new features. // (see https://github.com/ReactiveX/RxJava/releases for latest 2.x.x version) implementation 'io.reactivex.rxjava2:rxjava:2.2.12' implementation 'io.reactivex:rxkotlin:2.0.0-RC1' implementation "com.journeyapps:zxing-android-embedded:3.6.0" implementation project(includePrefix + ":wallet-android-modularization-tools:modularization-lib") implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" implementation libs.kotlinx.coroutines.android implementation "com.github.tony19:logback-android-core:1.1.1-6" implementation "com.google.http-client:google-http-client-jackson2:$httpClientJacksonVersion" implementation libs.jackson.databind implementation libs.jackson.module.kotlin implementation libs.bouncycastle.bcprov implementation("org.bitcoinj:orchid:1.2.1") { exclude(module: 'slf4j-api') } implementation libs.bundles.web3j implementation libs.sqldelight.driver implementation(libs.glide) { exclude group: "com.android.support" } implementation libs.play.services.base ksp libs.glide.ksp implementation files("$rootDir/libs/netcipher-2.2.1.jar") implementation "com.airbnb.android:lottie:3.4.0" coreLibraryDesugaring "com.android.tools:desugar_jdk_libs:2.1.5" // unit test block testImplementation libs.junit // android test block androidTestImplementation project(includePrefix + ':testhelper') androidTestImplementation libs.bundles.android.test.bundle androidTestImplementation libs.bundles.espresso androidTestImplementation libs.bundles.mockk // Kotlin Coroutines Test androidTestImplementation "org.jetbrains.kotlinx:kotlinx-coroutines-test:1.10.1" } sqldelight { databases { GiftboxDB { packageName = "com.mycelium.generated.giftbox.database" } LoggerDB { packageName = "com.mycelium.generated.logger.database" srcDirs.setFrom("src/main/sqldelight_logger") // sourceFolders = ["sqldelight_logger"] } RatesDB { packageName = "com.mycelium.generated.rates.database" srcDirs.setFrom("src/main/sqldelight_rate") // sourceFolders = ["sqldelight_rate"] } } } android { namespace 'com.mycelium.wallet' buildFeatures { viewBinding true dataBinding true buildConfig true compose true } configurations { all*.exclude module: 'jcip-annotations' all*.exclude module: 'jsr305' all*.exclude group: 'com.google.guava', module: 'listenablefuture' } packagingOptions { exclude 'META-INF/FastDoubleParser-NOTICE' exclude 'META-INF/FastDoubleParser-LICENSE' exclude 'META-INF/versions/9/OSGI-INF/MANIFEST.MF' exclude 'META-INF/LICENSE.md' exclude 'META-INF/LICENSE-notice.md' exclude 'META-INF/LICENSE' exclude 'META-INF/NOTICE' exclude 'META-INF/DEPENDENCIES' exclude 'META-INF/INDEX.LIST' exclude 'META-INF/*.version' exclude 'META-INF/*.properties' exclude 'META-INF/*_module' exclude 'META-INF/services' exclude 'META-INF/services/' exclude 'META-INF/services/*' exclude 'META-INF/services/*.*' exclude 'META-INF/services/**' exclude 'META-INF/services/java.sql.Driver' // bitcoinj brings in a native library for x86_64, which seems to confuse the playstore upload - just strip the file // still relevant 2021-03-31 exclude 'lib/x86_64/darwin/libscrypt.dylib' // .proto source files leak into the trezor AAR via the protobuf-gradle-plugin's // extracted-include-protos; they collide with the same well-known-types .proto // shipped inside protobuf-javalite. They're only needed at protoc-gen time, never // at runtime — strip them from the final APK. exclude '**/*.proto' resources { excludes += "/META-INF/DISCLAIMER" } } compileOptions { sourceCompatibility = JavaVersion.VERSION_21 targetCompatibility = JavaVersion.VERSION_21 coreLibraryDesugaringEnabled true } compileSdk = libs.versions.android.compileSdk.get().toInteger() defaultConfig { versionCode 3220002 versionName '3.22.0.2' minSdk = libs.versions.android.minSdk.get().toInteger() targetSdk = libs.versions.android.targetSdk.get().toInteger() testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" vectorDrawables.useSupportLibrary true } signingConfigs { release { if (project.hasProperty('prodKeyStore') && project.hasProperty('prodKeyAlias') && project.hasProperty('prodKeyStorePassword') && project.hasProperty('prodKeyAliasPassword')) { storeFile file('../' + prodKeyStore) keyAlias prodKeyAlias storePassword prodKeyStorePassword keyPassword prodKeyAliasPassword } else { failIfSigningKeyEnforced() storeFile commonDebugKeystore storePassword 'android' keyAlias 'androiddebugkey' keyPassword 'android' } } btctestnet { if (project.hasProperty('testKeyStore') && project.hasProperty('testKeyAlias') && project.hasProperty('testKeyStorePassword') && project.hasProperty('testKeyAliasPassword')) { storeFile file('../' + testKeyStore) keyAlias testKeyAlias storePassword testKeyStorePassword keyPassword testKeyAliasPassword } else { failIfSigningKeyEnforced() storeFile commonDebugKeystore storePassword 'android' keyAlias 'androiddebugkey' keyPassword 'android' } } commonDebug { storeFile commonDebugKeystore storePassword 'android' keyAlias 'androiddebugkey' keyPassword 'android' } } buildTypes { release { minifyEnabled false ndk { debugSymbolLevel 'full' } } debug { applicationIdSuffix '.debug' signingConfig signingConfigs.commonDebug debuggable true } } lint { baseline = file("lint-baseline.xml") } flavorDimensions "default" productFlavors { prodnet { applicationId 'com.mycelium.wallet' versionName = defaultConfig.versionName signingConfig signingConfigs.release ext { MTAssetID = "LaA8aiRBha2BcC6PCqMuK8xzZqdA3Lb6VVv41K" MassAssetID = "La4szjzKfJyHQ75qgDEnbzp4qY8GQeDR5Z7h2W" RMCAssetID = "La4aGUPuNKZyC393pS2Nb4RJdk2WvmoaAdrRLZ" RMCApiClientURL = "https://rmc-ico.gear.mycelium.com/api/" ColoredCoinsApiURLs = '{"https://coloredcoinsd.gear.mycelium.com/v3/", "https://api.coloredcoins.org/v3/"}' ColuBlockExplorerApiURLs = '{"https://coloredcoins.gear.mycelium.com/api/", "https://explorer.coloredcoins.org/api/"}' RMCChangeAddress = "18c91fJmVg7btPjxpwrhgwd37GkVghq9me" ElectrumServers = '{"tcp-tls://electrumx-1a.mycelium.com:10000",' + '"tcp-tls://electrumx-1a0.mycelium.com:10000",' + '"tcp-tls://electrumx-1a0.mycelium.com:50002",' + '"tcp-tls://electrumx-1a1.mycelium.com:10000",' + '"tcp-tls://electrumx-1a1.mycelium.com:50002",' + '"tcp-tls://electrumx-1a2.mycelium.com:10000",' + '"tcp-tls://electrumx-1a2.mycelium.com:50002",' + '"tcp-tls://electrumx-2a0.mycelium.com:10000",' + '"tcp-tls://electrumx-2a0.mycelium.com:10001"}' WapiServers='"[{\\\'cert-sha1\':\\\'17:62:9D:04:0D:4E:1E:A2:9A:BD:FF:9F:38:1B:18:8F:94:3E:8B:5F\\\',\\\'url\\\':\\\'https://wapi.mycelium.com\\\'}]"' ElectrumBTCVServers ='{"tcp-tls://electrumx-mainnet1.bitcoinvault.global:443",' + '"tcp-tls://electrumx-mainnet2.bitcoinvault.global:443"}' EthBlockBook = '{"https://bb-eth.mycelium.com:9136"}' FioApiServers = '{"https://fio.eu.eosamsterdam.net/v1/",' + '"https://fio.eosdac.io/v1/",' + '"https://fio.eosphere.io/v1/",' + '"https://fio.eosrio.io/v1/",' + '"https://fio.acherontrading.com/v1/",' + '"https://fio.eos.barcelona/v1/",' + '"https://fio.zenblocks.io/v1/",' + '"https://api.fio.alohaeos.com/v1/",' + '"https://fio.greymass.com/v1/",' + '"https://fio.genereos.io/v1/",' + '"https://fio.eosusa.news/v1/",' + '"https://fio.eosargentina.io/v1/",' + '"https://fio.cryptolions.io/v1/",' + '"https://fio-mainnet.eosblocksmith.io/v1/",' + '"https://api.fio.currencyhub.io/v1/",' + '"https://fio.eoscannon.io/v1/",' + '"https://fio.eosdublin.io/v1/",' + '"https://api.fiosweden.org/v1/",' + '"https://api.fio.greeneosio.com/v1/",' + '"https://fioapi.ledgerwise.io/v1/",' + '"https://api.fio.services/v1/",' + '"https://fio.eostribe.io/v1/",' + '"https://fio-za.eostribe.io/v1/"}' FioHistoryServers = '{"https://fio.greymass.com/v1/",' + '"https://fio.greymass.com/v1/",' + '"https://fio.eosphere.io/v1/",' + '"https://api.fiosweden.org/v1/",' + '"https://fio.eosphere.io/v1/"}' tpid = "" appIdSpvBch = [release: "com.mycelium.module.spvbch", debug : "com.mycelium.module.spvbch.debug"] appIdGeb = [release: "com.modules.tradingbots.getextrabtc", debug : "com.modules.tradingbots.getextrabtc.debug"] simplex ="https://exchange.mycelium.com/" safello = "https://app.safello.com/sdk/quickbuy.html?appId=21d71273-8f10-4c48-b5f4-09617586f909&lang=en&utm_source=Mycelium&utm_medium=Wallet&address=%s&dark-mode=true" sepa = "https://app.safello.com/sdk/quickbuy.html?appId=908d82e3-939d-45eb-95fa-77d9c9441d9d&lang=en&utm_source=Mycelium&utm_medium=Wallet&address=%s&dark-mode=true&channel=bank_transfer&tabs=true" safelloEth = "https://app.safello.com/sdk/quickbuy.html?appId=21d71273-8f10-4c48-b5f4-09617586f909&lang=en&utm_source=Mycelium&utm_medium=Wallet&address=%s&dark-mode=true&crypto=eth" sepaEth = "https://app.safello.com/sdk/quickbuy.html?appId=908d82e3-939d-45eb-95fa-77d9c9441d9d&lang=en&utm_source=Mycelium&utm_medium=Wallet&address=%s&dark-mode=true&channel=bank_transfer&crypto=eth" sepaBuyBitsOfGold = "https://www.bitsofgold.co.il/order/buy?order_id=null&page=0&provider=mycelium&utm_source=Mycelium&utm_medium=mobile_app&utm_campaign=ci" sepaSellBitsOfGold = "https://www.bitsofgold.co.il/order/sell?order_id=null&page=0&provider=mycelium&utm_source=Mycelium&utm_medium=mobile_app&utm_campaign=co" mediaFlowURL = "https://media.mycelium.com/wp-json/wp/v2/" } logger.info("Signing config is ", signingConfig) } btctestnet { applicationId 'com.mycelium.testnetwallet' versionName = defaultConfig.versionName + '-TESTNET' signingConfig signingConfigs.btctestnet ext { MTAssetID = "La3JCiNMGmc74rcfYiBAyTUstFgmGDRDkGGCRM" MassAssetID = "La4szjzKfJyHQ75qgDEnbzp4qY8GQeDR5Z7h2W" RMCAssetID = "La8yFVyKmHGf4KWjcPqATZeTrSxXyzB3JRPxDc" RMCApiClientURL = "https://rmc-ico-test.gear.mycelium.com/api/" ColoredCoinsApiURLs = '{"http://coloredcoins-test.mycelium.com:28342/"}' ColuBlockExplorerApiURLs = '{"http://coloredcoins-test.mycelium.com:28332/api/"}' RMCChangeAddress = "mx92L6iuCfxQUz4cLNU4jJpfWbavVHgYj9" ElectrumServers = '{"tcp-tls://wallet-testnet.mycelium.com:19335"}' WapiServers='"[{\\\'cert-sha1\':\\\'ED:C2:82:16:65:8C:4E:E1:C7:F6:A2:2B:15:EC:30:F9:CD:48:F8:DB\\\',\\\'url\\\':\\\'https://mws30.mycelium.com/wapitestnet\\\'}]"' EthBlockBook = '{"https://bb-eth.mycelium.com:19126"}' ElectrumBTCVServers ='{"tcp-tls://electrumx.testnet.btcv.stage.rnd.land:443"}' FioApiServers = '{"https://fiotestnet.greymass.com/v1/"}' FioHistoryServers = '{"https://fiotestnet.greymass.com/v1/"}' tpid = "megabit@mycelium" appIdSpvBch = [release: "com.mycelium.module.spvbch.testnet", debug : "com.mycelium.module.spvbch.testnet.debug"] appIdGeb = [release: "com.modules.tradingbots.getextrabtc.testnet", debug : "com.modules.tradingbots.getextrabtc.testnet.debug"] simplex ="https://exchange.mycelium.com/" safello = "https://app.s4f3.io/sdk/quickbuy.html?appId=1234-5678&lang=en&utm_source=Mycelium&utm_medium=Wallet&address=%s&dark-mode=true" sepa = "https://app.s4f3.io/sdk/quickbuy.html?appId=1234-5678&lang=en&utm_source=Mycelium&utm_medium=Wallet&address=%s&dark-mode=true&channel=bank_transfer&tabs=true" safelloEth = "https://app.s4f3.io/sdk/quickbuy.html?appId=1234-5678&lang=en&utm_source=Mycelium&utm_medium=Wallet&address=%s&dark-mode=true&crypto=eth" sepaEth = "https://app.s4f3.io/sdk/quickbuy.html?appId=1234-5678&lang=en&utm_source=Mycelium&utm_medium=Wallet&address=%s&dark-mode=true&channel=bank_transfer&crypto=eth" sepaBuyBitsOfGold = "https://www.bitsofgold.co.il/order/buy?order_id=null&page=0&provider=mycelium&utm_source=Mycelium&utm_medium=mobile_app&utm_campaign=ci" sepaSellBitsOfGold = "https://www.bitsofgold.co.il/order/sell?order_id=null&page=0&provider=mycelium&utm_source=Mycelium&utm_medium=mobile_app&utm_campaign=co" mediaFlowURL = "http://media-dev.mycelium.com/wp-json/wp/v2/" } logger.info("Signing config is ", signingConfig) } // huaweiProdnet { // applicationId 'com.mycelium.wallet.app' // versionName = defaultConfig.versionName // signingConfig signingConfigs.release // // ext { // MTAssetID = "LaA8aiRBha2BcC6PCqMuK8xzZqdA3Lb6VVv41K" // MassAssetID = "La4szjzKfJyHQ75qgDEnbzp4qY8GQeDR5Z7h2W" // RMCAssetID = "La4aGUPuNKZyC393pS2Nb4RJdk2WvmoaAdrRLZ" // RMCApiClientURL = "https://rmc-ico.gear.mycelium.com/api/" // ColoredCoinsApiURLs = '{"https://coloredcoinsd.gear.mycelium.com/v3/", "https://api.coloredcoins.org/v3/"}' // ColuBlockExplorerApiURLs = '{"https://coloredcoins.gear.mycelium.com/api/", "https://explorer.coloredcoins.org/api/"}' // RMCChangeAddress = "18c91fJmVg7btPjxpwrhgwd37GkVghq9me" // // // ElectrumServers = '{"tcp-tls://electrumx-1a.mycelium.com:10000",' + // '"tcp-tls://electrumx-1a0.mycelium.com:10000",' + // '"tcp-tls://electrumx-1a0.mycelium.com:50002",' + // '"tcp-tls://electrumx-1a1.mycelium.com:10000",' + // '"tcp-tls://electrumx-1a1.mycelium.com:50002",' + // '"tcp-tls://electrumx-1a2.mycelium.com:10000",' + // '"tcp-tls://electrumx-1a2.mycelium.com:50002",' + // '"tcp-tls://electrumx-2a0.mycelium.com:10000",' + // '"tcp-tls://electrumx-2a0.mycelium.com:10001"}' // WapiServers='"[{\\\'cert-sha1\':\\\'17:62:9D:04:0D:4E:1E:A2:9A:BD:FF:9F:38:1B:18:8F:94:3E:8B:5F\\\',\\\'url\\\':\\\'https://wapi.mycelium.com\\\'}]"' // ElectrumBTCVServers ='{"tcp-tls://electrumx-mainnet1.bitcoinvault.global:443",' + // '"tcp-tls://electrumx-mainnet2.bitcoinvault.global:443"}' // EthBlockBook = '{"https://bb-eth.mycelium.com:9136"}' // FioApiServers = '{"https://fio.eu.eosamsterdam.net/v1/",' + // '"https://fio.eosdac.io/v1/",' + // '"https://fio.eosphere.io/v1/",' + // '"https://fio.eosrio.io/v1/",' + // '"https://fio.acherontrading.com/v1/",' + // '"https://fio.eos.barcelona/v1/",' + // '"https://fio.zenblocks.io/v1/",' + // '"https://api.fio.alohaeos.com/v1/",' + // '"https://fio.greymass.com/v1/",' + // '"https://fio.genereos.io/v1/",' + // '"https://fio.eosusa.news/v1/",' + // '"https://fio.eosargentina.io/v1/",' + // '"https://fio.cryptolions.io/v1/",' + // '"https://fio-mainnet.eosblocksmith.io/v1/",' + // '"https://api.fio.currencyhub.io/v1/",' + // '"https://fio.eoscannon.io/v1/",' + // '"https://fio.eosdublin.io/v1/",' + // '"https://api.fiosweden.org/v1/",' + // '"https://api.fio.greeneosio.com/v1/",' + // '"https://fioapi.ledgerwise.io/v1/",' + // '"https://api.fio.services/v1/",' + // '"https://fio.eostribe.io/v1/",' + // '"https://fio-za.eostribe.io/v1/"}' // FioHistoryServers = '{"https://fio.greymass.com/v1/",' + // '"https://fio.greymass.com/v1/",' + // '"https://fio.eosphere.io/v1/",' + // '"https://api.fiosweden.org/v1/",' + // '"https://fio.eosphere.io/v1/"}' // tpid = "" // // appIdSpvBch = [release: "com.mycelium.module.spvbch", // debug : "com.mycelium.module.spvbch.debug"] // appIdGeb = [release: "com.modules.tradingbots.getextrabtc", // debug : "com.modules.tradingbots.getextrabtc.debug"] // simplex ="https://exchange.mycelium.com/" // safello = "https://app.safello.com/sdk/quickbuy.html?appId=21d71273-8f10-4c48-b5f4-09617586f909&lang=en&utm_source=Mycelium&utm_medium=Wallet&address=%s&dark-mode=true" // sepa = "https://app.safello.com/sdk/quickbuy.html?appId=908d82e3-939d-45eb-95fa-77d9c9441d9d&lang=en&utm_source=Mycelium&utm_medium=Wallet&address=%s&dark-mode=true&channel=bank_transfer&tabs=true" // safelloEth = "https://app.safello.com/sdk/quickbuy.html?appId=21d71273-8f10-4c48-b5f4-09617586f909&lang=en&utm_source=Mycelium&utm_medium=Wallet&address=%s&dark-mode=true&crypto=eth" // sepaEth = "https://app.safello.com/sdk/quickbuy.html?appId=908d82e3-939d-45eb-95fa-77d9c9441d9d&lang=en&utm_source=Mycelium&utm_medium=Wallet&address=%s&dark-mode=true&channel=bank_transfer&crypto=eth" // sepaBuyBitsOfGold = "https://www.bitsofgold.co.il/order/buy?order_id=null&page=0&provider=mycelium&utm_source=Mycelium&utm_medium=mobile_app&utm_campaign=ci" // sepaSellBitsOfGold = "https://www.bitsofgold.co.il/order/sell?order_id=null&page=0&provider=mycelium&utm_source=Mycelium&utm_medium=mobile_app&utm_campaign=co" // mediaFlowURL = "https://media.mycelium.com/wp-json/wp/v2/" // } // logger.info("Signing config is ", signingConfig) // } } applicationVariants.all { variant -> def flavor = variant.productFlavors[0] variant.buildConfigField "String", "MTAssetID", "\"${flavor.ext.MTAssetID}\"" variant.buildConfigField "String", "MassAssetID", "\"${flavor.ext.MassAssetID}\"" variant.buildConfigField "String", "RMCAssetID", "\"${flavor.ext.RMCAssetID}\"" variant.buildConfigField "String", "RMCApiClientURL", "\"${flavor.ext.RMCApiClientURL}\"" variant.buildConfigField "String[]", "ColoredCoinsApiURLs", "${flavor.ext.ColoredCoinsApiURLs}" variant.buildConfigField "String[]", "ColuBlockExplorerApiURLs", "${flavor.ext.ColuBlockExplorerApiURLs}" variant.buildConfigField "String", "RMCChangeAddress", "\"${flavor.ext.RMCChangeAddress}\"" variant.buildConfigField "String[]", "ElectrumServers", "${flavor.ext.ElectrumServers}" variant.buildConfigField "String[]", "ElectrumBTCVServers", "${flavor.ext.ElectrumBTCVServers}" variant.buildConfigField "String[]", "EthBlockBook", "${flavor.ext.EthBlockBook}" variant.buildConfigField "String[]", "FioApiServers", "${flavor.ext.FioApiServers}" variant.buildConfigField "String[]", "FioHistoryServers", "${flavor.ext.FioHistoryServers}" variant.buildConfigField "String", "tpid", "\"${flavor.ext.tpid}\"" variant.buildConfigField "String", "WapiServers", "${flavor.ext.WapiServers}" variant.buildConfigField "String", "appIdSpvBch", "\"${flavor.ext.appIdSpvBch[variant.buildType.name]}\"" variant.buildConfigField "String", "appIdGeb", "\"${flavor.ext.appIdGeb[variant.buildType.name]}\"" variant.buildConfigField "String", "SIMPLEX", "\"${flavor.ext.simplex}\"" variant.buildConfigField "String", "SAFELLO", "\"${flavor.ext.safello}\"" variant.buildConfigField "String", "SEPA", "\"${flavor.ext.sepa}\"" variant.buildConfigField "String", "SAFELLO_ETH", "\"${flavor.ext.safelloEth}\"" variant.buildConfigField "String", "SEPA_ETH", "\"${flavor.ext.sepaEth}\"" variant.buildConfigField "String", "SEPA_BUY_BITS_OF_GOLD", "\"${flavor.ext.sepaBuyBitsOfGold}\"" variant.buildConfigField "String", "SEPA_SELL_BITS_OF_GOLD", "\"${flavor.ext.sepaSellBitsOfGold}\"" variant.buildConfigField "String", "MEDIA_FLOW_URL", "\"${flavor.ext.mediaFlowURL}\"" } testOptions { unitTests.returnDefaultValues = true } aaptOptions { cruncherEnabled = false } ndkVersion '21.1.6352462' }