From 5b479c09b52aa091f3d17b07034e36ca1cf30438 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=8D=97=E5=AE=AB=E9=9B=AA=E7=8F=8A?= Date: Wed, 15 Dec 2021 00:03:04 +0800 Subject: [PATCH] [gradle] Don't use internal API (#1481) --- app/build.gradle.kts | 12 ------ core/build.gradle.kts | 91 +++++++++++++++++++++++-------------------- 2 files changed, 48 insertions(+), 55 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index d116e2af..e18d2e86 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -17,8 +17,6 @@ * Copyright (C) 2021 LSPosed Contributors */ -import com.android.build.api.component.analytics.AnalyticsEnabledApplicationVariant -import com.android.build.api.variant.impl.ApplicationVariantImpl import com.android.build.gradle.internal.dsl.BuildType import java.nio.file.Paths import java.time.Instant @@ -128,16 +126,6 @@ android { } } -androidComponents.onVariants { v -> - val variant: ApplicationVariantImpl = - if (v is ApplicationVariantImpl) v - else (v as AnalyticsEnabledApplicationVariant).delegate as ApplicationVariantImpl - variant.outputs.forEach { - it.outputFileName.set("LSPosedManager-v${verName}-${verCode}-${variant.name}.apk") - } -} - - val optimizeReleaseRes = task("optimizeReleaseRes").doLast { val aapt2 = File( androidComponents.sdkComponents.sdkDirectory.get().asFile, diff --git a/core/build.gradle.kts b/core/build.gradle.kts index e6d7beaa..2105e369 100644 --- a/core/build.gradle.kts +++ b/core/build.gradle.kts @@ -17,8 +17,6 @@ * Copyright (C) 2021 LSPosed Contributors */ -import com.android.build.api.component.analytics.AnalyticsEnabledApplicationVariant -import com.android.build.api.variant.impl.ApplicationVariantImpl import com.android.build.gradle.BaseExtension import com.android.ide.common.signing.KeystoreHelper import org.apache.commons.codec.binary.Hex @@ -28,6 +26,7 @@ import java.io.ByteArrayOutputStream import java.io.FileOutputStream import java.io.PrintStream import java.security.MessageDigest +import java.util.* import java.util.jar.JarFile import java.util.zip.ZipOutputStream @@ -188,16 +187,13 @@ val zipAll = task("zipAll", Task::class) { } -androidComponents.onVariants { v -> - val variant: ApplicationVariantImpl = - if (v is ApplicationVariantImpl) v - else (v as AnalyticsEnabledApplicationVariant).delegate as ApplicationVariantImpl - val variantCapped = variant.name.capitalize() - val variantLowered = variant.name.toLowerCase() - val buildTypeCapped = variant.buildType!!.capitalize() - val buildTypeLowered = variant.buildType!!.toLowerCase() - val flavorCapped = variant.flavorName!!.capitalize() - val flavorLowered = variant.flavorName!!.toLowerCase() +fun afterEval() = android.applicationVariants.forEach { variant -> + val variantCapped = variant.name.capitalize(Locale.ROOT) + val variantLowered = variant.name.toLowerCase(Locale.ROOT) + val buildTypeCapped = variant.buildType.name.capitalize(Locale.ROOT) + val buildTypeLowered = variant.buildType.name.toLowerCase(Locale.ROOT) + val flavorCapped = variant.flavorName!!.capitalize(Locale.ROOT) + val flavorLowered = variant.flavorName!!.toLowerCase(Locale.ROOT) val magiskDir = "$buildDir/magisk/$variantLowered" @@ -210,7 +206,14 @@ androidComponents.onVariants { v -> "intermediates/compile_and_runtime_not_namespaced_r_class_jar/${buildTypeLowered}/R.jar" ) ) - ZipOutputStream(FileOutputStream(File(project.buildDir, "tmp/${variantCapped}R.jar"))).use { + ZipOutputStream( + FileOutputStream( + File( + project.buildDir, + "tmp/${variantCapped}R.jar" + ) + ) + ).use { for (entry in rFile.entries()) { if (entry.name.startsWith("org/lsposed/manager")) { it.putNextEntry(entry) @@ -222,36 +225,34 @@ androidComponents.onVariants { v -> } } - afterEvaluate { - val app = rootProject.project(":app").extensions.getByName("android") - val outSrcDir = file("$buildDir/generated/source/signInfo/${variantLowered}") - val outSrc = file("$outSrcDir/org/lsposed/lspd/util/SignInfo.java") - val signInfoTask = tasks.register("generate${variantCapped}SignInfo") { - dependsOn(":app:validateSigning${buildTypeCapped}") - outputs.file(outSrc) - doLast { - val sign = app.buildTypes.named(buildTypeLowered).get().signingConfig - outSrc.parentFile.mkdirs() - val certificateInfo = KeystoreHelper.getCertificateInfo( - sign?.storeType, - sign?.storeFile, - sign?.storePassword, - sign?.keyPassword, - sign?.keyAlias - ) - PrintStream(outSrc).apply { - println("package org.lsposed.lspd.util;") - println("public final class SignInfo {") - print("public static final byte[] CERTIFICATE = {") - val bytes = certificateInfo.certificate.encoded - print(bytes.joinToString(",") { it.toString() }) - println("};") - println("}") - } + val app = rootProject.project(":app").extensions.getByName("android") + val outSrcDir = file("$buildDir/generated/source/signInfo/${variantLowered}") + val outSrc = file("$outSrcDir/org/lsposed/lspd/util/SignInfo.java") + val signInfoTask = tasks.register("generate${variantCapped}SignInfo") { + dependsOn(":app:validateSigning${buildTypeCapped}") + outputs.file(outSrc) + doLast { + val sign = app.buildTypes.named(buildTypeLowered).get().signingConfig + outSrc.parentFile.mkdirs() + val certificateInfo = KeystoreHelper.getCertificateInfo( + sign?.storeType, + sign?.storeFile, + sign?.storePassword, + sign?.keyPassword, + sign?.keyAlias + ) + PrintStream(outSrc).apply { + println("package org.lsposed.lspd.util;") + println("public final class SignInfo {") + print("public static final byte[] CERTIFICATE = {") + val bytes = certificateInfo.certificate.encoded + print(bytes.joinToString(",") { it.toString() }) + println("};") + println("}") } } - variant.variantData.registerJavaGeneratingTask(signInfoTask, arrayListOf(outSrcDir)) } + variant.registerJavaGeneratingTask(signInfoTask, arrayListOf(outSrcDir)) val moduleId = "${flavorLowered}_$moduleBaseId" val zipFileName = "$moduleName-v$verName-$verCode-${flavorLowered}-$buildTypeLowered.zip" @@ -354,6 +355,10 @@ androidComponents.onVariants { v -> } } +afterEvaluate { + afterEval() +} + val adb: String = androidComponents.sdkComponents.adb.get().asFile.absolutePath val killLspd = task("killLspd", Exec::class) { commandLine(adb, "shell", "su", "-c", "killall", "lspd") @@ -389,13 +394,13 @@ val tmpApk = "/data/local/tmp/lsp.apk" val pushApk = task("pushApk", Exec::class) { dependsOn(":app:assembleDebug") workingDir("${project(":app").buildDir}/outputs/apk/debug") - commandLine(adb, "push", "LSPosedManager-v$verName-$verCode-debug.apk", tmpApk) + commandLine(adb, "push", "app-debug.apk", tmpApk) } val openApp = task("openApp", Exec::class) { commandLine( adb, "shell", "am start -a android.intent.action.MAIN " + - "-c org.lsposed.manager.LAUNCH_MANAGER " + - "com.android.shell/.BugreportWarningActivity" + "-c org.lsposed.manager.LAUNCH_MANAGER " + + "com.android.shell/.BugreportWarningActivity" ) } task("reRunApp", Exec::class) {