plugins { alias(libs.plugins.android.application) alias(libs.plugins.kotlin.android) alias(libs.plugins.kotlin.parcelize) alias(libs.plugins.kotlin.compose) } android { namespace = "com.bitchat.android" compileSdk = libs.versions.compileSdk.get().toInt() defaultConfig { applicationId = "com.bitchat.droid" minSdk = libs.versions.minSdk.get().toInt() targetSdk = libs.versions.targetSdk.get().toInt() versionCode = 26 versionName = "1.5.1" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" vectorDrawables { useSupportLibrary = true } } dependenciesInfo { // Disables dependency metadata when building APKs. includeInApk = false // Disables dependency metadata when building Android App Bundles. includeInBundle = false } buildTypes { debug { ndk { // Include x86_64 for emulator support during development abiFilters += listOf("arm64-v8a", "x86_64") } } release { isMinifyEnabled = true isShrinkResources = true proguardFiles( getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro" ) ndk { // ARM64-only to minimize APK size (~5.8MB savings) // Excludes x86_64 as emulator not needed for production builds abiFilters += listOf("arm64-v8a") } } } compileOptions { sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 } kotlinOptions { jvmTarget = "1.8" } buildFeatures { compose = true } packaging { resources { excludes += "/META-INF/{AL2.0,LGPL2.1}" } } lint { baseline = file("lint-baseline.xml") abortOnError = false checkReleaseBuilds = false } } dependencies { // Core Android dependencies implementation(libs.androidx.core.ktx) implementation(libs.androidx.activity.compose) implementation(libs.androidx.appcompat) // Compose implementation(platform(libs.androidx.compose.bom)) implementation(libs.bundles.compose) // Lifecycle implementation(libs.bundles.lifecycle) // Navigation implementation(libs.androidx.navigation.compose) // Permissions implementation(libs.accompanist.permissions) // Cryptography implementation(libs.bundles.cryptography) // JSON implementation(libs.gson) // Coroutines implementation(libs.kotlinx.coroutines.android) // Bluetooth implementation(libs.nordic.ble) // WebSocket implementation(libs.okhttp) // Arti (Tor in Rust) Android bridge - custom build from latest source // Built with rustls, 16KB page size support, and onio//un service client // Native libraries are in src/tor/jniLibs/ (extracted from arti-custom.aar) // Only included in tor flavor to reduce APK size for standard builds // Note: AAR is kept in libs/ for reference, but libraries loaded from jniLibs/ // Google Play Services Location implementation(libs.gms.location) // Security preferences implementation(libs.androidx.security.crypto) // EXIF orientation handling for images implementation("androidx.exifinterface:exifinterface:1.3.7") // Testing testImplementation(libs.bundles.testing) androidTestImplementation(platform(libs.androidx.compose.bom)) androidTestImplementation(libs.bundles.compose.testing) debugImplementation(libs.androidx.compose.ui.tooling) }