From 32fe9cb2c5d85cf7750e67588466341632784cc6 Mon Sep 17 00:00:00 2001 From: 0xera <56160164+0xera@users.noreply.github.com> Date: Tue, 14 Jan 2025 21:11:42 +0300 Subject: [PATCH 1/8] add input type setting to support running analysis with apk files --- sample/app/build.gradle | 3 ++- .../com/grab/plugin/sizer/TaskManager.kt | 27 ++++++++++++++----- ...rExtension.kt => AabGeneratorExtension.kt} | 3 +-- .../sizer/configuration/InputExtension.kt | 17 +++++++----- .../plugin/sizer/tasks/AppSizeAnalysisTask.kt | 7 +++-- .../plugin/sizer/tasks/GenerateApkTask.kt | 4 +-- .../plugin/sizer/utils/PluginInputProvider.kt | 4 ++- 7 files changed, 45 insertions(+), 20 deletions(-) rename sizer-gradle-plugin/src/main/kotlin/com/grab/plugin/sizer/configuration/{ApkGeneratorExtension.kt => AabGeneratorExtension.kt} (93%) diff --git a/sample/app/build.gradle b/sample/app/build.gradle index 4c810db..b198457 100644 --- a/sample/app/build.gradle +++ b/sample/app/build.gradle @@ -104,7 +104,7 @@ apply plugin: "com.grab.sizer" appSizer { enabled = true projectInput { - apk { + aab { bundleToolFile = file("${rootProject.rootDir}/binary/bundletool-all-1.15.4.jar") deviceSpecs = [ file("${rootProject.rootDir}/app-size-config/device-1.json"), @@ -116,6 +116,7 @@ appSizer { } enableMatchDebugVariant = true largeFileThreshold = 10 +// inputType = InputType.APK teamMappingFile = file("${rootProject.rootDir}/module-owner.yml") } metrics { diff --git a/sizer-gradle-plugin/src/main/kotlin/com/grab/plugin/sizer/TaskManager.kt b/sizer-gradle-plugin/src/main/kotlin/com/grab/plugin/sizer/TaskManager.kt index 677d9a3..3b61d71 100644 --- a/sizer-gradle-plugin/src/main/kotlin/com/grab/plugin/sizer/TaskManager.kt +++ b/sizer-gradle-plugin/src/main/kotlin/com/grab/plugin/sizer/TaskManager.kt @@ -33,6 +33,7 @@ import com.android.build.gradle.internal.dsl.BuildType import com.android.build.gradle.internal.dsl.ProductFlavor import com.android.build.gradle.internal.tasks.factory.dependsOn import com.grab.plugin.sizer.configuration.DefaultVariantFilter +import com.grab.plugin.sizer.configuration.InputType import com.grab.plugin.sizer.dependencies.* import com.grab.plugin.sizer.tasks.AppSizeAnalysisTask import com.grab.plugin.sizer.tasks.GenerateApkTask @@ -44,7 +45,9 @@ import com.grab.plugin.sizer.utils.isKotlinJvm import org.gradle.api.Project import org.gradle.api.Task import org.gradle.api.artifacts.ProjectDependency +import org.gradle.api.file.Directory import org.gradle.api.tasks.TaskProvider +import org.gradle.kotlin.dsl.listProperty import org.gradle.kotlin.dsl.the /* @@ -71,11 +74,23 @@ internal class TaskManager( val variantFilter = DefaultVariantFilter(variant) pluginExtension.input.variantFilter?.execute(variantFilter) if (!variantFilter.ignored) { - val generateApkTask = GenerateApkTask.registerTask( - project, - pluginExtension, - variant - ) + + val apksDirectory = when (pluginExtension.input.inputType) { + InputType.APK -> { + variant.packageApplicationProvider.map { + project.objects.listProperty().value(listOf(it.outputDirectory.get())) + } + } + InputType.AAB -> { + val generateApkTask = GenerateApkTask.registerTask( + project, + pluginExtension, + variant + ) + generateApkTask.map { it.outputDirectories } + } + } + val generateArchivesListTask = GenerateArchivesListTask.registerTask( project, @@ -89,7 +104,7 @@ internal class TaskManager( project, variant, pluginExtension, - generateApkTask, + apksDirectory, generateArchivesListTask, ) registerAppSizeTaskDep(project, variant, this, appSizeAnalysisTask) diff --git a/sizer-gradle-plugin/src/main/kotlin/com/grab/plugin/sizer/configuration/ApkGeneratorExtension.kt b/sizer-gradle-plugin/src/main/kotlin/com/grab/plugin/sizer/configuration/AabGeneratorExtension.kt similarity index 93% rename from sizer-gradle-plugin/src/main/kotlin/com/grab/plugin/sizer/configuration/ApkGeneratorExtension.kt rename to sizer-gradle-plugin/src/main/kotlin/com/grab/plugin/sizer/configuration/AabGeneratorExtension.kt index 3b4454f..b398946 100644 --- a/sizer-gradle-plugin/src/main/kotlin/com/grab/plugin/sizer/configuration/ApkGeneratorExtension.kt +++ b/sizer-gradle-plugin/src/main/kotlin/com/grab/plugin/sizer/configuration/AabGeneratorExtension.kt @@ -27,14 +27,13 @@ package com.grab.plugin.sizer.configuration -import org.gradle.api.file.ConfigurableFileCollection import org.gradle.api.file.RegularFileProperty import org.gradle.api.model.ObjectFactory import org.gradle.api.provider.ListProperty import java.io.File import javax.inject.Inject -open class ApkGeneratorExtension @Inject constructor(objects: ObjectFactory) { +open class AabGeneratorExtension @Inject constructor(objects: ObjectFactory) { val bundleToolFile: RegularFileProperty = objects.fileProperty() val deviceSpecs: ListProperty = objects.listProperty(File::class.java) } diff --git a/sizer-gradle-plugin/src/main/kotlin/com/grab/plugin/sizer/configuration/InputExtension.kt b/sizer-gradle-plugin/src/main/kotlin/com/grab/plugin/sizer/configuration/InputExtension.kt index 7df0cc2..f25a9c1 100644 --- a/sizer-gradle-plugin/src/main/kotlin/com/grab/plugin/sizer/configuration/InputExtension.kt +++ b/sizer-gradle-plugin/src/main/kotlin/com/grab/plugin/sizer/configuration/InputExtension.kt @@ -38,26 +38,31 @@ import javax.inject.Inject private const val DEFAULT_LARGE_FILE = 10240L // 10kb open class InputExtension @Inject constructor(objects: ObjectFactory) { - val apk: ApkGeneratorExtension = objects.newInstance(ApkGeneratorExtension::class.java, objects) + val aab: AabGeneratorExtension = objects.newInstance(AabGeneratorExtension::class.java, objects) val teamMappingFile: RegularFileProperty = objects.fileProperty() var variantFilter: Action? = null var largeFileThreshold: Long = DEFAULT_LARGE_FILE var enableMatchDebugVariant = false - + var inputType: InputType = InputType.AAB fun variantFilter(action: Action) { variantFilter = action } - fun apk(action: Action) { - action.execute(apk) + fun aab(action: Action) { + action.execute(aab) } - fun apk(block: ApkGeneratorExtension.() -> Unit) { - block(apk) + fun aab(block: AabGeneratorExtension.() -> Unit) { + block(aab) } } +enum class InputType { + AAB, + APK +} + interface VariantFilter { fun setIgnore(ignore: Boolean) val buildType: BuildType diff --git a/sizer-gradle-plugin/src/main/kotlin/com/grab/plugin/sizer/tasks/AppSizeAnalysisTask.kt b/sizer-gradle-plugin/src/main/kotlin/com/grab/plugin/sizer/tasks/AppSizeAnalysisTask.kt index 351809c..9e238e4 100644 --- a/sizer-gradle-plugin/src/main/kotlin/com/grab/plugin/sizer/tasks/AppSizeAnalysisTask.kt +++ b/sizer-gradle-plugin/src/main/kotlin/com/grab/plugin/sizer/tasks/AppSizeAnalysisTask.kt @@ -48,10 +48,13 @@ import com.grab.sizer.report.db.InfluxDBConfig import org.gradle.api.DefaultTask import org.gradle.api.Project import org.gradle.api.file.ConfigurableFileCollection +import org.gradle.api.file.Directory import org.gradle.api.file.DirectoryProperty import org.gradle.api.file.RegularFileProperty +import org.gradle.api.provider.ListProperty import org.gradle.api.provider.MapProperty import org.gradle.api.provider.Property +import org.gradle.api.provider.Provider import org.gradle.api.tasks.* import java.io.File @@ -160,14 +163,14 @@ internal abstract class AppSizeAnalysisTask : DefaultTask() { project: Project, variant: BaseVariant, pluginExtension: AppSizePluginExtension, - generateApkTask: TaskProvider, + apkDirectories: Provider>, generateArchivesListTask: TaskProvider, ): TaskProvider { return project.tasks.register( "appSizeAnalysis${variant.name.capitalize()}", AppSizeAnalysisTask::class.java ) { this.variantInput.set(variant.toVariantInput()) - this.apkDirectories.setFrom(generateApkTask.map { it.outputDirectories }) + this.apkDirectories.setFrom(apkDirectories) this.archiveDepJsonFile.set(generateArchivesListTask.map { it.archiveDepFile.get() }) this.libName.set(project.params().libraryName()) this.option.set(project.params().option()) diff --git a/sizer-gradle-plugin/src/main/kotlin/com/grab/plugin/sizer/tasks/GenerateApkTask.kt b/sizer-gradle-plugin/src/main/kotlin/com/grab/plugin/sizer/tasks/GenerateApkTask.kt index 3f46fef..0792cb3 100644 --- a/sizer-gradle-plugin/src/main/kotlin/com/grab/plugin/sizer/tasks/GenerateApkTask.kt +++ b/sizer-gradle-plugin/src/main/kotlin/com/grab/plugin/sizer/tasks/GenerateApkTask.kt @@ -192,8 +192,8 @@ internal abstract class GenerateApkTask : DefaultTask() { ): TaskProvider { val bundleTask = project.tasks.named("sign${variant.name.capitalize()}Bundle") val task = project.tasks.register("generateApk${variant.name.capitalize()}", GenerateApkTask::class.java) { - deviceSpecFiles.setFrom(extension.input.apk.deviceSpecs) - bundleToolFile.set(extension.input.apk.bundleToolFile) + deviceSpecFiles.setFrom(extension.input.aab.deviceSpecs) + bundleToolFile.set(extension.input.aab.bundleToolFile) appBundleFile.set( bundleTask.map { (it as FinalizeBundleTask).finalBundleFile.get() diff --git a/sizer-gradle-plugin/src/main/kotlin/com/grab/plugin/sizer/utils/PluginInputProvider.kt b/sizer-gradle-plugin/src/main/kotlin/com/grab/plugin/sizer/utils/PluginInputProvider.kt index 8f05bfa..9370103 100644 --- a/sizer-gradle-plugin/src/main/kotlin/com/grab/plugin/sizer/utils/PluginInputProvider.kt +++ b/sizer-gradle-plugin/src/main/kotlin/com/grab/plugin/sizer/utils/PluginInputProvider.kt @@ -34,6 +34,7 @@ import java.io.File private const val EXT_AAR = "aar" private const val EXT_JAR = "jar" +private const val EXT_APK = "apk" class PluginInputProvider( private val archiveDependencyStore: ArchiveDependencyStore, @@ -79,7 +80,8 @@ class PluginInputProvider( .filter { it.file.extension.equals(EXT_AAR, true) } override fun provideApkFiles(): Sequence { - return apksDirectory.listFiles()?.asSequence() ?: emptySequence() + return apksDirectory.listFiles()?.asSequence()?.filter { it.extension.equals(EXT_APK, true) } + ?: emptySequence() } override fun provideR8MappingFile(): File? = r8MappingFile From f2237273c39b0b7b679c94374baebd2f76a7c6b6 Mon Sep 17 00:00:00 2001 From: 0xera <56160164+0xera@users.noreply.github.com> Date: Sat, 25 Jan 2025 14:40:48 +0300 Subject: [PATCH 2/8] add task to analyse apk --- docs/plugin.md | 12 ++- docs/task_graph.md | 2 + sample/README.md | 6 +- sample/app/build.gradle | 3 +- .../com/grab/plugin/sizer/TaskManager.kt | 89 +++++++++++-------- ...rExtension.kt => ApkGeneratorExtension.kt} | 3 +- .../sizer/configuration/InputExtension.kt | 16 ++-- .../plugin/sizer/tasks/AppSizeAnalysisTask.kt | 3 +- .../plugin/sizer/tasks/GenerateApkTask.kt | 4 +- 9 files changed, 80 insertions(+), 58 deletions(-) rename sizer-gradle-plugin/src/main/kotlin/com/grab/plugin/sizer/configuration/{AabGeneratorExtension.kt => ApkGeneratorExtension.kt} (93%) diff --git a/docs/plugin.md b/docs/plugin.md index a3fa9ad..1cc178b 100644 --- a/docs/plugin.md +++ b/docs/plugin.md @@ -55,6 +55,10 @@ appSizer { ### Run the analysis +```bash +./gradlew app:apkSizeAnalysis[Release|Debug] --no-configure-on-demand --no-configuration-cache +``` +Or if you need to analyze apk files generated from the aab file according to device specs: ```bash ./gradlew app:appSizeAnalysis[Release|Debug] --no-configure-on-demand --no-configuration-cache ``` @@ -87,8 +91,8 @@ appSizer { variantFilter { variant -> variant.setIgnore(variant.flavors.contains("your-ignore-flavor")) } - apk { - // APK Generation + aab { + // APK Generation from aab } } ... @@ -122,7 +126,7 @@ Configure APK generation settings: appSizer { projectInput { ... - apk { + aab { deviceSpecs = [ file("path/to/device-1.json"), file("path/to/device-2.json"), @@ -186,7 +190,7 @@ appSizer { appSizer { enabled = true projectInput { - apk { + aab { bundleToolFile = file("${rootProject.rootDir}/binary/bundletool-all-1.15.4.jar") deviceSpecs = [ file("${rootProject.rootDir}/app-size-config/device-1.json"), diff --git a/docs/task_graph.md b/docs/task_graph.md index eb8e12f..87410f8 100644 --- a/docs/task_graph.md +++ b/docs/task_graph.md @@ -3,8 +3,10 @@ flowchart TD A(generateApkDebug) B(generateArchiveDepDebug) C(appSizeAnalysisDebug) + D(apkSizeAnalysisDebug) C --> A C --> B + D --> B ``` diff --git a/sample/README.md b/sample/README.md index ad8774f..00c217a 100644 --- a/sample/README.md +++ b/sample/README.md @@ -34,7 +34,11 @@ appSizer { To run the App Sizer analysis using the Gradle plugin: 1. Open a terminal in the sample project directory. -2. Execute the following command: +2. Execute one of the following commands: + ``` + ./gradlew app:apkSizeAnalysisProRelease --no-configure-on-demand + ``` + If you need to analyze apk files generated from the aab file according to device specs: ``` ./gradlew app:appSizeAnalysisProRelease --no-configure-on-demand ``` diff --git a/sample/app/build.gradle b/sample/app/build.gradle index b198457..4c810db 100644 --- a/sample/app/build.gradle +++ b/sample/app/build.gradle @@ -104,7 +104,7 @@ apply plugin: "com.grab.sizer" appSizer { enabled = true projectInput { - aab { + apk { bundleToolFile = file("${rootProject.rootDir}/binary/bundletool-all-1.15.4.jar") deviceSpecs = [ file("${rootProject.rootDir}/app-size-config/device-1.json"), @@ -116,7 +116,6 @@ appSizer { } enableMatchDebugVariant = true largeFileThreshold = 10 -// inputType = InputType.APK teamMappingFile = file("${rootProject.rootDir}/module-owner.yml") } metrics { diff --git a/sizer-gradle-plugin/src/main/kotlin/com/grab/plugin/sizer/TaskManager.kt b/sizer-gradle-plugin/src/main/kotlin/com/grab/plugin/sizer/TaskManager.kt index 3b61d71..a44f478 100644 --- a/sizer-gradle-plugin/src/main/kotlin/com/grab/plugin/sizer/TaskManager.kt +++ b/sizer-gradle-plugin/src/main/kotlin/com/grab/plugin/sizer/TaskManager.kt @@ -28,12 +28,12 @@ package com.grab.plugin.sizer import com.android.build.gradle.AppExtension +import com.android.build.gradle.api.ApplicationVariant import com.android.build.gradle.api.BaseVariant import com.android.build.gradle.internal.dsl.BuildType import com.android.build.gradle.internal.dsl.ProductFlavor import com.android.build.gradle.internal.tasks.factory.dependsOn import com.grab.plugin.sizer.configuration.DefaultVariantFilter -import com.grab.plugin.sizer.configuration.InputType import com.grab.plugin.sizer.dependencies.* import com.grab.plugin.sizer.tasks.AppSizeAnalysisTask import com.grab.plugin.sizer.tasks.GenerateApkTask @@ -75,49 +75,66 @@ internal class TaskManager( pluginExtension.input.variantFilter?.execute(variantFilter) if (!variantFilter.ignored) { - val apksDirectory = when (pluginExtension.input.inputType) { - InputType.APK -> { - variant.packageApplicationProvider.map { - project.objects.listProperty().value(listOf(it.outputDirectory.get())) - } - } - InputType.AAB -> { - val generateApkTask = GenerateApkTask.registerTask( - project, - pluginExtension, - variant - ) - generateApkTask.map { it.outputDirectories } - } - } - - val generateArchivesListTask = GenerateArchivesListTask.registerTask( - project, + project = project, variant = variant, flavorMatchingFallbacks = getProductFlavor(variant)?.matchingFallbacks ?: emptyList(), buildTypeMatchingFallbacks = getOriginalBuildType(variant).matchingFallbacks, enableMatchDebugVariant = pluginExtension.input.enableMatchDebugVariant ) - val appSizeAnalysisTask = AppSizeAnalysisTask.registerTask( - project, - variant, - pluginExtension, - apksDirectory, - generateArchivesListTask, - ) - registerAppSizeTaskDep(project, variant, this, appSizeAnalysisTask) + val aabSizeAnalysisTask = createAabAnalysisTask(project, variant, generateArchivesListTask) + val apkSizeAnalysisTask = createApkAnylysisTask(project, variant, generateArchivesListTask) + + registerAppSizeTaskDep(project, variant, this, listOf(aabSizeAnalysisTask, apkSizeAnalysisTask)) } } } } + private fun createApkAnylysisTask( + project: Project, + variant: ApplicationVariant, + generateArchivesListTask: TaskProvider + ) = AppSizeAnalysisTask.registerTask( + name = "apk", + project = project, + variant = variant, + pluginExtension = pluginExtension, + apkDirectories = variant.packageApplicationProvider.map { + project.objects.listProperty().value(listOf(it.outputDirectory.get())) + }, + generateArchivesListTask = generateArchivesListTask, + ) + + private fun createAabAnalysisTask( + project: Project, + variant: ApplicationVariant, + generateArchivesListTask: TaskProvider + ): TaskProvider { + val generateApkFromAabTask = GenerateApkTask.registerTask( + project, + pluginExtension, + variant + ) + + val appSizeAnalysisTask = AppSizeAnalysisTask.registerTask( + name = "app", + project = project, + variant = variant, + pluginExtension = pluginExtension, + apkDirectories = generateApkFromAabTask.map { it.outputDirectories }, + generateArchivesListTask = generateArchivesListTask, + ) + + return appSizeAnalysisTask + } + private fun registerAppSizeTaskDep( project: Project, variant: BaseVariant, appExtension: AppExtension, - depTask: TaskProvider + depTasks: List> ) { val dependenciesComponent = DaggerDependenciesComponent.factory().create( project = project, @@ -127,46 +144,46 @@ internal class TaskManager( enableMatchDebugVariant = pluginExtension.input.enableMatchDebugVariant ) val markAsChecked = mutableSetOf() - dfs(project, markAsChecked, dependenciesComponent, depTask) + dfs(project, markAsChecked, dependenciesComponent, depTasks) } private fun dfs( project: Project, markAsChecked: MutableSet, dependenciesComponent: DependenciesComponent, - depTask: TaskProvider + depTasks: List> ) { if (markAsChecked.contains(project.path)) return markAsChecked.add(project.path) - handleSubProject(project, depTask, dependenciesComponent.variantExtractor()) + handleSubProject(project, depTasks, dependenciesComponent.variantExtractor()) dependenciesComponent.configurationExtractor() .runtimeConfigurations(project) .flatMap { configuration -> configuration.dependencies.withType(ProjectDependency::class.java) }.forEach { - dfs(it.dependencyProject, markAsChecked, dependenciesComponent, depTask) + dfs(it.dependencyProject, markAsChecked, dependenciesComponent, depTasks) } } private fun handleSubProject( project: Project, - task: TaskProvider, + tasks: List>, variantExtractor: VariantExtractor ) { when { project.isAndroidLibrary -> { val variant = variantExtractor.findMatchVariant(project) if (variant is AndroidAppSizeVariant) { - task.dependsOn(variant.baseVariant.assembleProvider) + tasks.forEach { it.dependsOn(variant.baseVariant.assembleProvider) } } } project.isKotlinJvm -> { - task.dependsOn(project.tasks.named("jar")) + tasks.forEach { it.dependsOn(project.tasks.named("jar")) } } project.isJava -> { - task.dependsOn(project.tasks.named("jar")) + tasks.forEach { it.dependsOn(project.tasks.named("jar")) } } } diff --git a/sizer-gradle-plugin/src/main/kotlin/com/grab/plugin/sizer/configuration/AabGeneratorExtension.kt b/sizer-gradle-plugin/src/main/kotlin/com/grab/plugin/sizer/configuration/ApkGeneratorExtension.kt similarity index 93% rename from sizer-gradle-plugin/src/main/kotlin/com/grab/plugin/sizer/configuration/AabGeneratorExtension.kt rename to sizer-gradle-plugin/src/main/kotlin/com/grab/plugin/sizer/configuration/ApkGeneratorExtension.kt index b398946..3b4454f 100644 --- a/sizer-gradle-plugin/src/main/kotlin/com/grab/plugin/sizer/configuration/AabGeneratorExtension.kt +++ b/sizer-gradle-plugin/src/main/kotlin/com/grab/plugin/sizer/configuration/ApkGeneratorExtension.kt @@ -27,13 +27,14 @@ package com.grab.plugin.sizer.configuration +import org.gradle.api.file.ConfigurableFileCollection import org.gradle.api.file.RegularFileProperty import org.gradle.api.model.ObjectFactory import org.gradle.api.provider.ListProperty import java.io.File import javax.inject.Inject -open class AabGeneratorExtension @Inject constructor(objects: ObjectFactory) { +open class ApkGeneratorExtension @Inject constructor(objects: ObjectFactory) { val bundleToolFile: RegularFileProperty = objects.fileProperty() val deviceSpecs: ListProperty = objects.listProperty(File::class.java) } diff --git a/sizer-gradle-plugin/src/main/kotlin/com/grab/plugin/sizer/configuration/InputExtension.kt b/sizer-gradle-plugin/src/main/kotlin/com/grab/plugin/sizer/configuration/InputExtension.kt index f25a9c1..e908842 100644 --- a/sizer-gradle-plugin/src/main/kotlin/com/grab/plugin/sizer/configuration/InputExtension.kt +++ b/sizer-gradle-plugin/src/main/kotlin/com/grab/plugin/sizer/configuration/InputExtension.kt @@ -38,31 +38,25 @@ import javax.inject.Inject private const val DEFAULT_LARGE_FILE = 10240L // 10kb open class InputExtension @Inject constructor(objects: ObjectFactory) { - val aab: AabGeneratorExtension = objects.newInstance(AabGeneratorExtension::class.java, objects) + val apk: ApkGeneratorExtension = objects.newInstance(ApkGeneratorExtension::class.java, objects) val teamMappingFile: RegularFileProperty = objects.fileProperty() var variantFilter: Action? = null var largeFileThreshold: Long = DEFAULT_LARGE_FILE var enableMatchDebugVariant = false - var inputType: InputType = InputType.AAB fun variantFilter(action: Action) { variantFilter = action } - fun aab(action: Action) { - action.execute(aab) + fun apk(action: Action) { + action.execute(apk) } - fun aab(block: AabGeneratorExtension.() -> Unit) { - block(aab) + fun apk(block: ApkGeneratorExtension.() -> Unit) { + block(apk) } } -enum class InputType { - AAB, - APK -} - interface VariantFilter { fun setIgnore(ignore: Boolean) val buildType: BuildType diff --git a/sizer-gradle-plugin/src/main/kotlin/com/grab/plugin/sizer/tasks/AppSizeAnalysisTask.kt b/sizer-gradle-plugin/src/main/kotlin/com/grab/plugin/sizer/tasks/AppSizeAnalysisTask.kt index 9e238e4..7906f01 100644 --- a/sizer-gradle-plugin/src/main/kotlin/com/grab/plugin/sizer/tasks/AppSizeAnalysisTask.kt +++ b/sizer-gradle-plugin/src/main/kotlin/com/grab/plugin/sizer/tasks/AppSizeAnalysisTask.kt @@ -160,6 +160,7 @@ internal abstract class AppSizeAnalysisTask : DefaultTask() { companion object { fun registerTask( + name: String = "app", project: Project, variant: BaseVariant, pluginExtension: AppSizePluginExtension, @@ -167,7 +168,7 @@ internal abstract class AppSizeAnalysisTask : DefaultTask() { generateArchivesListTask: TaskProvider, ): TaskProvider { return project.tasks.register( - "appSizeAnalysis${variant.name.capitalize()}", AppSizeAnalysisTask::class.java + "${name}SizeAnalysis${variant.name.capitalize()}", AppSizeAnalysisTask::class.java ) { this.variantInput.set(variant.toVariantInput()) this.apkDirectories.setFrom(apkDirectories) diff --git a/sizer-gradle-plugin/src/main/kotlin/com/grab/plugin/sizer/tasks/GenerateApkTask.kt b/sizer-gradle-plugin/src/main/kotlin/com/grab/plugin/sizer/tasks/GenerateApkTask.kt index 0792cb3..3f46fef 100644 --- a/sizer-gradle-plugin/src/main/kotlin/com/grab/plugin/sizer/tasks/GenerateApkTask.kt +++ b/sizer-gradle-plugin/src/main/kotlin/com/grab/plugin/sizer/tasks/GenerateApkTask.kt @@ -192,8 +192,8 @@ internal abstract class GenerateApkTask : DefaultTask() { ): TaskProvider { val bundleTask = project.tasks.named("sign${variant.name.capitalize()}Bundle") val task = project.tasks.register("generateApk${variant.name.capitalize()}", GenerateApkTask::class.java) { - deviceSpecFiles.setFrom(extension.input.aab.deviceSpecs) - bundleToolFile.set(extension.input.aab.bundleToolFile) + deviceSpecFiles.setFrom(extension.input.apk.deviceSpecs) + bundleToolFile.set(extension.input.apk.bundleToolFile) appBundleFile.set( bundleTask.map { (it as FinalizeBundleTask).finalBundleFile.get() From 4782652b6991a4ed4c155dccc731b477b6bddb51 Mon Sep 17 00:00:00 2001 From: 0xera <56160164+0xera@users.noreply.github.com> Date: Sat, 25 Jan 2025 15:05:02 +0300 Subject: [PATCH 3/8] rename appSizeAnalysis* task to aabSizeAnalysis* --- .github/workflows/ci.yml | 2 +- sample/app/build.gradle | 2 +- .../kotlin/com/grab/plugin/sizer/TaskManager.kt | 6 +++--- ...ratorExtension.kt => AabGeneratorExtension.kt} | 3 +-- .../plugin/sizer/configuration/InputExtension.kt | 15 ++++++++++----- .../grab/plugin/sizer/tasks/GenerateApkTask.kt | 4 ++-- 6 files changed, 18 insertions(+), 14 deletions(-) rename sizer-gradle-plugin/src/main/kotlin/com/grab/plugin/sizer/configuration/{ApkGeneratorExtension.kt => AabGeneratorExtension.kt} (93%) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index fd5acf0..1af6935 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -64,4 +64,4 @@ jobs: - name: Build sample app run: | cd ./sample - ./gradlew app:appSizeAnalysisProRelease --stacktrace -Dorg.gradle.debug=false --no-daemon \ No newline at end of file + ./gradlew app:aabSizeAnalysisProRelease --stacktrace -Dorg.gradle.debug=false --no-daemon \ No newline at end of file diff --git a/sample/app/build.gradle b/sample/app/build.gradle index 4c810db..1a9c667 100644 --- a/sample/app/build.gradle +++ b/sample/app/build.gradle @@ -104,7 +104,7 @@ apply plugin: "com.grab.sizer" appSizer { enabled = true projectInput { - apk { + aab { bundleToolFile = file("${rootProject.rootDir}/binary/bundletool-all-1.15.4.jar") deviceSpecs = [ file("${rootProject.rootDir}/app-size-config/device-1.json"), diff --git a/sizer-gradle-plugin/src/main/kotlin/com/grab/plugin/sizer/TaskManager.kt b/sizer-gradle-plugin/src/main/kotlin/com/grab/plugin/sizer/TaskManager.kt index a44f478..42867c3 100644 --- a/sizer-gradle-plugin/src/main/kotlin/com/grab/plugin/sizer/TaskManager.kt +++ b/sizer-gradle-plugin/src/main/kotlin/com/grab/plugin/sizer/TaskManager.kt @@ -118,8 +118,8 @@ internal class TaskManager( variant ) - val appSizeAnalysisTask = AppSizeAnalysisTask.registerTask( - name = "app", + val aabSizeAnalysisTask = AppSizeAnalysisTask.registerTask( + name = "aab", project = project, variant = variant, pluginExtension = pluginExtension, @@ -127,7 +127,7 @@ internal class TaskManager( generateArchivesListTask = generateArchivesListTask, ) - return appSizeAnalysisTask + return aabSizeAnalysisTask } private fun registerAppSizeTaskDep( diff --git a/sizer-gradle-plugin/src/main/kotlin/com/grab/plugin/sizer/configuration/ApkGeneratorExtension.kt b/sizer-gradle-plugin/src/main/kotlin/com/grab/plugin/sizer/configuration/AabGeneratorExtension.kt similarity index 93% rename from sizer-gradle-plugin/src/main/kotlin/com/grab/plugin/sizer/configuration/ApkGeneratorExtension.kt rename to sizer-gradle-plugin/src/main/kotlin/com/grab/plugin/sizer/configuration/AabGeneratorExtension.kt index 3b4454f..b398946 100644 --- a/sizer-gradle-plugin/src/main/kotlin/com/grab/plugin/sizer/configuration/ApkGeneratorExtension.kt +++ b/sizer-gradle-plugin/src/main/kotlin/com/grab/plugin/sizer/configuration/AabGeneratorExtension.kt @@ -27,14 +27,13 @@ package com.grab.plugin.sizer.configuration -import org.gradle.api.file.ConfigurableFileCollection import org.gradle.api.file.RegularFileProperty import org.gradle.api.model.ObjectFactory import org.gradle.api.provider.ListProperty import java.io.File import javax.inject.Inject -open class ApkGeneratorExtension @Inject constructor(objects: ObjectFactory) { +open class AabGeneratorExtension @Inject constructor(objects: ObjectFactory) { val bundleToolFile: RegularFileProperty = objects.fileProperty() val deviceSpecs: ListProperty = objects.listProperty(File::class.java) } diff --git a/sizer-gradle-plugin/src/main/kotlin/com/grab/plugin/sizer/configuration/InputExtension.kt b/sizer-gradle-plugin/src/main/kotlin/com/grab/plugin/sizer/configuration/InputExtension.kt index e908842..037d9d3 100644 --- a/sizer-gradle-plugin/src/main/kotlin/com/grab/plugin/sizer/configuration/InputExtension.kt +++ b/sizer-gradle-plugin/src/main/kotlin/com/grab/plugin/sizer/configuration/InputExtension.kt @@ -38,7 +38,7 @@ import javax.inject.Inject private const val DEFAULT_LARGE_FILE = 10240L // 10kb open class InputExtension @Inject constructor(objects: ObjectFactory) { - val apk: ApkGeneratorExtension = objects.newInstance(ApkGeneratorExtension::class.java, objects) + val aab: AabGeneratorExtension = objects.newInstance(AabGeneratorExtension::class.java, objects) val teamMappingFile: RegularFileProperty = objects.fileProperty() var variantFilter: Action? = null var largeFileThreshold: Long = DEFAULT_LARGE_FILE @@ -48,15 +48,20 @@ open class InputExtension @Inject constructor(objects: ObjectFactory) { variantFilter = action } - fun apk(action: Action) { - action.execute(apk) + fun aab(action: Action) { + action.execute(aab) } - fun apk(block: ApkGeneratorExtension.() -> Unit) { - block(apk) + fun aab(block: AabGeneratorExtension.() -> Unit) { + block(aab) } } +enum class InputType { + AAB, + APK +} + interface VariantFilter { fun setIgnore(ignore: Boolean) val buildType: BuildType diff --git a/sizer-gradle-plugin/src/main/kotlin/com/grab/plugin/sizer/tasks/GenerateApkTask.kt b/sizer-gradle-plugin/src/main/kotlin/com/grab/plugin/sizer/tasks/GenerateApkTask.kt index 3f46fef..0792cb3 100644 --- a/sizer-gradle-plugin/src/main/kotlin/com/grab/plugin/sizer/tasks/GenerateApkTask.kt +++ b/sizer-gradle-plugin/src/main/kotlin/com/grab/plugin/sizer/tasks/GenerateApkTask.kt @@ -192,8 +192,8 @@ internal abstract class GenerateApkTask : DefaultTask() { ): TaskProvider { val bundleTask = project.tasks.named("sign${variant.name.capitalize()}Bundle") val task = project.tasks.register("generateApk${variant.name.capitalize()}", GenerateApkTask::class.java) { - deviceSpecFiles.setFrom(extension.input.apk.deviceSpecs) - bundleToolFile.set(extension.input.apk.bundleToolFile) + deviceSpecFiles.setFrom(extension.input.aab.deviceSpecs) + bundleToolFile.set(extension.input.aab.bundleToolFile) appBundleFile.set( bundleTask.map { (it as FinalizeBundleTask).finalBundleFile.get() From aa208964aba63e2961c2cf4ad05f7f86e7bdc9f4 Mon Sep 17 00:00:00 2001 From: 0xera <56160164+0xera@users.noreply.github.com> Date: Wed, 5 Feb 2025 19:31:19 +0300 Subject: [PATCH 4/8] revert rename appSizeAnalysis* task to aabSizeAnalysis* --- .github/workflows/ci.yml | 2 +- sample/app/build.gradle | 2 +- .../kotlin/com/grab/plugin/sizer/TaskManager.kt | 6 +++--- ...ratorExtension.kt => ApkGeneratorExtension.kt} | 2 +- .../plugin/sizer/configuration/InputExtension.kt | 15 +++++---------- .../grab/plugin/sizer/tasks/GenerateApkTask.kt | 4 ++-- 6 files changed, 13 insertions(+), 18 deletions(-) rename sizer-gradle-plugin/src/main/kotlin/com/grab/plugin/sizer/configuration/{AabGeneratorExtension.kt => ApkGeneratorExtension.kt} (96%) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1af6935..fd5acf0 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -64,4 +64,4 @@ jobs: - name: Build sample app run: | cd ./sample - ./gradlew app:aabSizeAnalysisProRelease --stacktrace -Dorg.gradle.debug=false --no-daemon \ No newline at end of file + ./gradlew app:appSizeAnalysisProRelease --stacktrace -Dorg.gradle.debug=false --no-daemon \ No newline at end of file diff --git a/sample/app/build.gradle b/sample/app/build.gradle index 1a9c667..4c810db 100644 --- a/sample/app/build.gradle +++ b/sample/app/build.gradle @@ -104,7 +104,7 @@ apply plugin: "com.grab.sizer" appSizer { enabled = true projectInput { - aab { + apk { bundleToolFile = file("${rootProject.rootDir}/binary/bundletool-all-1.15.4.jar") deviceSpecs = [ file("${rootProject.rootDir}/app-size-config/device-1.json"), diff --git a/sizer-gradle-plugin/src/main/kotlin/com/grab/plugin/sizer/TaskManager.kt b/sizer-gradle-plugin/src/main/kotlin/com/grab/plugin/sizer/TaskManager.kt index 42867c3..a44f478 100644 --- a/sizer-gradle-plugin/src/main/kotlin/com/grab/plugin/sizer/TaskManager.kt +++ b/sizer-gradle-plugin/src/main/kotlin/com/grab/plugin/sizer/TaskManager.kt @@ -118,8 +118,8 @@ internal class TaskManager( variant ) - val aabSizeAnalysisTask = AppSizeAnalysisTask.registerTask( - name = "aab", + val appSizeAnalysisTask = AppSizeAnalysisTask.registerTask( + name = "app", project = project, variant = variant, pluginExtension = pluginExtension, @@ -127,7 +127,7 @@ internal class TaskManager( generateArchivesListTask = generateArchivesListTask, ) - return aabSizeAnalysisTask + return appSizeAnalysisTask } private fun registerAppSizeTaskDep( diff --git a/sizer-gradle-plugin/src/main/kotlin/com/grab/plugin/sizer/configuration/AabGeneratorExtension.kt b/sizer-gradle-plugin/src/main/kotlin/com/grab/plugin/sizer/configuration/ApkGeneratorExtension.kt similarity index 96% rename from sizer-gradle-plugin/src/main/kotlin/com/grab/plugin/sizer/configuration/AabGeneratorExtension.kt rename to sizer-gradle-plugin/src/main/kotlin/com/grab/plugin/sizer/configuration/ApkGeneratorExtension.kt index b398946..5912620 100644 --- a/sizer-gradle-plugin/src/main/kotlin/com/grab/plugin/sizer/configuration/AabGeneratorExtension.kt +++ b/sizer-gradle-plugin/src/main/kotlin/com/grab/plugin/sizer/configuration/ApkGeneratorExtension.kt @@ -33,7 +33,7 @@ import org.gradle.api.provider.ListProperty import java.io.File import javax.inject.Inject -open class AabGeneratorExtension @Inject constructor(objects: ObjectFactory) { +open class ApkGeneratorExtension @Inject constructor(objects: ObjectFactory) { val bundleToolFile: RegularFileProperty = objects.fileProperty() val deviceSpecs: ListProperty = objects.listProperty(File::class.java) } diff --git a/sizer-gradle-plugin/src/main/kotlin/com/grab/plugin/sizer/configuration/InputExtension.kt b/sizer-gradle-plugin/src/main/kotlin/com/grab/plugin/sizer/configuration/InputExtension.kt index 037d9d3..e908842 100644 --- a/sizer-gradle-plugin/src/main/kotlin/com/grab/plugin/sizer/configuration/InputExtension.kt +++ b/sizer-gradle-plugin/src/main/kotlin/com/grab/plugin/sizer/configuration/InputExtension.kt @@ -38,7 +38,7 @@ import javax.inject.Inject private const val DEFAULT_LARGE_FILE = 10240L // 10kb open class InputExtension @Inject constructor(objects: ObjectFactory) { - val aab: AabGeneratorExtension = objects.newInstance(AabGeneratorExtension::class.java, objects) + val apk: ApkGeneratorExtension = objects.newInstance(ApkGeneratorExtension::class.java, objects) val teamMappingFile: RegularFileProperty = objects.fileProperty() var variantFilter: Action? = null var largeFileThreshold: Long = DEFAULT_LARGE_FILE @@ -48,20 +48,15 @@ open class InputExtension @Inject constructor(objects: ObjectFactory) { variantFilter = action } - fun aab(action: Action) { - action.execute(aab) + fun apk(action: Action) { + action.execute(apk) } - fun aab(block: AabGeneratorExtension.() -> Unit) { - block(aab) + fun apk(block: ApkGeneratorExtension.() -> Unit) { + block(apk) } } -enum class InputType { - AAB, - APK -} - interface VariantFilter { fun setIgnore(ignore: Boolean) val buildType: BuildType diff --git a/sizer-gradle-plugin/src/main/kotlin/com/grab/plugin/sizer/tasks/GenerateApkTask.kt b/sizer-gradle-plugin/src/main/kotlin/com/grab/plugin/sizer/tasks/GenerateApkTask.kt index 0792cb3..3f46fef 100644 --- a/sizer-gradle-plugin/src/main/kotlin/com/grab/plugin/sizer/tasks/GenerateApkTask.kt +++ b/sizer-gradle-plugin/src/main/kotlin/com/grab/plugin/sizer/tasks/GenerateApkTask.kt @@ -192,8 +192,8 @@ internal abstract class GenerateApkTask : DefaultTask() { ): TaskProvider { val bundleTask = project.tasks.named("sign${variant.name.capitalize()}Bundle") val task = project.tasks.register("generateApk${variant.name.capitalize()}", GenerateApkTask::class.java) { - deviceSpecFiles.setFrom(extension.input.aab.deviceSpecs) - bundleToolFile.set(extension.input.aab.bundleToolFile) + deviceSpecFiles.setFrom(extension.input.apk.deviceSpecs) + bundleToolFile.set(extension.input.apk.bundleToolFile) appBundleFile.set( bundleTask.map { (it as FinalizeBundleTask).finalBundleFile.get() From bcc4ea66adea575bc80e10c78a356f901d081a01 Mon Sep 17 00:00:00 2001 From: 0xera <56160164+0xera@users.noreply.github.com> Date: Wed, 5 Feb 2025 19:40:31 +0300 Subject: [PATCH 5/8] add collectAppDependencies* task --- .../com/grab/plugin/sizer/TaskManager.kt | 37 ++++++++++++------- 1 file changed, 23 insertions(+), 14 deletions(-) diff --git a/sizer-gradle-plugin/src/main/kotlin/com/grab/plugin/sizer/TaskManager.kt b/sizer-gradle-plugin/src/main/kotlin/com/grab/plugin/sizer/TaskManager.kt index a44f478..cf94645 100644 --- a/sizer-gradle-plugin/src/main/kotlin/com/grab/plugin/sizer/TaskManager.kt +++ b/sizer-gradle-plugin/src/main/kotlin/com/grab/plugin/sizer/TaskManager.kt @@ -38,6 +38,7 @@ import com.grab.plugin.sizer.dependencies.* import com.grab.plugin.sizer.tasks.AppSizeAnalysisTask import com.grab.plugin.sizer.tasks.GenerateApkTask import com.grab.plugin.sizer.tasks.GenerateArchivesListTask +import com.grab.plugin.sizer.tasks.capitalize import com.grab.plugin.sizer.utils.isAndroidApplication import com.grab.plugin.sizer.utils.isAndroidLibrary import com.grab.plugin.sizer.utils.isJava @@ -83,10 +84,15 @@ internal class TaskManager( enableMatchDebugVariant = pluginExtension.input.enableMatchDebugVariant ) - val aabSizeAnalysisTask = createAabAnalysisTask(project, variant, generateArchivesListTask) - val apkSizeAnalysisTask = createApkAnylysisTask(project, variant, generateArchivesListTask) + val collectAppDependenciesTask = registerCollectDependenciesTask(project, variant, this) + + createAabAnalysisTask(project, variant, generateArchivesListTask).configure { + dependsOn(collectAppDependenciesTask) + } + createApkAnylysisTask(project, variant, generateArchivesListTask).configure { + dependsOn(collectAppDependenciesTask) + } - registerAppSizeTaskDep(project, variant, this, listOf(aabSizeAnalysisTask, apkSizeAnalysisTask)) } } } @@ -130,12 +136,11 @@ internal class TaskManager( return appSizeAnalysisTask } - private fun registerAppSizeTaskDep( + private fun registerCollectDependenciesTask( project: Project, variant: BaseVariant, appExtension: AppExtension, - depTasks: List> - ) { + ): TaskProvider { val dependenciesComponent = DaggerDependenciesComponent.factory().create( project = project, variantInput = variant.toVariantInput(), @@ -143,47 +148,51 @@ internal class TaskManager( buildTypeMatchingFallbacks = appExtension.getOriginalBuildType(variant).matchingFallbacks, enableMatchDebugVariant = pluginExtension.input.enableMatchDebugVariant ) + val collectDependenciesTask = project.tasks.register("collectAppDependencies${variant.name.capitalize()}") + val markAsChecked = mutableSetOf() - dfs(project, markAsChecked, dependenciesComponent, depTasks) + dfs(project, markAsChecked, dependenciesComponent, collectDependenciesTask) + + return collectDependenciesTask } private fun dfs( project: Project, markAsChecked: MutableSet, dependenciesComponent: DependenciesComponent, - depTasks: List> + depTask: TaskProvider ) { if (markAsChecked.contains(project.path)) return markAsChecked.add(project.path) - handleSubProject(project, depTasks, dependenciesComponent.variantExtractor()) + handleSubProject(project, depTask, dependenciesComponent.variantExtractor()) dependenciesComponent.configurationExtractor() .runtimeConfigurations(project) .flatMap { configuration -> configuration.dependencies.withType(ProjectDependency::class.java) }.forEach { - dfs(it.dependencyProject, markAsChecked, dependenciesComponent, depTasks) + dfs(it.dependencyProject, markAsChecked, dependenciesComponent, depTask) } } private fun handleSubProject( project: Project, - tasks: List>, + task: TaskProvider, variantExtractor: VariantExtractor ) { when { project.isAndroidLibrary -> { val variant = variantExtractor.findMatchVariant(project) if (variant is AndroidAppSizeVariant) { - tasks.forEach { it.dependsOn(variant.baseVariant.assembleProvider) } + task.dependsOn(variant.baseVariant.assembleProvider) } } project.isKotlinJvm -> { - tasks.forEach { it.dependsOn(project.tasks.named("jar")) } + task.dependsOn(project.tasks.named("jar")) } project.isJava -> { - tasks.forEach { it.dependsOn(project.tasks.named("jar")) } + task.dependsOn(project.tasks.named("jar")) } } From 17fd6eccc388d7828148cfb6273b841bc0816d65 Mon Sep 17 00:00:00 2001 From: 0xera <56160164+0xera@users.noreply.github.com> Date: Wed, 5 Feb 2025 19:44:18 +0300 Subject: [PATCH 6/8] update upload-artifact --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index fd5acf0..17953fe 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -32,7 +32,7 @@ jobs: - name: Build run: ./gradlew assemble - name: Upload artifacts - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: build-artifacts path: | From 01eb4e5706588a32120b1df2565c6eaf6e28c6cd Mon Sep 17 00:00:00 2001 From: 0xera <56160164+0xera@users.noreply.github.com> Date: Thu, 6 Feb 2025 00:10:39 +0300 Subject: [PATCH 7/8] fix typo and add try to create all possible tasks --- .../com/grab/plugin/sizer/TaskManager.kt | 21 +++++++++++-------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/sizer-gradle-plugin/src/main/kotlin/com/grab/plugin/sizer/TaskManager.kt b/sizer-gradle-plugin/src/main/kotlin/com/grab/plugin/sizer/TaskManager.kt index cf94645..af2c4bf 100644 --- a/sizer-gradle-plugin/src/main/kotlin/com/grab/plugin/sizer/TaskManager.kt +++ b/sizer-gradle-plugin/src/main/kotlin/com/grab/plugin/sizer/TaskManager.kt @@ -84,21 +84,24 @@ internal class TaskManager( enableMatchDebugVariant = pluginExtension.input.enableMatchDebugVariant ) - val collectAppDependenciesTask = registerCollectDependenciesTask(project, variant, this) - - createAabAnalysisTask(project, variant, generateArchivesListTask).configure { - dependsOn(collectAppDependenciesTask) - } - createApkAnylysisTask(project, variant, generateArchivesListTask).configure { - dependsOn(collectAppDependenciesTask) + runCatching { + registerCollectDependenciesTask(project, variant, this) + }.onFailure { + project.logger.error("Can't create tasks for ${project.name} with variant ${variant.name}") + }.onSuccess { collectAppDependenciesTask -> + createAabAnalysisTask(project, variant, generateArchivesListTask).configure { + dependsOn(collectAppDependenciesTask) + } + createApkAnalysisTask(project, variant, generateArchivesListTask).configure { + dependsOn(collectAppDependenciesTask) + } } - } } } } - private fun createApkAnylysisTask( + private fun createApkAnalysisTask( project: Project, variant: ApplicationVariant, generateArchivesListTask: TaskProvider From b49011f258fe400d37d63585c0a1bc6e0cf61773 Mon Sep 17 00:00:00 2001 From: 0xera <56160164+0xera@users.noreply.github.com> Date: Tue, 18 Feb 2025 20:17:51 +0300 Subject: [PATCH 8/8] update doc --- docs/plugin.md | 14 +++++++------- sample/README.md | 8 ++++---- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/docs/plugin.md b/docs/plugin.md index 1cc178b..8a75523 100644 --- a/docs/plugin.md +++ b/docs/plugin.md @@ -54,13 +54,13 @@ appSizer { ``` ### Run the analysis - +If you need to analyze apk files generated from the aab file according to device specs: ```bash -./gradlew app:apkSizeAnalysis[Release|Debug] --no-configure-on-demand --no-configuration-cache +./gradlew app:appSizeAnalysis[Release|Debug] --no-configure-on-demand --no-configuration-cache ``` -Or if you need to analyze apk files generated from the aab file according to device specs: +Or if you need to analyze the apk file that is the result of the assemble task, you can execute the following command: ```bash -./gradlew app:appSizeAnalysis[Release|Debug] --no-configure-on-demand --no-configuration-cache +./gradlew app:apkSizeAnalysis[Release|Debug] --no-configure-on-demand --no-configuration-cache ``` ## Configuration @@ -91,7 +91,7 @@ appSizer { variantFilter { variant -> variant.setIgnore(variant.flavors.contains("your-ignore-flavor")) } - aab { + apk { // APK Generation from aab } } @@ -126,7 +126,7 @@ Configure APK generation settings: appSizer { projectInput { ... - aab { + apk { deviceSpecs = [ file("path/to/device-1.json"), file("path/to/device-2.json"), @@ -190,7 +190,7 @@ appSizer { appSizer { enabled = true projectInput { - aab { + apk { bundleToolFile = file("${rootProject.rootDir}/binary/bundletool-all-1.15.4.jar") deviceSpecs = [ file("${rootProject.rootDir}/app-size-config/device-1.json"), diff --git a/sample/README.md b/sample/README.md index 00c217a..89b7c8d 100644 --- a/sample/README.md +++ b/sample/README.md @@ -34,11 +34,11 @@ appSizer { To run the App Sizer analysis using the Gradle plugin: 1. Open a terminal in the sample project directory. -2. Execute one of the following commands: +2. If you need to analyze apk files generated from the aab file according to device specs: ``` - ./gradlew app:apkSizeAnalysisProRelease --no-configure-on-demand - ``` - If you need to analyze apk files generated from the aab file according to device specs: + ./gradlew app:appSizeAnalysisProRelease --no-configure-on-demand + ``` + Or if you need to analyze the apk file that is the result of the assemble task, you can execute the following command: ``` ./gradlew app:appSizeAnalysisProRelease --no-configure-on-demand ```