Fixed
Status Update
Comments
ap...@google.com <ap...@google.com> #2
Project: platform/frameworks/support
Branch: androidx-main
commit ef1265ecca338a7bb3929def8085236d45ace500
Author: Daniel Santiago Rivera <danysantiago@google.com>
Date: Thu Jun 29 11:16:59 2023
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
M room/room-gradle-plugin/src/main/java/androidx/room/gradle/RoomExtension.kt
M room/room-gradle-plugin/src/main/java/androidx/room/gradle/RoomGradlePlugin.kt
M room/room-gradle-plugin/src/test/java/androidx/room/gradle/RoomGradlePluginTest.kt
https://android-review.googlesource.com/2644711
Branch: androidx-main
commit ef1265ecca338a7bb3929def8085236d45ace500
Author: Daniel Santiago Rivera <danysantiago@google.com>
Date: Thu Jun 29 11:16:59 2023
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
M room/room-gradle-plugin/src/main/java/androidx/room/gradle/RoomExtension.kt
M room/room-gradle-plugin/src/main/java/androidx/room/gradle/RoomGradlePlugin.kt
M room/room-gradle-plugin/src/test/java/androidx/room/gradle/RoomGradlePluginTest.kt
Description
Component used: Fragment
Allow developers to detect when they are reusing a fragment instance after it was previously removed from a FragmentManager (i.e., that
initState()
was called).Ideally, this should also change the
require***()
methods to change their error message based on whether the fragment was never added (the current error message) or if it was previously added but has since been removed (a new error message).This would probably have to hook into both the
FragmentTransaction
methods for adding a fragment (to provide better stack traces) as well as in the internaladdFragment()
to ensure that Fragments that were removed as part of an inflight transaction are properly caught.