Skip to content

2024-08-22

Choose a tag to compare

@github-actions github-actions released this 22 Aug 21:37
· 69 commits to main since this release

Annotation: v1.9.0-alpha02

August 21, 2024

androidx.annotation:annotation-*:1.9.0-alpha02 is released. Version 1.9.0-alpha02 contains these commits.

New Features

Annotation-Experimental: v1.5.0-alpha01

August 21, 2024

androidx.annotation:annotation-experimental:1.5.0-alpha01 is released. Version 1.5.0-alpha01 contains these commits.

API Changes

  • Add message to RequiresOptIn to match the Kotlin stdlib annotation with default empty string value. (I1f50e)

Benchmark: v1.3.0

August 21, 2024

androidx.benchmark:benchmark-*:1.3.0 is released. Version 1.3.0 contains these commits.

Microbenchmark changes since 1.2.0

  • Method tracing is on by default in microbenchmarks when running on most devices
    • Method tracing runs as a separate phase, after measurements
    • Method tracing on some platform and ART versions will affect later measurement phases - on these versions, method tracing is off by default and a warning is printed to Studio output
  • Main thread benchmarks and ANRs
    • Added measureRepeatedOnMainThread for UI thread benchmarks (e.g. those that interact with Compose/View UIs) to avoid ANRs when running for many seconds.
    • Method traces are skipped if expected to overrun the ANR avoidance deadline. Set androidx.benchmark.profiling.skipWhenDurationRisksAnr to false to disable this behavior (not recommended for CI runs).
  • Minification
    • Embedded proguard rules to improve microbenchmarking with minification enabled
    • Minification/R8 in a library module requires AGP 8.3, and can be enabled via android.buildTypes.release.androidTest.enableMinification in your build.gradle
    • Added experimental BlackHole.consume() API to prevent dead code elimination (If6812, b/286091643)
  • Metrics
    • Experimental cpu event counter feature (metrics from perf_event_open, which requires root on most versions of the platform), access via InstrumentationArgument androidx.benchmark.cpuEventCounter.enable (can be set to true), and androidx.benchmark.cpuEventCounter.events can be set e.g. to (Instructions,CpuCycles). This should be supported on some userdebug emulators, but support has not been tested across

MACRObenchmark changes since 1.2.0

  • Method tracing overhaul for macrobenchmarks.
    • Now method traces are scoped to the duration of the measureBlock, and can capture multiple sessions if the process starts multiple times.
    • Previously, method tracing would only work for StartupMode.COLD benchmarks, and capture nothing for measureBlocks that didn't restart the target process
    • Fixed method traces flush in macrobenchmark, so that method traces should be fully captured and valid, even on slower devices. (I6349a, b/329904950)
  • Correctly dump ART profile during individual warmUp iterations when process is killed so CompilationMode.Partial(warmup=N) measurements are more accurate. (I17923)
  • Drop Shader broadcast failure message
    • Added debugging suggestions to drop shader broadcast failure message
    • Add two instrumentation arguments for overriding shader dropping behavior to workaround crashes when benchmarking apps without ProfileInstaller 1.3:
      • androidx.benchmark.dropShaders.enable=true/false : can be used to skip all shader dropping (including that done in StartupMode.Cold launches), esp when benchmarking apps that don't yet use profileinstaller 1.3
      • androidx.benchmark.dropShaders.throwOnFailure=true/false : can be used to tolerate failures when trying to drop shaders, for example when benchmarking apps without profileinstaller 1.3 (I4f573)
  • Added experimental MacrobenchmarkRule#measureRepeated variant which takes a custom PerfettoConfig for fully customized Perfetto trace recording. Note that incorrectly configured configs may cause built in Metric classes to fail. (Idfd3d, b/309841164, b/304038384)
  • Cancel background dexopt jobs before running a Macrobenchmark to reduce interference. (I989ed)
  • Macrobenchmark now waits for 1 second for the target application to flush an ART profile (previously it waited for 500 ms). (I85a50, b/316082056)
  • TraceSectionMetric overhaul
    • Note: TraceSectionMetric changes below can affect outputs in CI usage, and may create discontinuities, or break parsing
    • Sum is now the default, as most usage of this metric is for repeated events, and first would discard data in these cases
    • Changed to be more customizable, with more available modes
    • Mode names are now embedded in metric output name (in Studio and JSON)
    • Now supports slices created using Trace.{begin|end}AsyncSection.
  • Metrics
    • Power - Added PowerMetric.deviceSupportsHighPrecisionTracking, PowerMetric.deviceBatteryHasMinimumCharge() and PowerMetric.deviceSupportsPowerEnergy()
    • Renamed Metric.getResult to getMeasurements to match return type
    • Added log.w / exception labels to all startup detection failures. This does not change current behavior (so some errors throw, and others silently fail to detect the startup), just makes it more understandable. Generally the ones that Log.w() and fail to report startup metrics are those where non-frame events are missing, exceptions are thrown when startup is detected except for frame timing information (from UI/RT slices). (Id240f, b/329145809)
    • Added frameCount measurement to FrameTimingMetric to aid in discovery of scenarios where measurements change because the number of frames produced changed (new animations added, invalidation issues fixed). (I1e5aa)
    • Clarified that frameOverrunMs is the preferred metric for tracking when available in docs, and why. (I18749, b/329478323)
    • Fixes issue where unterminated frames at the beginning and end of the trace could be paired together, which would incorrectly report as a single extremely long frame. (I39353, b/322232828)
    • Improve FrameTimingMetric error when frames aren't produced, and always output link to trace when failing metric parsing to assist in diagnosing problem. (I956b9)
    • Fixed crash in FrameTimingMetric failing to parse frame id, especially on certain OEM devices. (Ia24bc, b/303823815, b/306235276)
    • Relaxed strictness of checks in FrameMetrics, and added more detail to error messages. (Iadede)

Baseline Profile capture / Gradle plugin changes since 1.2.0

  • Increased max recommended version of AGP to 9.0.0-alpha01.
  • Ensure mergeArtProfile and mergeStartupProfile tasks always wait for baseline profile generation. (I623d6, b/343086054)
  • Generating a baseline profile successfully will output a summary of what changed (I824c8, b/269484510)
  • Added DSL to disable warnings (Ic4deb, b/331237001)
  • Fix to ensure benchmarks use generated baseline profiles when automaticGenerationDuringBuild is off (Ic144f, b/333024280)
  • Fix BaselineProfile gradle plugin property overrides to enable baseline profile generation and benchmarking when customizing a nonMinified or benchmark build type. (Ib8f05, b/324837887)
  • Fix for including library baseline profiles in AAR prior to AGP 8.3.0-alpha15. (I1d2af, b/313992099)
  • Fixed baseline and startup profile output url at the end of generation task. (I802e5, b/313976958)

Other significant changes since 1.2.0

  • Trace capture
    • Reduced EXITCODE 2 error when starting perfetto from an error to logged warning
    • Enable AIDL tracing by default in benchmarks(requires API 28) (Ia0af2, b/341852305)
    • Enable porter tag tracing by default in benchmarks. This captures, for example, wakelock tracepoints. (Icfe44, b/286551983)
    • Increased trace capture start timeout to avoid crashes when starting tracing on slower devices (I98841, b/329145808)
    • Added public API PerfettoTraceProcessor.Session.queryMetrics APIs with JSON, textproto, and proto binary (undecoded) variants. These allow you to query metrics built into TraceProcessor (I54d7f, b/304038382)
    • Enable blocking start on Perfetto trace record to reduce risk of missing data at beginning of trace. Only supported on API 33+. (Ie6e41, b/310760059)
  • JSON output
    • Added additional information in benchmark context in JSON output:
      • context.artMainlineVersion - integer version of Art mainline module (if present on device, -1 otherwise)
      • context.build.id - Equals android.os.Build.ID
      • context.build.version.codename - Equals android.os.Build.VERSION.CODENAME
      • context.build.version.abbreviatedCodename - corresponds to first letter of pre-release codename (including on release builds) (Ie5020)
    • Added profilerOutput list to JSON output for easier tooling around profiling traces (e.g. Perfetto, Method traces) (I05ddd, b/332604449)
    • Added a warning when Android Test Orchestrator is used in benchmark modules, as this will cause per-module output JSON files to be repeatedly overwritten. (Ia1af6, b/286899049)
    • Throw when filenames are longer than 200 chars to avoid unclear crashes when writing or post-processing files. (I4a5ab)

Compose Animation: v1.7.0-rc01

August 21, 2024

androidx.compose.animation:animation-*:1.7.0-rc01 is released. Version 1.7.0-rc01 contains these commits.

Compose Foundation: v1.7.0-rc01

August 21, 2024

androidx.compose.foundation:foundation-*:1.7.0-rc01 is released. Version 1.7.0-rc01 contains these commits.

Bug Fixes

  • Fixed a regression where the crash occurred when any element is focused inside a parent that is focusable (or clickable) and disabled. (b/317561689)

Compose Material: v1.7.0-rc01

August 21, 2024

androidx.compose.material:material-*:1.7.0-rc01 is released. Version 1.7.0-rc01 contains these commits.

Compose Material3: v1.3.0-rc01

August 21, 2024

androidx.compose.material3:material3-*:1.3.0-rc01 is released. Version 1.3.0-rc01 contains these commits.

Bug Fixes

  • ModalBottomSheet is now first in semantic traversal order, followed by the scrim. (I436f9, b/358594665)

Compose Material3 Adaptive: v1.0.0-rc01

August 21, 2024

androidx.compose.material3.adaptive:adaptive-*:1.0.0-rc01 is released. Version 1.0.0-rc01 contains these commits.

Bug Fixes

  • Fix wrong partition calculation when excluded hinge presents. (9dfd483)

Compose Material3 Adaptive: v1.1.0-alpha01

August 21, 2024

androidx.compose.material3.adaptive:adaptive-*:1.1.0-alpha01 is released. Version 1.1.0-alpha01 contains these commits.

New Features

  • Introduce pane expansion support of adaptive scaffolds.

API Changes

  • Introduce pane expansion APIs to public (I301d6)
  • Introduced ThreePaneScaffoldState to control pane value transitions. Added overloads of ListDetailPaneScaffold and SupportingPaneScaffold which accept this state. (I5db3b)
  • Introduce pane expansion key and key provider interface (Id621f)

Bug Fixes

  • Fix wrong partition calculation when excluded hinge presents. (9dfd483)

Compose Runtime: v1.7.0-rc01

August 21, 2024

androidx.compose.runtime:runtime-*:1.7.0-rc01 is released. Version 1.7.0-rc01 contains these commits.

Compose UI: v1.7.0-rc01

August 21, 2024

androidx.compose.ui:ui-*:1.7.0-rc01 is released. Version 1.7.0-rc01 contains these commits.

Notable changes

  • ui:ui module now forces requirement of a minimum version of foundation:foundation to be at least 1.7.0-rc01 or newer. This is enforced to remedy a behaviour incompatibility between ui and foundation in regards to NestedScrollSource changes that happened early during 1.7.0-alpha01.

Core and Core-ktx: v1.15.0-alpha02

August 21, 2024

androidx.core:core:1.15.0-alpha02, androidx.core:core-ktx:1.15.0-alpha02, and androidx.core:core-testing:1.15.0-alpha02 are released. Version 1.15.0-alpha02 contains these commits.

Important changes

  • Removed manual outlining of access to new platform APIs since this happens automatically via API modeling when using R8 with AGP 7.3 or later (e.g. R8 version 3.3) and for all builds when using AGP 8.1 or later (e.g. D8 version 8.1). Clients who are not using AGP are advised to update to D8 version 8.1 or later. See this article for more details. (Ieb9ae, b/345472586)

API Changes

  • Added fallbackQuery XML attribute to downloadable font definitions, allowing character-level fallback with downloadable fonts. (Idd544)
  • Adds helper APIs for using ProfilingManager (If2292)
  • Add compat method for ActivityOptions.setPendingIntentBackgroundActivityStartMode (I3ba1f, b/349617674)
  • Added DisplayCutoutCompat.getCutoutPath (I58778, b/279635904)
  • Reverts deprecation of ParcelCompat.writeBoolean and delegates to the platform API on API level 29 and above. (I9d243, b/313834577)
  • Create FontsContractCompat.requestFonts that takes executors (I03016, b/302377512)
  • Reverts deprecation of LocationCompat.isMock and delegates to the platform API on API level 31 and above. (I55940, b/313834577)
  • Notifications can now be tagged as voicemail. (I068ab)

Emoji2: v1.5.0-rc01

August 21, 2024

androidx.emoji2:emoji2-*:1.5.0-rc01 is released. Version 1.5.0-rc01 contains these commits.

New Features

  • Support emoji 15.1 and bidirectional emoji selector UI. A simple click on the bidirectional switcher allows users to toggle between left and right-facing versions of emojis.
  • Support multi-skintone emoji selector. Long-pressing couple emojis reveals a multi-person emoji selector for the zero state. When the user taps on the left half of an emoji, the emoji preview on the bottom right will be updated accordingly. When the user selects both halves of an emoji, the preview will show the entire emoji and the usr can then input it.

Bug Fixes

  • Removed manual outlining of access to new platform APIs since this happens automatically via API modeling when using R8 with AGP 7.3 or later (e.g. R8 version 3.3) and for all builds when using AGP 8.1 or later (e.g. D8 version 8.1). Clients who are not using AGP are advised to update to D8 version 8.1 or later. See this article for more details. (If6b4c, b/345472586)
  • EmojiPickerView’s tab selection and indicator updates one click behind. (146b02, b/288261054)
  • EmojiPickerView’s tab selection and indicator is broken. (5e1f14, b/273883688)

Graphics Shapes: v1.0.0

August 21, 2024

androidx.graphics:graphics-shapes:1.0.0, androidx.graphics:graphics-shapes-android:1.0.0, and androidx.graphics:graphics-shapes-desktop:1.0.0 are released. Version 1.0.0 contains these commits.

Navigation: v2.8.0-rc01

August 21, 2024

androidx.navigation:navigation-*:2.8.0-rc01 is released. Version 2.8.0-rc01 contains these commits.

Bug Fixes

  • Fix navigation crash when passing in top level Enum classes as type safe arguments. (I0ba76, b/358137294)
  • Navigation 2.8 now correctly works with SDK 34 and will not swap over to SDK 35 until the 2.9 release along with the rest of the AndroidX libraries. (b/358798728)

privacysandbox ads: v1.1.0-beta10

August 21, 2024

androidx.privacysandbox.ads:ads-adservices:1.1.0-beta10 and androidx.privacysandbox.ads:ads-adservices-java:1.1.0-beta10 are released. Version 1.1.0-beta10 contains these commits.

API Changes

  • Add missing Java constructor overloads for GetAdSelectionDataOutcome, PersistAdSelectionResultRequest, ReportEventRequest, and FetchAndJoinCustomAudienceRequest Experimental APIs. (I19e7f)

ProfileInstaller: v1.4.0-beta01

August 21, 2024

androidx.profileinstaller:profileinstaller:1.4.0-beta01 is released with no changes from the last alpha. Version 1.4.0-beta01 contains these commits.

Recyclerview: v1.4.0-beta01

August 21, 2024

androidx.recyclerview:recyclerview:1.4.0-beta01 is released, with no changes since 1.4.0-alpha02. Version 1.4.0-beta01 contains these commits.

Compatibility note: This version will only compile against the API 35 (Vanilla Ice Cream) SDK or higher. If you see AGP (Android Gradle Plugin) warnings when you upgrade, you can suppress them.

Room: v2.7.0-alpha07

August 21, 2024

androidx.room:room-*:2.7.0-alpha07 is released. Version 2.7.0-alpha07 contains these commits.

New Features

  • The Room Gradle Plugin will now automatically add the exported schemas into the Android Instrumentation Test resource sources so they can be used by the MigrationTestHelper.

Bug Fixes

  • Fixed an issue with the generated ‘actual’ of the RoomDatabaseConstructor missing the ‘actual’ modifier in the initialize function if such function is also overridden in the ‘expect’ declaration. (359631627)
  • Fixed an issue with the generated ‘actual’ of the RoomDatabaseConstructor not matching the visibility of the ‘expect’ declaration. (358138953)

Sqlite: v2.5.0-alpha07

August 21, 2024

androidx.sqlite:sqlite-*:2.5.0-alpha07 is released. Version 2.5.0-alpha07 contains these commits.

New Features

  • Add support for Linux ARM 64 in JVM / Desktop targets. (b/358045505)

Startup: v1.2.0-beta01

August 21, 2024

androidx.startup:startup-runtime:1.2.0-beta01 is released. Version 1.2.0-beta01 contains these commits.

New Features

  • Added explicit ProfileInstaller dependency to support baseline profile installation fallback when profiles not installed by play.

Tv-Material: v1.0.0

August 21, 2024

androidx.tv:tv-material:1.0.0 is released. Version 1.0.0 is the first stable release of androidx.tv:tv-material.

Wear Compose: v1.4.0-rc01

August 21, 2024

androidx.wear.compose:compose-*:1.4.0-rc01 is released. Version 1.4.0-rc01 contains these commits.

  • We have updated the Compose dependencies to 1.7.0-rc01 and pinned Wear Compose Navigation to androidx.lifecycle 2.8.3

Webkit: v1.12.0-beta01

August 21, 2024

androidx.webkit:webkit:1.12.0-beta01 is released. Version 1.12.0-beta01 contains these commits.

Bug Fixes

  • Removed manual outlining of access to new platform APIs since this happens automatically via API modeling when using R8 with AGP 7.3 or later (e.g. R8 version 3.3) and for all builds when using AGP 8.1 or later (e.g. D8 version 8.1). Clients who are not using AGP are advised to update to D8 version 8.1 or later. See this article for more details. (Ia60e0, b/345472586)