141 lines
6.1 KiB
Groovy
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 127
|
|
versionName '0.5.119'
|
|
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
|
|
}
|