1plugins {
2 alias(libs.plugins.android.application)
3 alias(libs.plugins.kotlin.android)
4 alias(libs.plugins.kotlin.compose)
5 alias(libs.plugins.kotlin.serialization)
6}
7
8android {
9 namespace = "com.sophax.sophaxchat"
10 compileSdk = 35
11
12 defaultConfig {
13 applicationId = "com.sophax.sophaxchat"
14 minSdk = 26
15 targetSdk = 35
16 versionCode = 1
17 versionName = "1.0"
18 }
19
20 signingConfigs {
21 create("release") {
22 // Hodnoty načti z prostředí (CI) nebo lokálního local.properties — nikdy ne z kódu
23 val keystorePath = System.getenv("KEYSTORE_PATH") ?: rootProject.file("keystore.jks").absolutePath
24 val keystorePass = System.getenv("KEYSTORE_PASSWORD") ?: ""
25 val keyAlias = System.getenv("KEY_ALIAS") ?: "sophaxchat"
26 val keyPass = System.getenv("KEY_PASSWORD") ?: ""
27 if (File(keystorePath).exists() && keystorePass.isNotEmpty()) {
28 storeFile = File(keystorePath)
29 storePassword = keystorePass
30 this.keyAlias = keyAlias
31 keyPassword = keyPass
32 }
33 }
34 }
35
36 buildTypes {
37 release {
38 signingConfig = signingConfigs.getByName("release")
39 isMinifyEnabled = true
40 proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro")
41 }
42 }
43
44 compileOptions {
45 sourceCompatibility = JavaVersion.VERSION_11
46 targetCompatibility = JavaVersion.VERSION_11
47 }
48
49 kotlinOptions {
50 jvmTarget = "11"
51 }
52
53 buildFeatures {
54 compose = true
55 }
56
57 packaging {
58 resources {
59 excludes += "/META-INF/{AL2.0,LGPL2.1}"
60 excludes += "META-INF/versions/9/OSGI-INF/MANIFEST.MF"
61 }
62 }
63}
64
65dependencies {
66 // Core
67 implementation(libs.androidx.core.ktx)
68 implementation(libs.androidx.lifecycle.runtime.ktx)
69 implementation(libs.androidx.lifecycle.process)
70 implementation(libs.androidx.lifecycle.viewmodel.compose)
71 implementation(libs.androidx.activity.compose)
72
73 // Compose
74 implementation(platform(libs.androidx.compose.bom))
75 implementation(libs.androidx.ui)
76 implementation(libs.androidx.ui.graphics)
77 implementation(libs.androidx.ui.tooling.preview)
78 implementation(libs.androidx.material3)
79 implementation(libs.androidx.navigation.compose)
80 implementation(libs.androidx.compose.foundation)
81
82 // Crypto
83 implementation(libs.bouncycastle)
84 implementation(libs.tink.android)
85 implementation(libs.androidx.security.crypto)
86
87 // Serialization + Coroutines
88 implementation(libs.kotlinx.serialization.json)
89 implementation(libs.kotlinx.coroutines.android)
90
91 // Nearby Connections (local P2P mesh)
92 implementation(libs.play.services.nearby)
93
94 // Biometric authentication (App Lock)
95 implementation(libs.androidx.biometric)
96
97 // QR code generation
98 implementation(libs.zxing.core)
99
100 // Embedded Tor (Guardian Project — no Orbot required)
101 implementation(libs.tor.android)
102
103 // WorkManager — periodic watchdog to revive foreground service on aggressive OEM ROMs
104 implementation(libs.androidx.work.runtime.ktx)
105
106 debugImplementation(libs.androidx.ui.tooling)
107}