plugins { id("com.android.application") id("org.jetbrains.kotlin.android") } android { namespace = "com.v2ray.ang" compileSdk = 34 defaultConfig { applicationId = "com.v2ray.ang" minSdk = 21 targetSdk = 35 versionCode = 605 versionName = "1.9.11" multiDexEnabled = true splits { abi { isEnable = true include( "arm64-v8a", "armeabi-v7a", "x86_64", "x86" ) isUniversalApk = true } } } compileOptions { sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 } buildTypes { release { isMinifyEnabled = false } debug { isMinifyEnabled = false } } sourceSets { getByName("main") { jniLibs.srcDirs("libs") } } kotlinOptions { jvmTarget = JavaVersion.VERSION_1_8.toString() } applicationVariants.all { val variant = this val versionCodes = mapOf("armeabi-v7a" to 4, "arm64-v8a" to 4, "x86" to 4, "x86_64" to 4, "universal" to 4) variant.outputs .map { it as com.android.build.gradle.internal.api.ApkVariantOutputImpl } .forEach { output -> val abi = if (output.getFilter("ABI") != null) output.getFilter("ABI") else "universal" output.outputFileName = "v2rayNG_${variant.versionName}_${abi}.apk" if (versionCodes.containsKey(abi)) { output.versionCodeOverride = (1000000 * versionCodes[abi]!!).plus(variant.versionCode) } else { return@forEach } } } buildFeatures { viewBinding = true buildConfig = true } packaging { jniLibs { useLegacyPackaging = true } } } dependencies { implementation(fileTree(mapOf("dir" to "libs", "include" to listOf("*.aar", "*.jar")))) testImplementation(libs.junit) testImplementation(libs.org.mockito.mockito.inline) testImplementation(libs.mockito.kotlin) implementation(libs.flexbox) // Androidx implementation(libs.constraintlayout) implementation(libs.legacy.support.v4) implementation(libs.appcompat) implementation(libs.material) implementation(libs.cardview) implementation(libs.preference.ktx) implementation(libs.recyclerview) implementation(libs.fragment.ktx) implementation(libs.multidex) implementation(libs.viewpager2) // Androidx ktx implementation(libs.activity.ktx) implementation(libs.lifecycle.viewmodel.ktx) implementation(libs.lifecycle.livedata.ktx) implementation(libs.lifecycle.runtime.ktx) //kotlin implementation(libs.kotlin.reflect) implementation(libs.kotlinx.coroutines.core) implementation(libs.kotlinx.coroutines.android) implementation(libs.mmkv.static) implementation(libs.gson) implementation(libs.rxjava) implementation(libs.rxandroid) implementation(libs.rxpermissions) implementation(libs.toastcompat) implementation(libs.editorkit) implementation(libs.language.base) implementation(libs.language.json) implementation(libs.quickie.bundled) implementation(libs.core) implementation(libs.work.runtime.ktx) implementation(libs.work.multiprocess) }