Skip to content

Commit b4ffd38

Browse files
authored
Merge pull request #179 from bingranl/upload
Refactor the logic of consuming apk built from :wear:watchface
2 parents cd926a7 + 9375113 commit b4ffd38

File tree

1 file changed

+37
-17
lines changed

1 file changed

+37
-17
lines changed

wear/build.gradle.kts

Lines changed: 37 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@
1515
*/
1616
import java.io.ByteArrayOutputStream
1717
import java.util.regex.Pattern
18-
19-
evaluationDependsOn(":wear:watchface")
18+
import org.gradle.api.attributes.Attribute
19+
import com.android.build.api.attributes.BuildTypeAttr
2020

2121
plugins {
2222
alias(libs.plugins.android.application)
@@ -66,9 +66,28 @@ configurations {
6666
isCanBeConsumed = false
6767
isCanBeResolved = true
6868
}
69+
70+
listOf("debug", "release").forEach { buildType ->
71+
create("watchfaceApk${buildType.replaceFirstChar { it.uppercase() }}") {
72+
isCanBeResolved = true
73+
isCanBeConsumed = false
74+
75+
attributes {
76+
attribute(
77+
Attribute.of(BuildTypeAttr::class.java),
78+
objects.named(BuildTypeAttr::class.java, buildType)
79+
)
80+
attribute(Attribute.of("artifactType", String::class.java), "apk")
81+
}
82+
}
83+
}
6984
}
7085

7186
dependencies {
87+
configurations.matching { it.name.startsWith("watchfaceApk") }.all {
88+
dependencies.add(project(":wear:watchface"))
89+
}
90+
7291
implementation(projects.wear.common)
7392
implementation(platform(libs.androidx.compose.bom))
7493
implementation(libs.androidx.wear.compose.foundation)
@@ -92,30 +111,31 @@ dependencies {
92111

93112
androidComponents.onVariants { variant ->
94113
val capsVariant = variant.name.replaceFirstChar { it.uppercase() }
114+
val watchfaceApkConfig = configurations.getByName("watchfaceApk$capsVariant")
95115

96-
val copyTaskProvider = tasks.register<Copy>("copyWatchface${capsVariant}Output") {
97-
val wfTask = project(":wear:watchface").tasks.named("assemble$capsVariant")
98-
dependsOn(wfTask)
99-
val buildDir = project(":wear:watchface").layout.buildDirectory.asFileTree.matching {
100-
include("**/${variant.name}/**/*.apk")
101-
exclude("**/*androidTest*")
116+
val copyWatchfaceApkTask = tasks.register<Copy>("copyWatchface${capsVariant}ApkToAssets") {
117+
from(watchfaceApkConfig) {
118+
// the resolved directory contains apk and output-metadata.json
119+
include("*.apk")
102120
}
103-
from(buildDir)
104121
into(layout.buildDirectory.dir("intermediates/watchfaceAssets/${variant.name}"))
105122

106-
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
107-
108123
eachFile {
109124
path = "default_watchface.apk"
110125
}
126+
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
111127
includeEmptyDirs = false
112128
}
113-
114129
val tokenTask = tasks.register<ProcessFilesTask>("generateToken${capsVariant}Res") {
115130
val tokenFile =
116131
layout.buildDirectory.file("generated/wfTokenRes/${variant.name}/res/values/wf_token.xml")
117132

118-
inputFile.from(copyTaskProvider.map { it.outputs.files.singleFile })
133+
apkDirectory.set(
134+
layout.dir( copyWatchfaceApkTask.map {
135+
it.destinationDir
136+
})
137+
)
138+
119139
outputFile.set(tokenFile)
120140
cliToolClasspath.set(project.configurations["cliToolConfiguration"])
121141
}
@@ -128,8 +148,8 @@ androidComponents.onVariants { variant ->
128148
}
129149

130150
abstract class ProcessFilesTask : DefaultTask() {
131-
@get:InputFiles
132-
abstract val inputFile: ConfigurableFileCollection
151+
@get:InputDirectory
152+
abstract val apkDirectory: DirectoryProperty
133153

134154
@get:OutputFile
135155
abstract val outputFile: RegularFileProperty
@@ -143,7 +163,7 @@ abstract class ProcessFilesTask : DefaultTask() {
143163

144164
@TaskAction
145165
fun taskAction() {
146-
val apkFile = inputFile.singleFile.resolve("default_watchface.apk")
166+
val apkFile = apkDirectory.asFile.get().resolve("default_watchface.apk")
147167

148168
val stdOut = ByteArrayOutputStream()
149169
val stdErr = ByteArrayOutputStream()
@@ -189,4 +209,4 @@ abstract class ProcessFilesTask : DefaultTask() {
189209
)
190210
}
191211
}
192-
}
212+
}

0 commit comments

Comments
 (0)