@@ -50,6 +50,8 @@ val selectableVariants = listOf(
5050 " playStagingInstrumentation" ,
5151 " playStagingRelease" ,
5252 " websiteProdSpinner" ,
53+ " websiteFossProdRelease" ,
54+ " websiteGmsProdRelease" ,
5355 " websiteProdRelease"
5456)
5557
@@ -88,7 +90,7 @@ android {
8890 compileSdkVersion = signalCompileSdkVersion
8991 ndkVersion = signalNdkVersion
9092
91- flavorDimensions + = listOf (" distribution" , " environment" )
93+ flavorDimensions + = listOf (" distribution" , " gms " , " environment" )
9294 testBuildType = " instrumentation"
9395
9496 android.bundle.language.enableSplit = false
@@ -360,8 +362,10 @@ android {
360362 }
361363
362364 create(" website" ) {
365+ val MAU = if (gradle.startParameter.taskRequests.toString().contains(" Foss" )) " false" else " true"
366+
363367 dimension = " distribution"
364- buildConfigField(" boolean" , " MANAGES_APP_UPDATES" , " true " )
368+ buildConfigField(" boolean" , " MANAGES_APP_UPDATES" , " ${ MAU } " )
365369 buildConfigField(" String" , " APK_UPDATE_MANIFEST_URL" , " \" https://updates.signal.org/android/latest.json\" " )
366370 buildConfigField(" String" , " BUILD_DISTRIBUTION_TYPE" , " \" website\" " )
367371 }
@@ -381,6 +385,17 @@ android {
381385 buildConfigField(" boolean" , " LINK_DEVICE_UX_ENABLED" , " true" )
382386 }
383387
388+ create(" gms" ) {
389+ dimension = " gms"
390+ isDefault = true
391+ buildConfigField(" boolean" , " USE_OSM" , " false" )
392+ }
393+
394+ create(" foss" ) {
395+ dimension = " gms"
396+ buildConfigField(" boolean" , " USE_OSM" , " true" )
397+ }
398+
384399 create(" prod" ) {
385400 dimension = " environment"
386401
@@ -551,14 +566,16 @@ dependencies {
551566 implementation(libs.androidx.asynclayoutinflater)
552567 implementation(libs.androidx.asynclayoutinflater.appcompat)
553568 implementation(libs.androidx.emoji2)
554- implementation (libs.firebase.messaging) {
569+ " gmsImplementation " (libs.firebase.messaging) {
555570 exclude(group = " com.google.firebase" , module = " firebase-core" )
556571 exclude(group = " com.google.firebase" , module = " firebase-analytics" )
557572 exclude(group = " com.google.firebase" , module = " firebase-measurement-connector" )
558573 }
559- implementation(libs.google.play.services.maps)
560- implementation(libs.google.play.services.auth)
561- implementation(libs.google.signin)
574+ " gmsImplementation" (libs.google.play.services.maps)
575+ " gmsImplementation" (libs.google.play.services.auth)
576+ " gmsImplementation" (libs.google.signin)
577+ " fossImplementation" (project(" :libfakegms" ))
578+ " fossImplementation" (libs.osmdroid)
562579 implementation(libs.bundles.media3)
563580 implementation(libs.conscrypt.android)
564581 implementation(libs.signal.aesgcmprovider)
@@ -596,17 +613,17 @@ dependencies {
596613 implementation(libs.accompanist.drawablepainter)
597614 implementation(libs.kotlin.stdlib.jdk8)
598615 implementation(libs.kotlin.reflect)
599- implementation (libs.kotlinx.coroutines.play.services)
616+ " gmsImplementation " (libs.kotlinx.coroutines.play.services)
600617 implementation(libs.kotlinx.coroutines.rx3)
601618 implementation(libs.jackson.module.kotlin)
602619 implementation(libs.rxjava3.rxandroid)
603620 implementation(libs.rxjava3.rxkotlin)
604621 implementation(libs.rxdogtag)
605622 implementation(libs.androidx.credentials)
606- implementation (libs.androidx.credentials.compat)
623+ " gmsImplementation " (libs.androidx.credentials.compat)
607624 implementation(libs.kotlinx.serialization.json)
608625
609- implementation (project(" :billing" ))
626+ " gmsImplementation " (project(" :billing" ))
610627
611628 " spinnerImplementation" (project(" :spinner" ))
612629
0 commit comments