aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorandroid-build-prod (mdb) <android-build-team-robot@google.com>2020-11-10 17:29:34 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2020-11-10 17:29:34 +0000
commit9307d06acd092a715b7cdcc6339148ef91d57bb3 (patch)
tree9496d0d16808fb2f0b9c27b59c59e1efb0cc8f3e
parentea413a561ccec5ee15c7a51c393aebb13f2e6199 (diff)
parent98927495bebc471b4ec3b4ed990ac826129c9a43 (diff)
downloadsupport-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.kt22
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
}