Gradle buildSrcVersions v0.40.2 Release Notes

Release Date: 2022-06-01 // 8 months ago
  • ๐Ÿ›  Fixes

    • ๐Ÿ›  Fix a memory leak that led the Gradle daemon to eventually suffer from a lot of GC overhead before running out of memory when a Gradle plugin had its version managed by refreshVersions. ๐Ÿ‘ท We've done extensive tests to ensure we fixed this for good, and the CI now checks for leaks in the Gradle daemon to prevent future recurrence. ๐Ÿ”ง Note that if you were using Gradle configuration cache, you were likely to encounter this issue less often.
    • ๐Ÿ›  Fix the AndroidX.wear.tiles.material dependency notation that was pointing to wrong coordinates because of a typo. โœ… The test that was designed to catch this has been fixed to prevent future recurrence.

    Thanks to @yacine-ser for raising this memory leak issue along with a hint on the culprit, it was very helpful in reproducing and fixing the leak.

    ๐Ÿ†• New dependency notations:

    • AndroidX.camera.mlKitVision
    • ๐Ÿ AndroidX.compose.material3.windowSizeClass
    • ๐Ÿ’ป AndroidX.compose.ui.text.googleFonts
    • ๐ŸŽ AndroidX.core.performance
    • AndroidX.customView.poolingContainer
    • AndroidX.health.connectClient
    • ๐ŸŽ AndroidX.metrics.performance
    • โœ… AndroidX.test.ext.junit.gTest
    • โœ… AndroidX.test.ext.junit.ktx (was previously AndroidX.test.ext.junitKtx)
    • AndroidX.wear.watchFace.complications.rendering
    • Google.android.material.composeThemeAdapter3

Previous changes from v0.40.1

  • ๐Ÿ›  Fixes

    • ๐Ÿ‘Œ Improved support of Gradle configuration cache. In the previous release, if you ran the refreshVersions task twice in a row with configuration cache enabled, the second run would fail, even in warning mode. It's now fixed.
    • ๐Ÿ‘€ To make refreshVersions compatible with GCS (Google Cloud Storage) hosted maven repositories (which can be helpful for company/team internal libraries), we were using the official library from Google. Unfortunately, this led to dependency hell to some of our users because it then requires a specific version of Guava, which could be different from the one required by other plugins, and the one from refreshVersions would prevail. So, to resolve these problems, we replaced our implementation with one that reuses Gradle's built-in GcsClient, and we're very happy with that because it also has the benefit of reducing the total size of refreshVersions when we include its dependencies. Note that this is using internal Gradle APIs, but we've seen that they didn't change in 5 years, and the code path is executed only if you have gcs backed repositories in your project.

    ๐Ÿ†• New dependency notations:

    • AndroidX.glance.wearTiles
    • AndroidX.wear.tiles.material
    • Google.android.maps
      • compose
      • utils
      • utils.ktx
      • ktx
      • rx
      • places
        • ktx
        • rx
    • ReactiveX
      • rxJava2
        • rxAndroid
        • rxKotlin
      • rxJava3
        • rxAndroid
        • rxKotlin
    • JakeWharton
      • rxBinding3
        • appcompat
        • core
        • drawerLayout
        • leanback
        • material
        • recyclerview
        • slidingPaneLayout
        • swipeRefreshLayout
        • viewPager2
        • viewPager
      • rxBinding4
        • appcompat
        • core
        • drawerLayout
        • leanback
        • material
        • recyclerview
        • slidingPaneLayout
        • swipeRefreshLayout
        • viewPager2
        • viewPager
      • rxRelay2
      • rxRelay3

    Credits

    Thanks to Mike Gray for the contribution in adding ReactiveX, RxBinding, and RxRelay dependency notations!