/ play-services-core / build.gradle
build.gradle
  1  /*
  2   * SPDX-FileCopyrightText: 2013 microG Project Team
  3   * SPDX-License-Identifier: Apache-2.0
  4   */
  5  
  6  apply plugin: 'com.android.application'
  7  apply plugin: 'kotlin-android'
  8  
  9  configurations {
 10      mapboxRuntimeOnly
 11      vtmRuntimeOnly
 12      if (hasModule("hms", true)) hmsRuntimeOnly
 13      defaultRuntimeOnly
 14  }
 15  
 16  dependencies {
 17      implementation "com.squareup.wire:wire-runtime:$wireVersion"
 18      implementation "de.hdodenhof:circleimageview:1.3.0"
 19  
 20      implementation project(':fake-signature')
 21      implementation project(':firebase-dynamic-links')
 22      implementation project(':firebase-auth-core')
 23      implementation project(':play-services-ads-core')
 24      implementation project(':play-services-ads-identifier-core')
 25      implementation project(':play-services-ads-lite-core')
 26      implementation project(':play-services-appinvite-core')
 27      implementation project(':play-services-appset-core')
 28      implementation project(':play-services-auth-api-phone-core')
 29      implementation project(':play-services-auth-workaccount-core')
 30      implementation project(':play-services-base-core')
 31      implementation project(':play-services-cast-core')
 32      implementation project(':play-services-cast-framework-core')
 33      implementation project(':play-services-conscrypt-provider-core')
 34      implementation project(':play-services-cronet-core')
 35      implementation project(':play-services-droidguard-core')
 36      implementation project(':play-services-fido-core')
 37      implementation project(':play-services-fitness-core')
 38      implementation project(':play-services-gmscompliance-core')
 39      implementation project(':play-services-location-core')
 40      implementation project(':play-services-location-core-base')
 41      implementation project(':play-services-oss-licenses-core')
 42      implementation project(':play-services-panorama-core')
 43      implementation project(':play-services-pay-core')
 44      implementation project(':play-services-recaptcha-core')
 45      implementation project(':play-services-safetynet-core')
 46      implementation project(':play-services-tapandpay-core')
 47      implementation project(':play-services-threadnetwork-core')
 48      implementation project(':play-services-vision-core')
 49      implementation project(':play-services-wearable-core')
 50  
 51      implementation project(':play-services-core-proto')
 52  
 53      implementation project(':play-services-core:microg-ui-tools') // deprecated
 54      implementation project(':play-services-base-core-package')
 55      implementation project(':play-services-api')
 56  
 57      implementation project(':play-services-appinvite')
 58      implementation project(':play-services-auth-base')
 59      implementation project(':play-services-auth')
 60      implementation project(':play-services-clearcut')
 61      implementation project(':play-services-drive')
 62      implementation project(':play-services-games')
 63      implementation project(':play-services-maps')
 64      implementation project(':play-services-measurement-base')
 65      implementation project(':play-services-places')
 66      implementation project(':play-services-recaptcha')
 67      implementation project(':play-services-safetynet')
 68      implementation project(':play-services-tasks-ktx')
 69      implementation project(':play-services-fitness')
 70  
 71      mapboxRuntimeOnly project(':play-services-maps-core-mapbox')
 72      vtmRuntimeOnly project(':play-services-maps-core-vtm')
 73      defaultRuntimeOnly project(':play-services-location-core-provider')
 74  
 75      if (hasModule("nearby", true)) runtimeOnly project(':play-services-nearby-core-package')
 76      if (hasModule("hms", false)) hmsRuntimeOnly project(':play-services-maps-core-hms')
 77  
 78      // AndroidX UI
 79      implementation "androidx.multidex:multidex:$multidexVersion"
 80      implementation "androidx.appcompat:appcompat:$appcompatVersion"
 81      implementation "androidx.mediarouter:mediarouter:$mediarouterVersion"
 82      implementation "androidx.preference:preference-ktx:$preferenceVersion"
 83      implementation "androidx.webkit:webkit:$webkitVersion"
 84  
 85      // Material Components
 86      implementation "com.google.android.material:material:$materialVersion"
 87  
 88      // Compose
 89      def composeBom = platform('androidx.compose:compose-bom:2024.04.00')
 90      implementation composeBom
 91      implementation 'androidx.compose.material3:material3'
 92      implementation 'androidx.compose.ui:ui-tooling-preview'
 93      debugImplementation 'androidx.compose.ui:ui-tooling'
 94      implementation 'androidx.activity:activity-compose:1.8.2'
 95  
 96      // Navigation
 97      implementation "androidx.navigation:navigation-fragment-ktx:$navigationVersion"
 98      implementation "androidx.navigation:navigation-ui-ktx:$navigationVersion"
 99  
100      implementation "com.android.volley:volley:$volleyVersion"
101  
102      implementation "androidx.lifecycle:lifecycle-service:$lifecycleVersion"
103      implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlinVersion"
104  }
105  
106  android {
107      namespace "com.google.android.gms"
108  
109      compileSdkVersion androidCompileSdk
110      buildToolsVersion "$androidBuildVersionTools"
111  
112      buildFeatures {
113          buildConfig = true
114          dataBinding = true
115          compose true
116      }
117  
118      defaultConfig {
119          versionName version
120          versionCode appVersionCode
121  
122          minSdkVersion androidMinSdk
123          targetSdkVersion androidTargetSdk
124  
125          multiDexEnabled true
126          multiDexKeepProguard file('multidex-keep.pro')
127  
128          manifestPlaceholders = [appLabel:"@string/gms_app_name"]
129          resValue "string", "package_id", "com.google.android.gms"
130  
131          buildConfigField "String", "SAFETYNET_KEY", "\"${localProperties.get("safetynet.key", "")}\""
132          buildConfigField "String", "RECAPTCHA_SITE_KEY", "\"${localProperties.get("recaptcha.siteKey", "")}\""
133          buildConfigField "String", "RECAPTCHA_SECRET", "\"${localProperties.get("recaptcha.secret", "")}\""
134          buildConfigField "String", "RECAPTCHA_ENTERPRISE_PROJECT_ID", "\"${localProperties.get("recaptchaEnterpreise.projectId", "")}\""
135          buildConfigField "String", "RECAPTCHA_ENTERPRISE_SITE_KEY", "\"${localProperties.get("recaptchaEnterpreise.siteKey", "")}\""
136          buildConfigField "String", "RECAPTCHA_ENTERPRISE_API_KEY", "\"${localProperties.get("recaptchaEnterpreise.apiKey", "")}\""
137  
138          ndk {
139              abiFilters "armeabi-v7a", "arm64-v8a", "x86", "x86_64"
140          }
141      }
142  
143      composeOptions {
144          kotlinCompilerExtensionVersion = "1.5.10"
145      }
146  
147      sourceSets {
148          main {
149              java.srcDirs += 'src/main/kotlin'
150          }
151      }
152  
153      lintOptions {
154          disable 'MissingTranslation', 'GetLocales', 'InvalidPackage', 'BatteryLife', 'ImpliedQuantity', 'MissingQuantity', 'InvalidWakeLockTag', 'UniquePermission'
155      }
156  
157      buildTypes {
158          release {
159              minifyEnabled false
160              proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
161          }
162      }
163  
164      flavorDimensions = ['maps', 'target']
165      productFlavors {
166          "default" {
167              dimension 'target'
168          }
169          "huawei" {
170              dimension 'target'
171              versionNameSuffix "-hw"
172          }
173          "huaweilh" {
174              dimension 'target'
175              versionNameSuffix "-lh"
176              versionCode appVersionCode - 1000
177              matchingFallbacks = ['huawei']
178          }
179          "user" {
180              dimension 'target'
181              applicationId = "org.microg.gms"
182              versionNameSuffix "-user"
183              manifestPlaceholders = [appLabel:"@string/limited_services_app_name"]
184              matchingFallbacks = ['default']
185              resValue "string", "package_id", "org.microg.gms"
186          }
187          "hms" {
188              dimension 'maps'
189          }
190          "mapbox" {
191              dimension 'maps'
192          }
193          "vtm" {
194              dimension 'maps'
195          }
196      }
197  
198      compileOptions {
199          sourceCompatibility JavaVersion.VERSION_1_8
200          targetCompatibility JavaVersion.VERSION_1_8
201      }
202  
203      kotlinOptions {
204          jvmTarget = 1.8
205      }
206  
207      packagingOptions {
208          exclude 'META-INF/ASL2.0'
209          jniLibs {
210              useLegacyPackaging true
211          }
212      }
213  }
214  
215  if (file('user.gradle').exists()) {
216      apply from: 'user.gradle'
217  }
218  
219  android.applicationVariants.all { variant ->
220      variant.outputs.each { output ->
221          output.outputFileName = variant.applicationId + "-" + variant.versionCode + variant.versionName.substring(version.length()) + ".apk"
222      }
223  }