/* * SPDX-FileCopyrightText: 2013 microG Project Team * SPDX-License-Identifier: Apache-2.0 */ buildscript { ext.cronetVersion = '102.5005.125' ext.wearableVersion = '0.1.1' ext.kotlinVersion = '1.9.22' ext.coroutineVersion = '1.7.3' ext.annotationVersion = '1.7.1' ext.appcompatVersion = '1.6.1' ext.biometricVersion = '1.1.0' ext.coreVersion = '1.12.0' ext.fragmentVersion = '1.6.2' ext.lifecycleVersion = '2.7.0' ext.loaderVersion = '1.1.0' ext.materialVersion = '1.11.0' ext.mediarouterVersion = '1.6.0' ext.multidexVersion = '2.0.1' ext.navigationVersion = '2.7.7' ext.preferenceVersion = '1.2.0' ext.recyclerviewVersion = '1.3.2' ext.webkitVersion = '1.10.0' ext.slf4jVersion = '1.7.36' ext.volleyVersion = '1.2.1' ext.okHttpVersion = '4.12.0' ext.ktorVersion = '2.3.12' ext.wireVersion = '4.9.9' ext.tinkVersion = '1.13.0' ext.androidBuildGradleVersion = '8.2.2' ext.androidBuildVersionTools = '34.0.0' ext.androidMinSdk = 19 ext.androidTargetSdk = 29 ext.androidCompileSdk = 35 ext.localProperties = new Properties() try { var stream = rootProject.file('local.properties').newDataInputStream() ext.localProperties.load(stream) stream.close() } catch (ignored) { // Ignore } ext.hasModule = (String name, boolean enabledByDefault) -> { return ext.localProperties.getProperty("modules." + name, enabledByDefault.toString()).toBoolean() } repositories { mavenCentral() google() } dependencies { classpath "com.android.tools.build:gradle:$androidBuildGradleVersion" classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion" classpath "com.squareup.wire:wire-gradle-plugin:$wireVersion" } } def execResult(... args) { providers.exec { commandLine args }.standardOutput.asText.get() } def ignoreGit = providers.environmentVariable('GRADLE_MICROG_VERSION_WITHOUT_GIT').getOrElse('0') == '1' def gmsVersion = "25.09.32" def gmsVersionCode = Integer.parseInt(gmsVersion.replaceAll('\\.', '')) def vendingVersion = "40.2.26" def vendingVersionCode = Integer.parseInt(vendingVersion.replaceAll('\\.', '')) def gitVersionBase = !ignoreGit ? execResult('git', 'describe', '--tags', '--abbrev=0', '--match=v[0-9]*').trim().substring(1) : "v0.0.0.$gmsVersionCode" def gitCommitCount = !ignoreGit ? Integer.parseInt(execResult('git', 'rev-list', '--count', "v$gitVersionBase..HEAD").trim()) : 0 def gitCommitId = !ignoreGit ? execResult('git', 'show-ref', '--abbrev=7', '--head', 'HEAD').trim().split(' ')[0] : '0000000' def gitDirty = false if (!ignoreGit) { execResult('git', 'status', '--porcelain').lines().each { stat -> def status = stat.substring(0,2) def file = stat.substring(3) if (status == '??') { if (subprojects.any { p -> file.startsWith(p.name + '/') }) { logger.lifecycle('Dirty file: {} (untracked)', file) gitDirty = true } else { logger.info('New file outside module: {} (ignored for dirty check)', file) } } else { logger.lifecycle('Dirty file: {} (changed)', file) gitDirty = true } } } def ourVersionBase = gitVersionBase.substring(0, gitVersionBase.lastIndexOf('.')) def ourVersionMinor = Integer.parseInt(ourVersionBase.substring(ourVersionBase.lastIndexOf('.') + 1)) def ourGmsVersionCode = gmsVersionCode * 1000 + ourVersionMinor * 2 + (gitCommitCount > 0 || gitDirty ? 1 : 0) def ourGmsVersionName = "$ourVersionBase.$gmsVersionCode" + (gitCommitCount > 0 && !gitDirty ? "-$gitCommitCount" : "") + (gitDirty ? "-dirty" : "") + (gitCommitCount > 0 && !gitDirty ? " ($gitCommitId)" : "") def ourVendingVersionCode = 80000000 + vendingVersionCode * 100 + ourVersionMinor * 2 + (gitCommitCount > 0 || gitDirty ? 1 : 0) def ourVendingVersionName = "$ourVersionBase.$vendingVersionCode" + (gitCommitCount > 0 && !gitDirty ? "-$gitCommitCount" : "") + (gitDirty ? "-dirty" : "") + (gitCommitCount > 0 && !gitDirty ? " ($gitCommitId)" : "") logger.lifecycle('Starting build for GMS version {} ({})...', ourGmsVersionName, ourGmsVersionCode) allprojects { apply plugin: 'idea' group = 'org.microg.gms' version = ourGmsVersionName ext.vendingAppVersionName = ourVendingVersionName ext.vendingAppVersionCode = ourVendingVersionCode ext.appVersionCode = ourGmsVersionCode ext.isReleaseVersion = false } subprojects { repositories { mavenCentral() google() if (hasModule("hms", false)) maven {url 'https://developer.huawei.com/repo/'} } }