tree 05e9026558ee68e9b2c5f4148d0ddb3d51cf5887
parent c3f15cb7014aef81f2161035602782a65e0b569b
author Daniel Santiago Rivera <danysantiago@google.com> 1688051819 -0400
committer Daniel Santiago Rivera <danysantiago@google.com> 1688070567 -0400

Update Room Gradle plugin APIs to not always require per-variant configurations.

Most Room users don't have per-variant schemas which means having per-variant schema directories can decrease the user experience, specially as users migrate from the current annotation processor option approach to the plugin as per-variant directories where also not needed then if not necessary. This change updates the plugin APIs to accept a global location for all variants without creating multiple directories, enabling smoother migrations but also flexible enough to configure flavors or build type schemas while still retaining the benefits of the plugin (reproducible and cacheable builds).

The API is updated to contain overloads for configuring a single schema location or per-variant locations:
```
room {
  // For all variants
  schemaLocation("$projectDir/schemas/")

  // For a specific variant
  schemaLocation("variantName", ("$projectDir/schemas/variantName")
}
```
and an example usage assuming two build flavors: ‘demo’ and ‘full’ and the two default build types ‘debug’ and ‘release’:
```
room {
  // Applies to demoDebug only
  schemaLocation("demoDebug", ("$projectDir/schemas/demoDebug")

  // Applies to demoDebug and demoRelease
  schemaLocation("demo", ("$projectDir/schemas/demo")

  // Applies to demoDebug and fullDebug
  schemaLocation("debug", ("$projectDir/schemas/debug")
}
```
Bug: 278266663
Test: RoomGradlePluginTest

Change-Id: I09d6f9a77d3737bef2ce73193344a8b31f5059a8
