Skip to content

Commit 3a28d47

Browse files
committed
💚 fix gradle tasks
1 parent f02d12d commit 3a28d47

1 file changed

Lines changed: 26 additions & 30 deletions

File tree

build.gradle.kts

Lines changed: 26 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -51,38 +51,34 @@ val shadowTask: ShadowJar = tasks.withType(ShadowJar::class.java) {
5151
minimize()
5252
}.first()
5353

54-
val jarAndroid by tasks.registering {
54+
val jarAndroid by tasks.registering(Exec::class) {
5555
dependsOn(shadowTask)
5656
val inFile = shadowTask.archiveFile.get().asFile
5757
val outFile = inFile.resolveSibling("${shadowTask.archiveBaseName.get()}-Android.jar")
5858
outputs.file(outFile)
59-
doLast {
60-
val sdkRoot = System.getenv("ANDROID_HOME") ?: System.getenv("ANDROID_SDK_ROOT")
61-
if (sdkRoot == null || !File(sdkRoot).exists()) throw GradleException("No valid Android SDK found. Ensure that ANDROID_HOME is set to your Android SDK directory.")
62-
63-
val buildToolsDir = File(sdkRoot, "build-tools")
64-
val d8Tool = buildToolsDir.listFiles()?.sortedDescending()
65-
?.flatMap { dir -> dir.listFiles()?.filter { it.name == "d8" || it.name == "d8.bat" } ?: emptyList() }
66-
?.firstOrNull()
67-
?: throw GradleException("No d8 found. Ensure that you have an Android build-tools installed (>= 28.0.0).")
68-
val platformRoot = File(sdkRoot, "platforms").listFiles()
69-
?.sortedDescending()
70-
?.firstOrNull { File(it, "android.jar").exists() }
71-
?: throw GradleException("No android.jar found. Ensure that you have an Android platform installed.")
72-
73-
val androidJar = File(platformRoot, "android.jar")
74-
val dependencies = (configurations.getByName("compileClasspath") +
75-
configurations.getByName("runtimeClasspath") + files(androidJar)).files
76-
val classpathArgs = dependencies.flatMap { listOf("--classpath", it.absolutePath) }
77-
outFile.parentFile.mkdirs()
78-
79-
// 使用 ProviderFactory.exec (推荐)
80-
project.providers.exec {
81-
commandLine = listOf(d8Tool.absolutePath) + classpathArgs +
82-
listOf("--min-api", "14", "--output", outFile.absolutePath, inFile.absolutePath)
83-
workingDir(inFile.parentFile)
84-
}.result.get().assertNormalExitValue()
85-
}
59+
60+
61+
val sdkRoot = System.getenv("ANDROID_HOME") ?: System.getenv("ANDROID_SDK_ROOT")
62+
if (sdkRoot == null || !File(sdkRoot).exists()) throw GradleException("No valid Android SDK found. Ensure that ANDROID_HOME is set to your Android SDK directory.")
63+
64+
val buildToolsDir = File(sdkRoot, "build-tools")
65+
val d8Tool = buildToolsDir.listFiles()?.sortedDescending()
66+
?.flatMap { dir -> dir.listFiles()?.filter { it.name == "d8" || it.name == "d8.bat" } ?: emptyList() }
67+
?.firstOrNull()
68+
?: throw GradleException("No d8 found. Ensure that you have an Android build-tools installed (>= 28.0.0).")
69+
val platformRoot = File(sdkRoot, "platforms").listFiles()
70+
?.sortedDescending()
71+
?.firstOrNull { File(it, "android.jar").exists() }
72+
?: throw GradleException("No android.jar found. Ensure that you have an Android platform installed.")
73+
val androidJar = File(platformRoot, "android.jar")
74+
val dependencies = (configurations.getByName("compileClasspath") +
75+
configurations.getByName("runtimeClasspath") + files(androidJar)).files
76+
val classpathArgs = dependencies.flatMap { listOf("--classpath", it.absolutePath) }
77+
78+
doFirst { outFile.parentFile.mkdirs() }
79+
commandLine = listOf(d8Tool.absolutePath) + classpathArgs +
80+
listOf("--min-api", "14", "--output", outFile.absolutePath, inFile.absolutePath)
81+
workingDir(inFile.parentFile)
8682
}
8783

8884
tasks.register("devInstall", Copy::class.java) {
@@ -94,8 +90,8 @@ tasks.register("devInstall", Copy::class.java) {
9490
tasks.register("dist", Jar::class.java) {
9591
dependsOn(shadowTask)
9692
dependsOn(jarAndroid)
97-
from(zipTree(shadowTask.archiveFile.get()))
98-
from(zipTree(jarAndroid.map { outputs.files.first() }))
93+
from(shadowTask.archiveFile.map { zipTree(it) })
94+
from(jarAndroid.map { zipTree(it.outputs.files.first()) })
9995
destinationDirectory.set(layout.buildDirectory.dir("dist"))
10096
archiveFileName.set("ContentsTweaker-${rootProject.version}.jar")
10197
}

0 commit comments

Comments
 (0)