Skip to content

Commit f70059b

Browse files
committed
add input type setting to support running analysis with apk files
1 parent f57e96b commit f70059b

7 files changed

Lines changed: 45 additions & 20 deletions

File tree

sample/app/build.gradle

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ apply plugin: "com.grab.sizer"
104104
appSizer {
105105
enabled = true
106106
projectInput {
107-
apk {
107+
aab {
108108
bundleToolFile = file("${rootProject.rootDir}/binary/bundletool-all-1.15.4.jar")
109109
deviceSpecs = [
110110
file("${rootProject.rootDir}/app-size-config/device-1.json"),
@@ -116,6 +116,7 @@ appSizer {
116116
}
117117
enableMatchDebugVariant = true
118118
largeFileThreshold = 10
119+
// inputType = InputType.APK
119120
teamMappingFile = file("${rootProject.rootDir}/module-owner.yml")
120121
}
121122
metrics {

sizer-gradle-plugin/src/main/kotlin/com/grab/plugin/sizer/TaskManager.kt

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ import com.android.build.gradle.internal.dsl.BuildType
3333
import com.android.build.gradle.internal.dsl.ProductFlavor
3434
import com.android.build.gradle.internal.tasks.factory.dependsOn
3535
import com.grab.plugin.sizer.configuration.DefaultVariantFilter
36+
import com.grab.plugin.sizer.configuration.InputType
3637
import com.grab.plugin.sizer.dependencies.*
3738
import com.grab.plugin.sizer.tasks.AppSizeAnalysisTask
3839
import com.grab.plugin.sizer.tasks.GenerateApkTask
@@ -44,7 +45,9 @@ import com.grab.plugin.sizer.utils.isKotlinJvm
4445
import org.gradle.api.Project
4546
import org.gradle.api.Task
4647
import org.gradle.api.artifacts.ProjectDependency
48+
import org.gradle.api.file.Directory
4749
import org.gradle.api.tasks.TaskProvider
50+
import org.gradle.kotlin.dsl.listProperty
4851
import org.gradle.kotlin.dsl.the
4952

5053
/*
@@ -71,11 +74,23 @@ internal class TaskManager(
7174
val variantFilter = DefaultVariantFilter(variant)
7275
pluginExtension.input.variantFilter?.execute(variantFilter)
7376
if (!variantFilter.ignored) {
74-
val generateApkTask = GenerateApkTask.registerTask(
75-
project,
76-
pluginExtension,
77-
variant
78-
)
77+
78+
val apksDirectory = when (pluginExtension.input.inputType) {
79+
InputType.APK -> {
80+
variant.packageApplicationProvider.map {
81+
project.objects.listProperty<Directory>().value(listOf(it.outputDirectory.get()))
82+
}
83+
}
84+
InputType.AAB -> {
85+
val generateApkTask = GenerateApkTask.registerTask(
86+
project,
87+
pluginExtension,
88+
variant
89+
)
90+
generateApkTask.map { it.outputDirectories }
91+
}
92+
}
93+
7994

8095
val generateArchivesListTask = GenerateArchivesListTask.registerTask(
8196
project,
@@ -89,7 +104,7 @@ internal class TaskManager(
89104
project,
90105
variant,
91106
pluginExtension,
92-
generateApkTask,
107+
apksDirectory,
93108
generateArchivesListTask,
94109
)
95110
registerAppSizeTaskDep(project, variant, this, appSizeAnalysisTask)

sizer-gradle-plugin/src/main/kotlin/com/grab/plugin/sizer/configuration/ApkGeneratorExtension.kt renamed to sizer-gradle-plugin/src/main/kotlin/com/grab/plugin/sizer/configuration/AabGeneratorExtension.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,14 +27,13 @@
2727

2828
package com.grab.plugin.sizer.configuration
2929

30-
import org.gradle.api.file.ConfigurableFileCollection
3130
import org.gradle.api.file.RegularFileProperty
3231
import org.gradle.api.model.ObjectFactory
3332
import org.gradle.api.provider.ListProperty
3433
import java.io.File
3534
import javax.inject.Inject
3635

37-
open class ApkGeneratorExtension @Inject constructor(objects: ObjectFactory) {
36+
open class AabGeneratorExtension @Inject constructor(objects: ObjectFactory) {
3837
val bundleToolFile: RegularFileProperty = objects.fileProperty()
3938
val deviceSpecs: ListProperty<File> = objects.listProperty(File::class.java)
4039
}

sizer-gradle-plugin/src/main/kotlin/com/grab/plugin/sizer/configuration/InputExtension.kt

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -38,26 +38,31 @@ import javax.inject.Inject
3838
private const val DEFAULT_LARGE_FILE = 10240L // 10kb
3939

4040
open class InputExtension @Inject constructor(objects: ObjectFactory) {
41-
val apk: ApkGeneratorExtension = objects.newInstance(ApkGeneratorExtension::class.java, objects)
41+
val aab: AabGeneratorExtension = objects.newInstance(AabGeneratorExtension::class.java, objects)
4242
val teamMappingFile: RegularFileProperty = objects.fileProperty()
4343
var variantFilter: Action<VariantFilter>? = null
4444
var largeFileThreshold: Long = DEFAULT_LARGE_FILE
4545
var enableMatchDebugVariant = false
46-
46+
var inputType: InputType = InputType.AAB
4747

4848
fun variantFilter(action: Action<VariantFilter>) {
4949
variantFilter = action
5050
}
5151

52-
fun apk(action: Action<in ApkGeneratorExtension>) {
53-
action.execute(apk)
52+
fun aab(action: Action<in AabGeneratorExtension>) {
53+
action.execute(aab)
5454
}
5555

56-
fun apk(block: ApkGeneratorExtension.() -> Unit) {
57-
block(apk)
56+
fun aab(block: AabGeneratorExtension.() -> Unit) {
57+
block(aab)
5858
}
5959
}
6060

61+
enum class InputType {
62+
AAB,
63+
APK
64+
}
65+
6166
interface VariantFilter {
6267
fun setIgnore(ignore: Boolean)
6368
val buildType: BuildType

sizer-gradle-plugin/src/main/kotlin/com/grab/plugin/sizer/tasks/AppSizeAnalysisTask.kt

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,10 +48,13 @@ import com.grab.sizer.report.db.InfluxDBConfig
4848
import org.gradle.api.DefaultTask
4949
import org.gradle.api.Project
5050
import org.gradle.api.file.ConfigurableFileCollection
51+
import org.gradle.api.file.Directory
5152
import org.gradle.api.file.DirectoryProperty
5253
import org.gradle.api.file.RegularFileProperty
54+
import org.gradle.api.provider.ListProperty
5355
import org.gradle.api.provider.MapProperty
5456
import org.gradle.api.provider.Property
57+
import org.gradle.api.provider.Provider
5558
import org.gradle.api.tasks.*
5659
import java.io.File
5760

@@ -160,14 +163,14 @@ internal abstract class AppSizeAnalysisTask : DefaultTask() {
160163
project: Project,
161164
variant: BaseVariant,
162165
pluginExtension: AppSizePluginExtension,
163-
generateApkTask: TaskProvider<GenerateApkTask>,
166+
apkDirectories: Provider<ListProperty<Directory>>,
164167
generateArchivesListTask: TaskProvider<GenerateArchivesListTask>,
165168
): TaskProvider<AppSizeAnalysisTask> {
166169
return project.tasks.register(
167170
"appSizeAnalysis${variant.name.capitalize()}", AppSizeAnalysisTask::class.java
168171
) {
169172
this.variantInput.set(variant.toVariantInput())
170-
this.apkDirectories.setFrom(generateApkTask.map { it.outputDirectories })
173+
this.apkDirectories.setFrom(apkDirectories)
171174
this.archiveDepJsonFile.set(generateArchivesListTask.map { it.archiveDepFile.get() })
172175
this.libName.set(project.params().libraryName())
173176
this.option.set(project.params().option())

sizer-gradle-plugin/src/main/kotlin/com/grab/plugin/sizer/tasks/GenerateApkTask.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -192,8 +192,8 @@ internal abstract class GenerateApkTask : DefaultTask() {
192192
): TaskProvider<GenerateApkTask> {
193193
val bundleTask = project.tasks.named("sign${variant.name.capitalize()}Bundle")
194194
val task = project.tasks.register("generateApk${variant.name.capitalize()}", GenerateApkTask::class.java) {
195-
deviceSpecFiles.setFrom(extension.input.apk.deviceSpecs)
196-
bundleToolFile.set(extension.input.apk.bundleToolFile)
195+
deviceSpecFiles.setFrom(extension.input.aab.deviceSpecs)
196+
bundleToolFile.set(extension.input.aab.bundleToolFile)
197197
appBundleFile.set(
198198
bundleTask.map {
199199
(it as FinalizeBundleTask).finalBundleFile.get()

sizer-gradle-plugin/src/main/kotlin/com/grab/plugin/sizer/utils/PluginInputProvider.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ import java.io.File
3434

3535
private const val EXT_AAR = "aar"
3636
private const val EXT_JAR = "jar"
37+
private const val EXT_APK = "apk"
3738

3839
class PluginInputProvider(
3940
private val archiveDependencyStore: ArchiveDependencyStore,
@@ -79,7 +80,8 @@ class PluginInputProvider(
7980
.filter { it.file.extension.equals(EXT_AAR, true) }
8081

8182
override fun provideApkFiles(): Sequence<File> {
82-
return apksDirectory.listFiles()?.asSequence() ?: emptySequence()
83+
return apksDirectory.listFiles()?.asSequence()?.filter { it.extension.equals(EXT_APK, true) }
84+
?: emptySequence()
8385
}
8486

8587
override fun provideR8MappingFile(): File? = r8MappingFile

0 commit comments

Comments
 (0)