Files
f7cloud_mobile/app/build.gradle
T
b-dev-mobile b56c9a5998 build: release на боевом ключе владельца, версия 0.5.118 (126)
Первая release-сборка подписана ключом владельца (не debug) — убирает
предупреждение Play Защиты. + иконки нижней панели 24→34dp.
2026-07-08 16:37:41 +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 126
versionName '0.5.118'
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
}