[gradle] Don't use internal API (#1481)

This commit is contained in:
南宫雪珊 2021-12-15 00:03:04 +08:00 committed by GitHub
parent 8c64a8db1a
commit 5b479c09b5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 48 additions and 55 deletions

View File

@ -17,8 +17,6 @@
* Copyright (C) 2021 LSPosed Contributors * 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 com.android.build.gradle.internal.dsl.BuildType
import java.nio.file.Paths import java.nio.file.Paths
import java.time.Instant 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 optimizeReleaseRes = task("optimizeReleaseRes").doLast {
val aapt2 = File( val aapt2 = File(
androidComponents.sdkComponents.sdkDirectory.get().asFile, androidComponents.sdkComponents.sdkDirectory.get().asFile,

View File

@ -17,8 +17,6 @@
* Copyright (C) 2021 LSPosed Contributors * 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.build.gradle.BaseExtension
import com.android.ide.common.signing.KeystoreHelper import com.android.ide.common.signing.KeystoreHelper
import org.apache.commons.codec.binary.Hex import org.apache.commons.codec.binary.Hex
@ -28,6 +26,7 @@ import java.io.ByteArrayOutputStream
import java.io.FileOutputStream import java.io.FileOutputStream
import java.io.PrintStream import java.io.PrintStream
import java.security.MessageDigest import java.security.MessageDigest
import java.util.*
import java.util.jar.JarFile import java.util.jar.JarFile
import java.util.zip.ZipOutputStream import java.util.zip.ZipOutputStream
@ -188,16 +187,13 @@ val zipAll = task("zipAll", Task::class) {
} }
androidComponents.onVariants { v -> fun afterEval() = android.applicationVariants.forEach { variant ->
val variant: ApplicationVariantImpl = val variantCapped = variant.name.capitalize(Locale.ROOT)
if (v is ApplicationVariantImpl) v val variantLowered = variant.name.toLowerCase(Locale.ROOT)
else (v as AnalyticsEnabledApplicationVariant).delegate as ApplicationVariantImpl val buildTypeCapped = variant.buildType.name.capitalize(Locale.ROOT)
val variantCapped = variant.name.capitalize() val buildTypeLowered = variant.buildType.name.toLowerCase(Locale.ROOT)
val variantLowered = variant.name.toLowerCase() val flavorCapped = variant.flavorName!!.capitalize(Locale.ROOT)
val buildTypeCapped = variant.buildType!!.capitalize() val flavorLowered = variant.flavorName!!.toLowerCase(Locale.ROOT)
val buildTypeLowered = variant.buildType!!.toLowerCase()
val flavorCapped = variant.flavorName!!.capitalize()
val flavorLowered = variant.flavorName!!.toLowerCase()
val magiskDir = "$buildDir/magisk/$variantLowered" val magiskDir = "$buildDir/magisk/$variantLowered"
@ -210,7 +206,14 @@ androidComponents.onVariants { v ->
"intermediates/compile_and_runtime_not_namespaced_r_class_jar/${buildTypeLowered}/R.jar" "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()) { for (entry in rFile.entries()) {
if (entry.name.startsWith("org/lsposed/manager")) { if (entry.name.startsWith("org/lsposed/manager")) {
it.putNextEntry(entry) it.putNextEntry(entry)
@ -222,36 +225,34 @@ androidComponents.onVariants { v ->
} }
} }
afterEvaluate { val app = rootProject.project(":app").extensions.getByName<BaseExtension>("android")
val app = rootProject.project(":app").extensions.getByName<BaseExtension>("android") val outSrcDir = file("$buildDir/generated/source/signInfo/${variantLowered}")
val outSrcDir = file("$buildDir/generated/source/signInfo/${variantLowered}") val outSrc = file("$outSrcDir/org/lsposed/lspd/util/SignInfo.java")
val outSrc = file("$outSrcDir/org/lsposed/lspd/util/SignInfo.java") val signInfoTask = tasks.register("generate${variantCapped}SignInfo") {
val signInfoTask = tasks.register("generate${variantCapped}SignInfo") { dependsOn(":app:validateSigning${buildTypeCapped}")
dependsOn(":app:validateSigning${buildTypeCapped}") outputs.file(outSrc)
outputs.file(outSrc) doLast {
doLast { val sign = app.buildTypes.named(buildTypeLowered).get().signingConfig
val sign = app.buildTypes.named(buildTypeLowered).get().signingConfig outSrc.parentFile.mkdirs()
outSrc.parentFile.mkdirs() val certificateInfo = KeystoreHelper.getCertificateInfo(
val certificateInfo = KeystoreHelper.getCertificateInfo( sign?.storeType,
sign?.storeType, sign?.storeFile,
sign?.storeFile, sign?.storePassword,
sign?.storePassword, sign?.keyPassword,
sign?.keyPassword, sign?.keyAlias
sign?.keyAlias )
) PrintStream(outSrc).apply {
PrintStream(outSrc).apply { println("package org.lsposed.lspd.util;")
println("package org.lsposed.lspd.util;") println("public final class SignInfo {")
println("public final class SignInfo {") print("public static final byte[] CERTIFICATE = {")
print("public static final byte[] CERTIFICATE = {") val bytes = certificateInfo.certificate.encoded
val bytes = certificateInfo.certificate.encoded print(bytes.joinToString(",") { it.toString() })
print(bytes.joinToString(",") { it.toString() }) println("};")
println("};") println("}")
println("}")
}
} }
} }
variant.variantData.registerJavaGeneratingTask(signInfoTask, arrayListOf(outSrcDir))
} }
variant.registerJavaGeneratingTask(signInfoTask, arrayListOf(outSrcDir))
val moduleId = "${flavorLowered}_$moduleBaseId" val moduleId = "${flavorLowered}_$moduleBaseId"
val zipFileName = "$moduleName-v$verName-$verCode-${flavorLowered}-$buildTypeLowered.zip" 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 adb: String = androidComponents.sdkComponents.adb.get().asFile.absolutePath
val killLspd = task("killLspd", Exec::class) { val killLspd = task("killLspd", Exec::class) {
commandLine(adb, "shell", "su", "-c", "killall", "lspd") commandLine(adb, "shell", "su", "-c", "killall", "lspd")
@ -389,13 +394,13 @@ val tmpApk = "/data/local/tmp/lsp.apk"
val pushApk = task("pushApk", Exec::class) { val pushApk = task("pushApk", Exec::class) {
dependsOn(":app:assembleDebug") dependsOn(":app:assembleDebug")
workingDir("${project(":app").buildDir}/outputs/apk/debug") 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) { val openApp = task("openApp", Exec::class) {
commandLine( commandLine(
adb, "shell", "am start -a android.intent.action.MAIN " + adb, "shell", "am start -a android.intent.action.MAIN " +
"-c org.lsposed.manager.LAUNCH_MANAGER " + "-c org.lsposed.manager.LAUNCH_MANAGER " +
"com.android.shell/.BugreportWarningActivity" "com.android.shell/.BugreportWarningActivity"
) )
} }
task("reRunApp", Exec::class) { task("reRunApp", Exec::class) {