diff options
author | android-build-prod (mdb) <android-build-team-robot@google.com> | 2020-11-10 17:29:34 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2020-11-10 17:29:34 +0000 |
commit | 9307d06acd092a715b7cdcc6339148ef91d57bb3 (patch) | |
tree | 9496d0d16808fb2f0b9c27b59c59e1efb0cc8f3e | |
parent | ea413a561ccec5ee15c7a51c393aebb13f2e6199 (diff) | |
parent | 98927495bebc471b4ec3b4ed990ac826129c9a43 (diff) | |
download | support-snap-temp-L56600000741292578.tar.gz |
Merge "Merge cherrypicks of [1493214] into androidx-navigation-release" into androidx-navigation-releasesnap-temp-L56600000741292578
-rw-r--r-- | navigation/navigation-safe-args-gradle-plugin/src/main/kotlin/androidx/navigation/safeargs/gradle/SafeArgsPlugin.kt | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/navigation/navigation-safe-args-gradle-plugin/src/main/kotlin/androidx/navigation/safeargs/gradle/SafeArgsPlugin.kt b/navigation/navigation-safe-args-gradle-plugin/src/main/kotlin/androidx/navigation/safeargs/gradle/SafeArgsPlugin.kt index 3ec30e55735..09aaca2552a 100644 --- a/navigation/navigation-safe-args-gradle-plugin/src/main/kotlin/androidx/navigation/safeargs/gradle/SafeArgsPlugin.kt +++ b/navigation/navigation-safe-args-gradle-plugin/src/main/kotlin/androidx/navigation/safeargs/gradle/SafeArgsPlugin.kt @@ -26,24 +26,27 @@ import org.gradle.api.Plugin import org.gradle.api.Project import org.gradle.api.file.FileCollection import org.gradle.api.provider.ProviderFactory +import org.gradle.api.resources.TextResource import org.jetbrains.kotlin.gradle.dsl.KotlinProjectExtension import java.io.File import javax.inject.Inject +import kotlin.reflect.full.memberFunctions +import kotlin.reflect.jvm.isAccessible private const val PLUGIN_DIRNAME = "navigation-args" internal const val GENERATED_PATH = "generated/source/$PLUGIN_DIRNAME" internal const val INCREMENTAL_PATH = "intermediates/incremental" abstract class SafeArgsPlugin protected constructor( - val providerFactory: ProviderFactory + private val providerFactory: ProviderFactory ) : Plugin<Project> { abstract val generateKotlin: Boolean private fun forEachVariant(extension: BaseExtension, action: (BaseVariant) -> Unit) { - when { - extension is AppExtension -> extension.applicationVariants.all(action) - extension is LibraryExtension -> { + when (extension) { + is AppExtension -> extension.applicationVariants.all(action) + is LibraryExtension -> { extension.libraryVariants.all(action) } else -> throw GradleException("safeargs plugin must be used with android app," + @@ -88,10 +91,13 @@ abstract class SafeArgsPlugin protected constructor( * Sets the android project application id into the task. */ private fun setApplicationId(task: ArgumentsGenerationTask, variant: BaseVariant) { - val appIdTextResource = variant.applicationIdTextResource - if (appIdTextResource != null) { - task.applicationIdResource = appIdTextResource - } else { + variant::class.memberFunctions.forEach { function -> + if (function.name == "getApplicationIdTextResource") { + function.isAccessible = true + task.applicationIdResource = function.call(variant)!! as TextResource + } + } + if (task.applicationIdResource == null) { // getApplicationIdTextResource() returned null, fallback to getApplicationId() task.applicationId = variant.applicationId } |