@@ -14,10 +14,8 @@ import com.android.build.api.variant.ApplicationAndroidComponentsExtension
1414import com.android.build.api.variant.ScopedArtifacts
1515import org.gradle.api.DefaultTask
1616import org.gradle.api.Project
17- import org.gradle.api.file.ConfigurableFileCollection
18- import org.gradle.api.file.Directory
19- import org.gradle.api.file.RegularFile
20- import org.gradle.api.file.RegularFileProperty
17+ import org.gradle.api.file.*
18+ import org.gradle.api.model.ObjectFactory
2119import org.gradle.api.provider.ListProperty
2220import org.gradle.api.provider.Property
2321import org.gradle.api.tasks.*
@@ -100,16 +98,22 @@ private fun String.capitalize(): String =
10098 replaceFirstChar { if (it.isLowerCase()) it.titlecase(getDefault()) else it.toString() }
10199
102100@CacheableTask
103- internal abstract class ProduceMappingFileTask : DefaultTask () {
101+ internal abstract class ProduceMappingFileTask @Inject constructor(
102+ objects : ObjectFactory
103+ ) : DefaultTask() {
104104 @get:OutputFile
105105 abstract val outputFile: RegularFileProperty
106106
107107 @get:OutputFile
108108 abstract val errorFile: RegularFileProperty
109109
110+ @get:Internal
111+ abstract val projectDirectories: ListProperty <Directory >
112+
110113 @get:InputFiles
111114 @get:PathSensitive(PathSensitivity .RELATIVE )
112- abstract val projectDirectories: ListProperty <Directory >
115+ val projectClasses: FileTree =
116+ objects.fileCollection().from(projectDirectories).asFileTree.matching { it.include(" **/*.class" ) }
113117
114118 @get:Classpath
115119 abstract val projectJars: ListProperty <RegularFile >
@@ -130,7 +134,7 @@ internal abstract class ProduceMappingFileTask : DefaultTask() {
130134 }
131135
132136 workQueue.submit(Action ::class .java) {
133- it.projectFiles.from(projectDirectories.get() )
137+ it.projectFiles.from(projectClasses )
134138 it.projectJars.from(projectJars.get())
135139 it.output.set(outputFile)
136140 it.errorOutput.set(errorFile)
@@ -167,13 +171,9 @@ internal abstract class ProduceMappingFileTask : DefaultTask() {
167171 }
168172
169173
170- parameters.projectFiles.forEach { projectFile ->
171- projectFile.walk().forEach { file ->
172- if (file.name.endsWith(" .class" )) {
173- val bytes = file.readBytes()
174- mapping.append(bytes)
175- }
176- }
174+ parameters.projectFiles.forEach { file ->
175+ val bytes = file.readBytes()
176+ mapping.append(bytes)
177177 }
178178
179179 parameters.output.get().asFile.apply {
0 commit comments