plugins { id 'com.android.application' id 'org.jetbrains.kotlin.android' id 'org.jetbrains.kotlin.plugin.compose' } def googleServicesFile = file('google-services.json') if (googleServicesFile.exists()) { apply plugin: 'com.google.gms.google-services' } // Release-подпись читается из окружения/gradle-properties (боевой keystore вне git, // в CI — из secrets). Переменные: F7_KEYSTORE_FILE, F7_KEYSTORE_PASSWORD, // F7_KEY_ALIAS, F7_KEY_PASSWORD (можно и как -P… gradle-property). Если не заданы — // release подписывается debug-ключом (локальная сборка/QA работает без keystore). def f7KeystoreFile = System.getenv('F7_KEYSTORE_FILE') ?: project.findProperty('F7_KEYSTORE_FILE') def f7HasReleaseSigning = f7KeystoreFile != null && file(f7KeystoreFile).exists() android { namespace 'ru.forbion.f7cloud.mobile' compileSdk 36 signingConfigs { if (f7HasReleaseSigning) { release { storeFile file(f7KeystoreFile) storePassword System.getenv('F7_KEYSTORE_PASSWORD') ?: project.findProperty('F7_KEYSTORE_PASSWORD') keyAlias System.getenv('F7_KEY_ALIAS') ?: project.findProperty('F7_KEY_ALIAS') keyPassword System.getenv('F7_KEY_PASSWORD') ?: project.findProperty('F7_KEY_PASSWORD') // v2 обязателен (minSdk 26); v3 — под будущую ротацию ключа. v1 не нужен (minSdk>=24). enableV1Signing false enableV2Signing true enableV3Signing true } } } defaultConfig { applicationId 'ru.forbion.f7cloud.mobile' minSdk 26 targetSdk 36 versionCode 133 versionName '0.5.125' missingDimensionStrategy 'default', 'f7' multiDexEnabled true // ABI задаём ПОБИЛДТИПОВО (ниже): release — ARM-only (компактно), debug — все ABI // (включая x86/x86_64), чтобы debug-сборка нативно шла на эмуляторах (BlueStacks и т.п.) // и на физических устройствах. // Оставляем только нужные локали (у vendor-форка ~48 языков) — минус несколько МБ. // resourceConfigurations — не-deprecated бэкинг resConfigs. resourceConfigurations += ['ru', 'en'] // Дефолтный адрес сервера на экране входа. Прод-URL в сборку не вшивать // (решение integrator-b, f7_platform mail/035): для дев-сборки под свой // стенд задать -Pf7DefaultServerUrl=https://... или f7DefaultServerUrl в // ~/.gradle/gradle.properties. Без свойства поле входа пустое. buildConfigField 'String', 'DEFAULT_SERVER_URL', "\"${project.findProperty('f7DefaultServerUrl') ?: ''}\"" } buildTypes { debug { // Все ABI — чтобы debug нативно работал на x86-эмуляторах (BlueStacks) И на ARM-девайсах. ndk { abiFilters 'arm64-v8a', 'armeabi-v7a', 'x86', 'x86_64' } } release { minifyEnabled true shrinkResources true proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' // прод — только ARM (реальные устройства), компактно ndk { abiFilters 'arm64-v8a', 'armeabi-v7a' } // боевой keystore — если задан env/-P; иначе debug-ключ (не для распространения) signingConfig f7HasReleaseSigning ? signingConfigs.release : signingConfigs.debug } } buildFeatures { compose true buildConfig true } compileOptions { sourceCompatibility JavaVersion.VERSION_17 targetCompatibility JavaVersion.VERSION_17 } kotlinOptions { jvmTarget = '17' } applicationVariants.configureEach { variant -> variant.outputs.configureEach { output -> def vName = variant.versionName ?: "0.0.0" def vCode = variant.versionCode ?: 0 output.outputFileName = "f7cloud-mobile-v${vName}-${vCode}-${variant.name}.apk" } } } dependencies { implementation project(':core:auth') implementation project(':core:network') implementation project(':core:push') implementation project(':core:designsystem') implementation project(':feature:files') implementation project(':feature:talk') implementation project(':feature:talk-native') implementation project(':feature:calendar') implementation project(':feature:contacts') implementation project(':feature:tasks') implementation project(':feature:deck') implementation project(':feature:mail') implementation project(':feature:f7support') def composeBom = platform(libs.compose.bom) implementation composeBom androidTestImplementation composeBom implementation libs.activity.compose implementation libs.compose.ui implementation libs.compose.ui.tooling.preview implementation libs.compose.material3 implementation libs.navigation.compose implementation libs.lifecycle.viewmodel.compose implementation libs.lifecycle.runtime.compose implementation libs.lifecycle.process implementation libs.coil.compose implementation libs.coil.svg implementation platform(libs.firebase.bom) implementation libs.firebase.messaging implementation libs.coroutines.play.services implementation libs.multidex implementation libs.core.splashscreen implementation libs.biometric implementation libs.fragment.ktx implementation libs.camera.camera2 implementation libs.camera.lifecycle implementation libs.camera.view implementation libs.zxing implementation libs.compose.material.icons.extended implementation libs.guava debugImplementation libs.compose.ui.tooling }