From 7af763f4b137abffc868bdf6b285e60a9b4d84b8 Mon Sep 17 00:00:00 2001 From: oSumAtrIX Date: Mon, 15 Jul 2024 00:37:37 +0200 Subject: [PATCH] build(Needs bump): Sign APK properly without relying on internal Gradle classes --- app/build.gradle.kts | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 69489b44..42f157ea 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -2,6 +2,7 @@ plugins { alias(libs.plugins.android.application) alias(libs.plugins.kotlin) publishing + signing } android { @@ -53,28 +54,27 @@ dependencies { compileOnly(project(":stub")) } -tasks { - // Because the signing plugin doesn't support signing APKs, do it manually. - register("sign") { - group = "signing" - dependsOn(build) +tasks { + val assembleReleaseSignApk by registering { + dependsOn("assembleRelease") + + val apk = layout.buildDirectory.file("outputs/apk/release/${rootProject.name}-$version.apk") + + inputs.file(apk).withPropertyName("input") + outputs.file(apk.map { it.asFile.resolveSibling("${it.asFile.name}.asc") }) doLast { - val outputDirectory = layout.buildDirectory.dir("outputs/apk/release").get().asFile - val integrationsApk = outputDirectory.resolve("${rootProject.name}-$version.apk") - - org.gradle.security.internal.gnupg.GnupgSignatoryFactory().createSignatory(project).sign( - integrationsApk.inputStream(), - outputDirectory.resolve("${integrationsApk.name}.asc").outputStream(), - ) + signing { + useGpgCmd() + sign(*inputs.files.files.toTypedArray()) + } } } // Needed by gradle-semantic-release-plugin. - // Tracking: https://github.com/KengoTODA/gradle-semantic-release-plugin/issues/435 + // Tracking: https://github.com/KengoTODA/gradle-semantic-release-plugin/issues/435. publish { - dependsOn(build) - dependsOn("sign") + dependsOn(assembleReleaseSignApk) } }