From c1cebe578b2e25d56e6f8766083977ac5effc297 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=A1=A0=E1=A0=B5=E1=A1=A0=E1=A1=B3=20=E1=A1=A0=E1=A0=B5?= =?UTF-8?q?=E1=A1=A0=20=E1=A0=AE=E1=A0=A0=E1=A0=A8=E1=A1=A9=E1=A0=8B?= =?UTF-8?q?=E1=A0=A0=E1=A0=A8?= <125150101+UjuiUjuMandan@users.noreply.github.com> Date: Sat, 21 Dec 2024 11:18:41 +0800 Subject: [PATCH] fdroid flavor and split abi (#4162) --- V2rayNG/app/build.gradle.kts | 74 +++++++++++++++++++++++++++--------- 1 file changed, 57 insertions(+), 17 deletions(-) diff --git a/V2rayNG/app/build.gradle.kts b/V2rayNG/app/build.gradle.kts index 4c4b041c..fa2ba442 100644 --- a/V2rayNG/app/build.gradle.kts +++ b/V2rayNG/app/build.gradle.kts @@ -29,6 +29,13 @@ android { } } + val abiFilterList = (properties["ABI_FILTERS"] as? String)?.split(';') + if (abiFilterList != null) { + ndk { + abiFilters.addAll(abiFilterList) + } + } + testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" } @@ -42,6 +49,19 @@ android { } } + flavorDimensions.add("distribution") + productFlavors { + create("fdroid") { + dimension = "distribution" + versionNameSuffix = "-fdroid" + buildConfigField("String", "DISTRIBUTION", "\"F-Droid\"") + } + create("playstore") { + dimension = "distribution" + buildConfigField("String", "DISTRIBUTION", "\"Play Store\"") + } + } + sourceSets { getByName("main") { jniLibs.srcDirs("libs") @@ -60,25 +80,45 @@ android { 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) + val isFdroid = variant.productFlavors.any { it.name == "fdroid" } + if (isFdroid) { + val versionCodes = + mapOf("armeabi-v7a" to 2, "arm64-v8a" to 1, "x86" to 4, "x86_64" to 3, "universal" to 0 + ) - 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 + variant.outputs + .map { it as com.android.build.gradle.internal.api.ApkVariantOutputImpl } + .forEach { output -> + val abi = output.getFilter("ABI") ?: "universal" + output.outputFileName = "v2rayNG_${variant.versionName}_${abi}.apk" + if (versionCodes.containsKey(abi)) { + output.versionCodeOverride = + (100 * variant.versionCode + versionCodes[abi]!!).plus(5000000) + } else { + return@forEach + } } - } + } else { + 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 {