From 94e802af88b7b2772cd2c1a6c5f25b5013b3a822 Mon Sep 17 00:00:00 2001 From: alperozturk96 Date: Fri, 30 Oct 2026 13:40:29 +0300 Subject: [PATCH] feat(build): f-droid split apks Signed-off-by: alperozturk96 --- app/build.gradle.kts | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 578e841f2..3155eb552 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -7,6 +7,8 @@ * SPDX-License-Identifier: GPL-3.0-or-later */ +import com.android.build.api.variant.FilterConfiguration + plugins { id("com.android.application") } @@ -17,6 +19,15 @@ val androidCommonsVersion = rootProject.extra["androidCommonsVersion"] as String val nextcloudAndroidCommonLib = rootProject.extra["nextcloudAndroidCommonLib"] as String val singleSignOnVersion = rootProject.extra["singleSignOnVersion"] as String +val abiSplit = project.hasProperty("abiSplit") +val abiVersionCodes = mapOf("armeabi-v7a" to 1, "arm64-v8a" to 2, "x86" to 3, "x86_64" to 4) +val majorVersionCodeMultiplier = 10_000_000 +val abiVersionCodeMultiplier = 10 + +fun abiVersionCode(versionCode: Int, abiCode: Int): Int = + versionCode / majorVersionCodeMultiplier * majorVersionCodeMultiplier + + versionCode % majorVersionCodeMultiplier * abiVersionCodeMultiplier + abiCode + android { namespace = "it.niedermann.owncloud.notes" @@ -117,12 +128,31 @@ android { pickFirsts += "MANIFEST.MF" // workaround for duplicated manifest on some dependencies } } + + if (abiSplit) { + splits.abi { + isEnable = true + reset() + include(*abiVersionCodes.keys.toTypedArray()) + isUniversalApk = false + } + } + lintOptions { isAbortOnError = false disable("MissingTranslation") } } +androidComponents.onVariants { variant -> + variant.outputs.forEach { output -> + val abi = output.filters.find { it.filterType == FilterConfiguration.FilterType.ABI }?.identifier + ?: return@forEach + val abiCode = abiVersionCodes.getValue(abi) + output.versionCode.set(abiVersionCode(output.versionCode.get(), abiCode)) + } +} + dependencies { coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:2.1.5")