diff --git a/buildSrc/src/main/java/com/github/kr328/clash/tools/BuildConfig.kt b/buildSrc/src/main/java/com/github/kr328/clash/tools/BuildConfig.kt index 24acc5de6ef27c06db943e67db2e7361afac2644..020cd442befa7b34ff192e851a3d617784dcda8a 100644 --- a/buildSrc/src/main/java/com/github/kr328/clash/tools/BuildConfig.kt +++ b/buildSrc/src/main/java/com/github/kr328/clash/tools/BuildConfig.kt @@ -11,14 +11,12 @@ data class BuildConfig( val minSdkVersion: Int, ) : Serializable { companion object { - fun of(extension: BaseExtension, variant: BaseVariant): BuildConfig { + fun of(abis: List<NativeAbi>, minSdkVersion: Int, variant: BaseVariant): BuildConfig { return BuildConfig( debug = variant.buildType.isDebuggable, premium = variant.flavorName == "premium", - abis = extension.defaultConfig.externalNativeBuild.cmake.abiFilters - .map { NativeAbi.parse(it) } - .distinct(), - minSdkVersion = extension.defaultConfig.minSdkVersion!!.apiLevel + abis = abis, + minSdkVersion = minSdkVersion ) } } diff --git a/buildSrc/src/main/java/com/github/kr328/clash/tools/ClashBuildPlugin.kt b/buildSrc/src/main/java/com/github/kr328/clash/tools/ClashBuildPlugin.kt index 436d381c1846cacf7883ce9f52d70b82f3337c2e..2bc69df97fc9168565593c6df20bd18d3ddd36fd 100644 --- a/buildSrc/src/main/java/com/github/kr328/clash/tools/ClashBuildPlugin.kt +++ b/buildSrc/src/main/java/com/github/kr328/clash/tools/ClashBuildPlugin.kt @@ -11,8 +11,19 @@ class ClashBuildPlugin : Plugin<Project> { override fun apply(target: Project) { target.afterEvaluate { target.extensions.getByType(LibraryExtension::class.java).apply { + val abis = defaultConfig.externalNativeBuild.cmake.abiFilters + .map { NativeAbi.parse(it) } + .distinct() + val minSdkVersion = defaultConfig.minSdkVersion!!.apiLevel + + target.tasks.register("cleanGolang", ClashCleanTask::class.java) { + it.applyFrom(target, abis) + + target.tasks.getByName("clean").dependsOn(it) + } + libraryVariants.forEach { variant -> - val config = BuildConfig.of(this, variant) + val config = BuildConfig.of(abis, minSdkVersion, variant) val buildDir = target.golangBuild.resolve(variant.name) val capitalize = variant.name.capitalize(Locale.getDefault()) diff --git a/buildSrc/src/main/java/com/github/kr328/clash/tools/ClashCleanTask.kt b/buildSrc/src/main/java/com/github/kr328/clash/tools/ClashCleanTask.kt new file mode 100644 index 0000000000000000000000000000000000000000..e4451bedcb5fc75cc041b7fb2321b1ef7b527e47 --- /dev/null +++ b/buildSrc/src/main/java/com/github/kr328/clash/tools/ClashCleanTask.kt @@ -0,0 +1,17 @@ +package com.github.kr328.clash.tools + +import org.gradle.api.Project +import org.gradle.api.tasks.Delete +import golangSource + +abstract class ClashCleanTask : Delete() { + fun applyFrom(project: Project, abis: List<NativeAbi>) { + val bridge = project.golangSource.resolve("tun2socket/bridge") + + delete(bridge.resolve("build")) + + abis.forEach { + delete(bridge.resolve("build_android_${it.goArch}.go")) + } + } +} \ No newline at end of file