2024-08-21
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
- Adding support for
mingwX64platform (I461ca, b/349894318) - Add support for
linuxArm64kotlin multiplatform target. (I139d3, b/338268719)
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
messagetoRequiresOptInto 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
measureRepeatedOnMainThreadfor 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.skipWhenDurationRisksAnrto false to disable this behavior (not recommended for CI runs).
- Added
- 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.enableMinificationin yourbuild.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 viaInstrumentationArgumentandroidx.benchmark.cpuEventCounter.enable(can be set totrue), andandroidx.benchmark.cpuEventCounter.eventscan be set e.g. to (Instructions,CpuCycles). This should be supported on some userdebug emulators, but support has not been tested across
- Experimental cpu event counter feature (metrics from
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.COLDbenchmarks, and capture nothing formeasureBlocksthat 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)
- Now method traces are scoped to the duration of the
- Correctly dump ART profile during individual
warmUpiterations when process is killed soCompilationMode.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
ProfileInstaller1.3:androidx.benchmark.dropShaders.enable=true/false: can be used to skip all shader dropping (including that done inStartupMode.Coldlaunches), esp when benchmarking apps that don't yet use profileinstaller 1.3androidx.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#measureRepeatedvariant which takes a customPerfettoConfigfor 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:
TraceSectionMetricchanges 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.
- Note:
- Metrics
- Power - Added
PowerMetric.deviceSupportsHighPrecisionTracking,PowerMetric.deviceBatteryHasMinimumCharge()andPowerMetric.deviceSupportsPowerEnergy() - Renamed
Metric.getResulttogetMeasurementsto 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
frameCountmeasurement toFrameTimingMetricto aid in discovery of scenarios where measurements change because the number of frames produced changed (new animations added, invalidation issues fixed). (I1e5aa) - Clarified that
frameOverrunMsis 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
FrameTimingMetricerror when frames aren't produced, and always output link to trace when failing metric parsing to assist in diagnosing problem. (I956b9) - Fixed crash in
FrameTimingMetricfailing 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)
- Power - Added
Baseline Profile capture / Gradle plugin changes since 1.2.0
- Increased max recommended version of AGP to 9.0.0-alpha01.
- Ensure
mergeArtProfileandmergeStartupProfiletasks 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
automaticGenerationDuringBuildis off (Ic144f, b/333024280) - Fix
BaselineProfilegradle plugin property overrides to enable baseline profile generation and benchmarking when customizing anonMinifiedor 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.queryMetricsAPIs with JSON, textproto, and proto binary (undecoded) variants. These allow you to query metrics built intoTraceProcessor(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,-1otherwise)context.build.id- Equals android.os.Build.IDcontext.build.version.codename- Equals android.os.Build.VERSION.CODENAMEcontext.build.version.abbreviatedCodename- corresponds to first letter of pre-release codename (including on release builds) (Ie5020)
- Added
profilerOutputlist 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)
- Added additional information in benchmark context in JSON output:
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
ModalBottomSheetis 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
ThreePaneScaffoldStateto control pane value transitions. Added overloads ofListDetailPaneScaffoldandSupportingPaneScaffoldwhich 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.
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
fallbackQueryXML 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.writeBooleanand delegates to the platform API on API level 29 and above. (I9d243, b/313834577) - Create
FontsContractCompat.requestFontsthat takes executors (I03016, b/302377512) - Reverts deprecation of
LocationCompat.isMockand 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, andFetchAndJoinCustomAudienceRequestExperimental 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
RoomDatabaseConstructormissing the ‘actual’ modifier in theinitializefunction if such function is also overridden in the ‘expect’ declaration. (359631627) - Fixed an issue with the generated ‘actual’ of the
RoomDatabaseConstructornot 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
ProfileInstallerdependency 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)