Files
f7cloud_mobile/app/build.gradle
T
b-dev-mobile 3824ad86f2 build: версия 0.5.116(124) → 0.5.117(125) под ревью-сборку
Накоплено: нижняя навигац.панель + кнопки создания, меню (пол-экрана/
3 колонки/состав по дизайну), нативная панель профиля, нижний inset,
фикс ширины писем.
2026-07-08 15:39:25 +00:00

141 lines
6.1 KiB
Groovy

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 125
versionName '0.5.117'
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.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
}