From cc556872922ff18465288efe3cf01f01f6350e76 Mon Sep 17 00:00:00 2001 From: Harsh Shandilya Date: Mon, 24 Oct 2022 18:48:03 +0530 Subject: [PATCH] feat(rename-artifacts): add support for obfuscation mapping files --- android/.gitignore | 2 ++ .../msfjarvis/aps/gradle/RenameArtifactsPlugin.kt | 12 ++++++++---- .../aps/gradle/artifacts/CollectApksTask.kt | 11 +++++++++++ .../aps/gradle/artifacts/CollectBundleTask.kt | 7 +++++++ 4 files changed, 28 insertions(+), 4 deletions(-) create mode 100644 android/.gitignore diff --git a/android/.gitignore b/android/.gitignore new file mode 100644 index 00000000..00da3251 --- /dev/null +++ b/android/.gitignore @@ -0,0 +1,2 @@ +/apk/ +/bundle/ diff --git a/build-logic/android-plugins/src/main/kotlin/dev/msfjarvis/aps/gradle/RenameArtifactsPlugin.kt b/build-logic/android-plugins/src/main/kotlin/dev/msfjarvis/aps/gradle/RenameArtifactsPlugin.kt index dba8353b..38ba1354 100644 --- a/build-logic/android-plugins/src/main/kotlin/dev/msfjarvis/aps/gradle/RenameArtifactsPlugin.kt +++ b/build-logic/android-plugins/src/main/kotlin/dev/msfjarvis/aps/gradle/RenameArtifactsPlugin.kt @@ -5,6 +5,7 @@ import com.android.build.api.variant.ApplicationAndroidComponentsExtension import com.android.build.api.variant.VariantOutputConfiguration import dev.msfjarvis.aps.gradle.artifacts.CollectApksTask import dev.msfjarvis.aps.gradle.artifacts.CollectBundleTask +import java.util.Locale import org.gradle.api.Plugin import org.gradle.api.Project import org.gradle.kotlin.dsl.getByType @@ -17,21 +18,24 @@ class RenameArtifactsPlugin : Plugin { project.pluginManager.withPlugin("com.android.application") { project.extensions.getByType().run { onVariants { variant -> - project.tasks.register("collect${variant.name.capitalize()}Apks") { + val taskPrefix = "collect${variant.name.capitalize(Locale.ROOT)}" + project.tasks.register("${taskPrefix}Apks") { variantName.set(variant.name) apkFolder.set(variant.artifacts.get(SingleArtifact.APK)) + mappingFile.set(variant.artifacts.get(SingleArtifact.OBFUSCATION_MAPPING_FILE)) builtArtifactsLoader.set(variant.artifacts.getBuiltArtifactsLoader()) - outputDirectory.set(project.layout.projectDirectory.dir("outputs")) + outputDirectory.set(project.layout.projectDirectory.dir("apk")) } - project.tasks.register("collect${variant.name.capitalize()}Bundle") { + project.tasks.register("${taskPrefix}Bundle") { val mainOutput = variant.outputs.single { it.outputType == VariantOutputConfiguration.OutputType.SINGLE } variantName.set(variant.name) versionName.set(mainOutput.versionName) + mappingFile.set(variant.artifacts.get(SingleArtifact.OBFUSCATION_MAPPING_FILE)) bundleFile.set(variant.artifacts.get(SingleArtifact.BUNDLE)) - outputDirectory.set(project.layout.projectDirectory.dir("outputs")) + outputDirectory.set(project.layout.projectDirectory.dir("bundle")) } } } diff --git a/build-logic/android-plugins/src/main/kotlin/dev/msfjarvis/aps/gradle/artifacts/CollectApksTask.kt b/build-logic/android-plugins/src/main/kotlin/dev/msfjarvis/aps/gradle/artifacts/CollectApksTask.kt index 4af18fac..db36493f 100644 --- a/build-logic/android-plugins/src/main/kotlin/dev/msfjarvis/aps/gradle/artifacts/CollectApksTask.kt +++ b/build-logic/android-plugins/src/main/kotlin/dev/msfjarvis/aps/gradle/artifacts/CollectApksTask.kt @@ -6,9 +6,11 @@ import java.nio.file.Paths import java.nio.file.StandardCopyOption import org.gradle.api.DefaultTask import org.gradle.api.file.DirectoryProperty +import org.gradle.api.file.RegularFileProperty import org.gradle.api.provider.Property import org.gradle.api.tasks.CacheableTask import org.gradle.api.tasks.Input +import org.gradle.api.tasks.InputFile import org.gradle.api.tasks.InputFiles import org.gradle.api.tasks.Internal import org.gradle.api.tasks.OutputDirectory @@ -21,6 +23,10 @@ import org.gradle.api.tasks.TaskAction abstract class CollectApksTask : DefaultTask() { @get:InputFiles @get:PathSensitive(PathSensitivity.NONE) abstract val apkFolder: DirectoryProperty + @get:InputFile + @get:PathSensitive(PathSensitivity.NONE) + abstract val mappingFile: RegularFileProperty + @get:Input abstract val variantName: Property @get:Internal abstract val builtArtifactsLoader: Property @@ -40,5 +46,10 @@ abstract class CollectApksTask : DefaultTask() { StandardCopyOption.REPLACE_EXISTING, ) } + Files.copy( + mappingFile.get().asFile.toPath(), + outputDir.resolve("mapping.txt").toPath(), + StandardCopyOption.REPLACE_EXISTING, + ) } } diff --git a/build-logic/android-plugins/src/main/kotlin/dev/msfjarvis/aps/gradle/artifacts/CollectBundleTask.kt b/build-logic/android-plugins/src/main/kotlin/dev/msfjarvis/aps/gradle/artifacts/CollectBundleTask.kt index 0a516a18..c9b99987 100644 --- a/build-logic/android-plugins/src/main/kotlin/dev/msfjarvis/aps/gradle/artifacts/CollectBundleTask.kt +++ b/build-logic/android-plugins/src/main/kotlin/dev/msfjarvis/aps/gradle/artifacts/CollectBundleTask.kt @@ -14,6 +14,8 @@ import org.gradle.api.tasks.TaskAction abstract class CollectBundleTask : DefaultTask() { @get:InputFile abstract val bundleFile: RegularFileProperty + @get:InputFile abstract val mappingFile: RegularFileProperty + @get:Input abstract val variantName: Property @get:Input abstract val versionName: Property @@ -29,5 +31,10 @@ abstract class CollectBundleTask : DefaultTask() { outputDir.resolve("Claw-${variantName.get()}-${versionName.get()}.aab").toPath(), StandardCopyOption.REPLACE_EXISTING, ) + Files.copy( + mappingFile.get().asFile.toPath(), + outputDir.resolve("mapping.txt").toPath(), + StandardCopyOption.REPLACE_EXISTING, + ) } }