Mark L. Murphy's Blog, page 5
January 5, 2025
Compose Design Systems: Have a Plan
We run into questions like this one a lot.They boil down to ���I���m trying to use Compose Material/Material3, and it���s not letting me change this aspect���.The stock response is ���Material Design is an opinionated design system���, which is simultaneouslyfairly accurate and often unhelpful.
So, let���s see why we���re in this situation.
What Came BeforeIn the beginning in Android development, there was the View system.
This attempted to be malleable to a wide range of circumstances. Given sufficient fussingwith styles/themes, calling configuration methods, and the occasional subclass, developerscould hammer the framework widgets into shapes that largely met what designers might request.Not everything was configurable, though, and what aspects could and could not be configuredwound up being semi-random from the standpoint of consumers of that UI toolkit.
When Google created Material Design, they first attempted to implement it purely throughthemes for existing widgets, along with a few brand-new widgets. Later, via appcompat,they would mostly-seamlessly switch you to subclasses of widgets (e.g., AppCompatButtoninstead of Button). This did provide the Material look and feel, but it did so onthe open View system. As a result, most of what Material implemented could be overridden,using the same techniques that Google used to implement Material in the first place.
As a result, while Material Design is indeed opinionated, the implementation of Material Designwas based on a leaky foundation, such that those opinions often could be ignored.
Compose = Structured FlexibilityLots of things changed when we moved to Jetpack Compose. One of the big-but-subtle differences,though, is in how widgets are defined. We look at the switch from Java classes plus styles/themesto Kotlin functions and tend to focus on syntax (e.g., no more XML layouts). The ���subtle���aspect is that our ability to configure widgets is now limited to the composable���s functionparameters, plus composition locals to a lesser extent. Compose lends itself towards structuredflexibility, rather than the more ad hoc flexibility of the View system.
The net: while Material Design itself did not change and is still opinionated, the Composeimplementation of Material Design does a much better job of enforcing those opinions.
In terms of steering developers to better adhere to Material Design, this is wonderful. Interms of allowing developers to get their work done, this is rather less wonderful.
Let the Complaints CommenceThe reason that we get these sorts of questionsis because developers use Compose Material/Material3, as they feel that they have nochoice. Quoting a comment on that question:
making every view of an app customized with base composables (box, column, etc���) seems an enormous and tedious job
This is an understandable reaction. We have limited documentation on implementing design systems.We have even less tooling support for implementing design systems. On the whole, Compose itselfdoes a fairly good job of making custom design systems possible, but it feels like there has been littlework done for making custom design systems approachable.
Personally, I have not found that building a bespoke design system in Compose is allthat bad. Having support from things like Compose Themehelps. I recognize that I may be more comfortable with these sorts of things than are a lot of developers, though.
Have a PlanIf you are embarking upon a new Compose or Compose Multiplatform project, it behooves you tospend time considering your approach for a design system.
(if you are already knee-deep in the project, may the deity of your choice have mercyon your soul)
If You Have a DesignerMany professional projects have a graphic designer who will say what the app will look like.If you ask that designer what the project will do for a design system, you are likely toget one of three main responses:
���We will use this official design system: ������, where ��������� might be ���Material Design���or ���Apple���s design system��� or ���Microsoft���s design system��� or ���IBM���s design system���or something else. With luck,there already is a Compose implementation of that design system that you can use, suchas Compose Cupertino orcompose-fluent-ui orCarbon Compose. If thereis, make sure that the designer understands that in those places where the designer deviatesfrom the official design system, the implementation of those places will be substantially more expensiveto build and maintain. If we can limit how many of those places exist, the app UI willbe as inexpensive as possible.
���We like design systems, and we will create our own���. In this case, make sure thatsoftware engineering management understands that the implementation of that design systemwill be expensive, both to build and to maintain. However, since you are using somestructured design system, screens and panels based on that design system implementation willbe comparatively inexpensive.
���What���s a design system?���. In this case, make sure that software engineering managementknows that building the UI of the app will be expensive. Maintenance will be expensive ifthe design changes after the initial implementation. Using a design system would reducethose costs, and using an official-and-implemented design system would be the least expensivefrom a software engineering standpoint.
In effect, not going with a standard design system means that the designer is imposingsoftware development and maintenance costs upon the organization. That should be an explicitdecision, often by upper management, rather than a designer just deciding on his or her own.
If You Design Things YourselfGood news: you get to choose your own level of pain!
Bad news: you have to choose your own level of pain!
Just understand that the same sort of breakdown applies as in the professional designer case:
Choosing an official-and-implemented design system is cheap, easy, and inflexible
Rolling your own design system incurs up-front costs, but ongoing work (screens) and adjustmentsare comparatively easy, and you have tons of flexibility
Not creating a design system, and instead going with ���spray and pray��� of UI elements,requires least initial mental energy but may make things a lot worse for you over time
December 26, 2024
New Jetpack Artifacts: 26 Dec 2024
Nope, we���re not done with 2024 yet. Media3 released 1.5.1 and1.6.0-alpha01 artifacts:
androidx.media3:media3-cast:1.5.1 androidx.media3:media3-cast:1.6.0-alpha01 androidx.media3:media3-common:1.5.1 androidx.media3:media3-common:1.6.0-alpha01 androidx.media3:media3-common-ktx:1.5.1 androidx.media3:media3-common-ktx:1.6.0-alpha01 androidx.media3:media3-container:1.5.1 androidx.media3:media3-container:1.6.0-alpha01 androidx.media3:media3-database:1.5.1 androidx.media3:media3-database:1.6.0-alpha01 androidx.media3:media3-datasource:1.5.1 androidx.media3:media3-datasource:1.6.0-alpha01 androidx.media3:media3-datasource-cronet:1.5.1 androidx.media3:media3-datasource-cronet:1.6.0-alpha01 androidx.media3:media3-datasource-okhttp:1.5.1 androidx.media3:media3-datasource-okhttp:1.6.0-alpha01 androidx.media3:media3-datasource-rtmp:1.5.1 androidx.media3:media3-datasource-rtmp:1.6.0-alpha01 androidx.media3:media3-decoder:1.5.1 androidx.media3:media3-decoder:1.6.0-alpha01 androidx.media3:media3-effect:1.5.1 androidx.media3:media3-effect:1.6.0-alpha01 androidx.media3:media3-exoplayer:1.5.1 androidx.media3:media3-exoplayer:1.6.0-alpha01 androidx.media3:media3-exoplayer-dash:1.5.1 androidx.media3:media3-exoplayer-dash:1.6.0-alpha01 androidx.media3:media3-exoplayer-hls:1.5.1 androidx.media3:media3-exoplayer-hls:1.6.0-alpha01 androidx.media3:media3-exoplayer-ima:1.5.1 androidx.media3:media3-exoplayer-ima:1.6.0-alpha01 androidx.media3:media3-exoplayer-midi:1.5.1 androidx.media3:media3-exoplayer-midi:1.6.0-alpha01 androidx.media3:media3-exoplayer-rtsp:1.5.1 androidx.media3:media3-exoplayer-rtsp:1.6.0-alpha01 androidx.media3:media3-exoplayer-smoothstreaming:1.5.1 androidx.media3:media3-exoplayer-smoothstreaming:1.6.0-alpha01 androidx.media3:media3-exoplayer-workmanager:1.5.1 androidx.media3:media3-exoplayer-workmanager:1.6.0-alpha01 androidx.media3:media3-extractor:1.5.1 androidx.media3:media3-extractor:1.6.0-alpha01 androidx.media3:media3-muxer:1.5.1 androidx.media3:media3-muxer:1.6.0-alpha01 androidx.media3:media3-session:1.5.1 androidx.media3:media3-session:1.6.0-alpha01 androidx.media3:media3-test-utils:1.5.1 androidx.media3:media3-test-utils:1.6.0-alpha01 androidx.media3:media3-test-utils-robolectric:1.5.1 androidx.media3:media3-test-utils-robolectric:1.6.0-alpha01 androidx.media3:media3-transformer:1.5.1 androidx.media3:media3-transformer:1.6.0-alpha01 androidx.media3:media3-ui:1.5.1 androidx.media3:media3-ui:1.6.0-alpha01 androidx.media3:media3-ui-leanback:1.5.1 androidx.media3:media3-ui-leanback:1.6.0-alpha01December 18, 2024
Random Musings on the Android 16 Developer Preview 2
(I really wanted to open this post with an Android development-themed riff on���Twas the Night Before Christmas���,but the rhyming part of my brain is malfunctioning right now���)
So, we got our second and final developer preview for Android 16.I say ���final developer preview��� because the next round should be classified as a beta.
Google actually talked a bit more about this release, which is a significantimprovement over DP1.The ���new features and APIs page���and blog posthighlight several changes. Some of those are also explored by Mishaal Rahman inthis Android Police post.
Google still has not documented ���app functions���.To me, that feels like it might be running late and not make the Android 16 cut.
Beyond that, here is what else caught my eye:
What Might Make Work WobblyAll apps on Android 16 are subject to ���JobScheduler quota optimizations���.To be blunt, this section is not well-written. For example, it refers to ���active standby buckets���,which (at present) aren���t a thing, at least in terms of the SDK. Still, from the tone,it feels like background jobs (including WorkManager work) might get stopped more frequently.Fortunately, they did add getStopReason() methods so we can find out why work gotstopped, with corresponding stop reason constants (e.g., STOP_REASON_APP_STANDBY,STOP_REASON_QUOTA).
Also, if you had been relying upon the deprecated setImportantWhileForeground() optionon JobInfo.Builder,that no longer does anything.While they were at it, they also deprecated and nerfedisImportantWhileForegound() on JobInfo.
What Might Be KeyThere is a new KeyStoreManager system service,retrieved via getSystemService() andKEYSTORE_SERVICE.
Among other things, KeyStoreManager has grantKeyAccess(), which allows App A to grantaccess to a key to App B. While I can see possible use cases, this does not seem to bedefended by a permission or anything, and it seems like an obvious thing for malware to want to use. ��������
What You Might Find InterestingA network security config can now declare thatcertificate transparency verification is requiredfor a particular network.
We can now opt into tapjacking attacks in some scenarios,if I am interpreting this correctly. It is unclear why we would want to do that.
You can now get the ���state of health��� of the battery.This is ���the remaining estimated full charge capacity relative to the rated capacity in %���.Given that we are talking about batteries, I am disappointed that the value wasnot named BATTERY_PROPERTY_STATE_OF_SHOCK. ����
We can now allow a PendingIntent to have���all background activity start privileges, including those normally reserved for privileged contexts (e.g., companion apps or those with the START_ACTIVITIES_FROM_BACKGROUND permission)���,via a MODE_BACKGROUND_ACTIVITY_START_ALLOW_ALWAYS flag.I wonder if this will get abused enough to warrant a permission.
Speaking of permissions,five new ones showed up.The RANGING permissionmay be tied to this ranging change.
You can now tweak the Intent matching rules applied to your components (or to yourapp overall) via intentMatchingFlags.
A Spanned object now has a new span type, NoWritingToolsSpan.This allows you to indicate a section of text that soft keyboards (IMEs) should notoffer to modify, such as quoted text.
Via StrictMode, you can now find out whenyour app was prevented from launching an activity in the background.This sort of thing might be useful to monitor in the field.
Devices can now declare that they support the Thread networking protocol.I do not look forward to trying to make sense of Thread threads, let alone discussionthreads about Thread threads.
There are now standard Intent actions for capturing a ���motion photo���.
A VirtualDisplay can now be rotated.
ApplicationStartInfo now tells you generally why your process was started,via getStartComponent().You get told which of the four component types triggered the start, but not the specificclass. There is also a somewhat-disturbing START_COMPONENT_OTHERif your process was started just for the fun of it, or something.
What Happens Next?We should get Android 16 Beta 1 in January.
December 12, 2024
New Jetpack Artifacts: 12 Dec 2024
OK, yesterday was notthe final artifact wave for 2024.
Coinciding with the announcement of Android XR, we got a few new artifact groups:
androidx.xr.arcore androidx.xr.compose androidx.xr.compose.material3 androidx.xr.runtime androidx.xr.scenecoreAnd, in those groups, we got some new artifacts:
androidx.xr.arcore:arcore androidx.xr.compose:compose androidx.xr.compose:compose-testing androidx.xr.compose.material3:material3 androidx.xr.runtime:runtime androidx.xr.runtime:runtime-openxr androidx.xr.runtime:runtime-testing androidx.xr.scenecore:scenecore androidx.xr.scenecore:scenecore-testingWe also got new Compose Material3 alphas and a couple of new BOMs:
androidx.compose:compose-bom-alpha:2024.12.00 androidx.compose.material3:material3:1.4.0-alpha05 androidx.compose.material3:material3-adaptive-navigation-suite:1.4.0-alpha05 androidx.compose.material3:material3-adaptive-navigation-suite-android:1.4.0-alpha05 androidx.compose.material3:material3-adaptive-navigation-suite-jvmstubs:1.4.0-alpha05 androidx.compose.material3:material3-android:1.4.0-alpha05 androidx.compose.material3:material3-jvmstubs:1.4.0-alpha05 androidx.compose.material3:material3-lint:1.4.0-alpha05 androidx.compose.material3:material3-linuxx64stubs:1.4.0-alpha05 androidx.compose.material3:material3-window-size-class:1.4.0-alpha05 androidx.compose.material3:material3-window-size-class-android:1.4.0-alpha05 androidx.compose.material3:material3-window-size-class-jvmstubs:1.4.0-alpha05 androidx.compose.material3:material3-window-size-class-linuxx64stubs:1.4.0-alpha05 androidx.compose.material3.adaptive:adaptive:1.1.0-alpha08 androidx.compose.material3.adaptive:adaptive-android:1.1.0-alpha08 androidx.compose.material3.adaptive:adaptive-jvmstubs:1.1.0-alpha08 androidx.compose.material3.adaptive:adaptive-layout:1.1.0-alpha08 androidx.compose.material3.adaptive:adaptive-layout-android:1.1.0-alpha08 androidx.compose.material3.adaptive:adaptive-layout-jvmstubs:1.1.0-alpha08 androidx.compose.material3.adaptive:adaptive-navigation:1.1.0-alpha08 androidx.compose.material3.adaptive:adaptive-navigation-android:1.1.0-alpha08 androidx.compose.material3.adaptive:adaptive-navigation-jvmstubs:1.1.0-alpha08 androidx.gradle:gradle-version-catalog-alpha:2024.12.00 androidx.xr.arcore:arcore:1.0.0-alpha01 androidx.xr.compose:compose:1.0.0-alpha01 androidx.xr.compose:compose-testing:1.0.0-alpha01 androidx.xr.compose.material3:material3:1.0.0-alpha01 androidx.xr.runtime:runtime:1.0.0-alpha01 androidx.xr.runtime:runtime-openxr:1.0.0-alpha01 androidx.xr.runtime:runtime-testing:1.0.0-alpha01 androidx.xr.scenecore:scenecore:1.0.0-alpha01 androidx.xr.scenecore:scenecore-testing:1.0.0-alpha01December 11, 2024
New Jetpack Artifacts: 11 Dec 2024
This should be the last artifact wave until 2025:
androidx.camera.media3 is a new artifact group, and the following artifacts are new:
androidx.camera.media3:media3-effect androidx.core:core-viewtree androidx.graphics:graphics-shapes-watchosdevicearm64 androidx.pdf:pdf-document-service androidx.savedstate:savedstate-compose androidx.savedstate:savedstate-compose-android androidx.savedstate:savedstate-compose-jvmstubs androidx.savedstate:savedstate-compose-linuxx64stubsHere are the new artifact versions:
androidx.activity:activity:1.10.0-rc01 androidx.activity:activity-compose:1.10.0-rc01 androidx.activity:activity-ktx:1.10.0-rc01 androidx.appsearch:appsearch:1.1.0-alpha07 androidx.appsearch:appsearch-builtin-types:1.1.0-alpha07 androidx.appsearch:appsearch-compiler:1.1.0-alpha07 androidx.appsearch:appsearch-debug-view:1.1.0-alpha07 androidx.appsearch:appsearch-external-protobuf:1.1.0-alpha07 androidx.appsearch:appsearch-ktx:1.1.0-alpha07 androidx.appsearch:appsearch-local-storage:1.1.0-alpha07 androidx.appsearch:appsearch-platform-storage:1.1.0-alpha07 androidx.appsearch:appsearch-play-services-storage:1.1.0-alpha07 androidx.baselineprofile:androidx.baselineprofile.gradle.plugin:1.4.0-alpha06 androidx.baselineprofile.apptarget:androidx.baselineprofile.apptarget.gradle.plugin:1.4.0-alpha06 androidx.baselineprofile.consumer:androidx.baselineprofile.consumer.gradle.plugin:1.4.0-alpha06 androidx.baselineprofile.producer:androidx.baselineprofile.producer.gradle.plugin:1.4.0-alpha06 androidx.benchmark:androidx.benchmark.gradle.plugin:1.4.0-alpha06 androidx.benchmark:benchmark-baseline-profile-gradle-plugin:1.4.0-alpha06 androidx.benchmark:benchmark-common:1.4.0-alpha06 androidx.benchmark:benchmark-gradle-plugin:1.4.0-alpha06 androidx.benchmark:benchmark-junit4:1.4.0-alpha06 androidx.benchmark:benchmark-macro:1.4.0-alpha06 androidx.benchmark:benchmark-macro-junit4:1.4.0-alpha06 androidx.camera:camera-camera2:1.4.1 androidx.camera:camera-camera2:1.5.0-alpha04 androidx.camera:camera-compose:1.5.0-alpha04 androidx.camera:camera-core:1.4.1 androidx.camera:camera-core:1.5.0-alpha04 androidx.camera:camera-effects:1.4.1 androidx.camera:camera-effects:1.5.0-alpha04 androidx.camera:camera-extensions:1.4.1 androidx.camera:camera-extensions:1.5.0-alpha04 androidx.camera:camera-feature-combination-query:1.5.0-alpha04 androidx.camera:camera-feature-combination-query-play-services:1.5.0-alpha04 androidx.camera:camera-lifecycle:1.4.1 androidx.camera:camera-lifecycle:1.5.0-alpha04 androidx.camera:camera-mlkit-vision:1.4.1 androidx.camera:camera-mlkit-vision:1.5.0-alpha04 androidx.camera:camera-video:1.4.1 androidx.camera:camera-video:1.5.0-alpha04 androidx.camera:camera-view:1.4.1 androidx.camera:camera-view:1.5.0-alpha04 androidx.camera.media3:media3-effect:1.0.0-alpha01 androidx.camera.viewfinder:viewfinder-compose:1.4.0-alpha11 androidx.camera.viewfinder:viewfinder-core:1.4.0-alpha11 androidx.camera.viewfinder:viewfinder-view:1.4.0-alpha11 androidx.collection:collection:1.5.0-beta01 androidx.collection:collection-iosarm64:1.5.0-beta01 androidx.collection:collection-iossimulatorarm64:1.5.0-beta01 androidx.collection:collection-iosx64:1.5.0-beta01 androidx.collection:collection-js:1.5.0-beta01 androidx.collection:collection-jvm:1.5.0-beta01 androidx.collection:collection-ktx:1.5.0-beta01 androidx.collection:collection-linuxarm64:1.5.0-beta01 androidx.collection:collection-linuxx64:1.5.0-beta01 androidx.collection:collection-macosarm64:1.5.0-beta01 androidx.collection:collection-macosx64:1.5.0-beta01 androidx.collection:collection-mingwx64:1.5.0-beta01 androidx.collection:collection-tvosarm64:1.5.0-beta01 androidx.collection:collection-tvossimulatorarm64:1.5.0-beta01 androidx.collection:collection-tvosx64:1.5.0-beta01 androidx.collection:collection-wasm-js:1.5.0-beta01 androidx.collection:collection-watchosarm32:1.5.0-beta01 androidx.collection:collection-watchosarm64:1.5.0-beta01 androidx.collection:collection-watchosdevicearm64:1.5.0-beta01 androidx.collection:collection-watchossimulatorarm64:1.5.0-beta01 androidx.collection:collection-watchosx64:1.5.0-beta01 androidx.compose:compose-bom:2024.12.01 androidx.compose:compose-bom-alpha:2024.12.01 androidx.compose:compose-bom-beta:2024.12.01 androidx.compose.animation:animation:1.7.6 androidx.compose.animation:animation:1.8.0-alpha07 androidx.compose.animation:animation-android:1.7.6 androidx.compose.animation:animation-android:1.8.0-alpha07 androidx.compose.animation:animation-core:1.7.6 androidx.compose.animation:animation-core:1.8.0-alpha07 androidx.compose.animation:animation-core-android:1.7.6 androidx.compose.animation:animation-core-android:1.8.0-alpha07 androidx.compose.animation:animation-core-jvmstubs:1.7.6 androidx.compose.animation:animation-core-jvmstubs:1.8.0-alpha07 androidx.compose.animation:animation-core-lint:1.8.0-alpha07 androidx.compose.animation:animation-core-linuxx64stubs:1.7.6 androidx.compose.animation:animation-core-linuxx64stubs:1.8.0-alpha07 androidx.compose.animation:animation-graphics:1.7.6 androidx.compose.animation:animation-graphics:1.8.0-alpha07 androidx.compose.animation:animation-graphics-android:1.7.6 androidx.compose.animation:animation-graphics-android:1.8.0-alpha07 androidx.compose.animation:animation-graphics-jvmstubs:1.7.6 androidx.compose.animation:animation-graphics-jvmstubs:1.8.0-alpha07 androidx.compose.animation:animation-graphics-linuxx64stubs:1.7.6 androidx.compose.animation:animation-graphics-linuxx64stubs:1.8.0-alpha07 androidx.compose.animation:animation-jvmstubs:1.7.6 androidx.compose.animation:animation-jvmstubs:1.8.0-alpha07 androidx.compose.animation:animation-lint:1.8.0-alpha07 androidx.compose.animation:animation-linuxx64stubs:1.7.6 androidx.compose.animation:animation-linuxx64stubs:1.8.0-alpha07 androidx.compose.animation:animation-tooling-internal:1.7.6 androidx.compose.animation:animation-tooling-internal:1.8.0-alpha07 androidx.compose.foundation:foundation:1.7.6 androidx.compose.foundation:foundation:1.8.0-alpha07 androidx.compose.foundation:foundation-android:1.7.6 androidx.compose.foundation:foundation-android:1.8.0-alpha07 androidx.compose.foundation:foundation-jvmstubs:1.7.6 androidx.compose.foundation:foundation-jvmstubs:1.8.0-alpha07 androidx.compose.foundation:foundation-layout:1.7.6 androidx.compose.foundation:foundation-layout:1.8.0-alpha07 androidx.compose.foundation:foundation-layout-android:1.7.6 androidx.compose.foundation:foundation-layout-android:1.8.0-alpha07 androidx.compose.foundation:foundation-layout-jvmstubs:1.7.6 androidx.compose.foundation:foundation-layout-jvmstubs:1.8.0-alpha07 androidx.compose.foundation:foundation-layout-linuxx64stubs:1.7.6 androidx.compose.foundation:foundation-layout-linuxx64stubs:1.8.0-alpha07 androidx.compose.foundation:foundation-lint:1.8.0-alpha07 androidx.compose.foundation:foundation-linuxx64stubs:1.7.6 androidx.compose.foundation:foundation-linuxx64stubs:1.8.0-alpha07 androidx.compose.material:material:1.7.6 androidx.compose.material:material:1.8.0-alpha07 androidx.compose.runtime:runtime:1.7.6 androidx.compose.runtime:runtime:1.8.0-alpha07 androidx.compose.runtime:runtime-android:1.7.6 androidx.compose.runtime:runtime-android:1.8.0-alpha07 androidx.compose.runtime:runtime-jvmstubs:1.7.6 androidx.compose.runtime:runtime-jvmstubs:1.8.0-alpha07 androidx.compose.runtime:runtime-lint:1.8.0-alpha07 androidx.compose.runtime:runtime-linuxx64stubs:1.7.6 androidx.compose.runtime:runtime-linuxx64stubs:1.8.0-alpha07 androidx.compose.runtime:runtime-livedata:1.7.6 androidx.compose.runtime:runtime-livedata:1.8.0-alpha07 androidx.compose.runtime:runtime-rxjava2:1.7.6 androidx.compose.runtime:runtime-rxjava2:1.8.0-alpha07 androidx.compose.runtime:runtime-rxjava3:1.7.6 androidx.compose.runtime:runtime-rxjava3:1.8.0-alpha07 androidx.compose.runtime:runtime-saveable:1.7.6 androidx.compose.runtime:runtime-saveable:1.8.0-alpha07 androidx.compose.runtime:runtime-saveable-android:1.7.6 androidx.compose.runtime:runtime-saveable-android:1.8.0-alpha07 androidx.compose.runtime:runtime-saveable-jvmstubs:1.7.6 androidx.compose.runtime:runtime-saveable-jvmstubs:1.8.0-alpha07 androidx.compose.runtime:runtime-saveable-lint:1.8.0-alpha07 androidx.compose.runtime:runtime-saveable-linuxx64stubs:1.7.6 androidx.compose.runtime:runtime-saveable-linuxx64stubs:1.8.0-alpha07 androidx.compose.runtime:runtime-tracing:1.7.6 androidx.compose.runtime:runtime-tracing:1.8.0-alpha07 androidx.compose.ui:ui:1.7.6 androidx.compose.ui:ui:1.8.0-alpha07 androidx.compose.ui:ui-android:1.7.6 androidx.compose.ui:ui-android:1.8.0-alpha07 androidx.compose.ui:ui-android-stubs:1.7.6 androidx.compose.ui:ui-android-stubs:1.8.0-alpha07 androidx.compose.ui:ui-geometry:1.7.6 androidx.compose.ui:ui-geometry:1.8.0-alpha07 androidx.compose.ui:ui-geometry-android:1.7.6 androidx.compose.ui:ui-geometry-android:1.8.0-alpha07 androidx.compose.ui:ui-geometry-jvmstubs:1.7.6 androidx.compose.ui:ui-geometry-jvmstubs:1.8.0-alpha07 androidx.compose.ui:ui-geometry-linuxx64stubs:1.7.6 androidx.compose.ui:ui-geometry-linuxx64stubs:1.8.0-alpha07 androidx.compose.ui:ui-graphics:1.7.6 androidx.compose.ui:ui-graphics:1.8.0-alpha07 androidx.compose.ui:ui-graphics-android:1.7.6 androidx.compose.ui:ui-graphics-android:1.8.0-alpha07 androidx.compose.ui:ui-graphics-jvmstubs:1.7.6 androidx.compose.ui:ui-graphics-jvmstubs:1.8.0-alpha07 androidx.compose.ui:ui-graphics-lint:1.8.0-alpha07 androidx.compose.ui:ui-graphics-linuxx64stubs:1.7.6 androidx.compose.ui:ui-graphics-linuxx64stubs:1.8.0-alpha07 androidx.compose.ui:ui-jvmstubs:1.7.6 androidx.compose.ui:ui-jvmstubs:1.8.0-alpha07 androidx.compose.ui:ui-lint:1.8.0-alpha07 androidx.compose.ui:ui-linuxx64stubs:1.7.6 androidx.compose.ui:ui-linuxx64stubs:1.8.0-alpha07 androidx.compose.ui:ui-test:1.7.6 androidx.compose.ui:ui-test:1.8.0-alpha07 androidx.compose.ui:ui-test-android:1.7.6 androidx.compose.ui:ui-test-android:1.8.0-alpha07 androidx.compose.ui:ui-test-junit4:1.7.6 androidx.compose.ui:ui-test-junit4:1.8.0-alpha07 androidx.compose.ui:ui-test-junit4-android:1.7.6 androidx.compose.ui:ui-test-junit4-android:1.8.0-alpha07 androidx.compose.ui:ui-test-junit4-jvmstubs:1.7.6 androidx.compose.ui:ui-test-junit4-jvmstubs:1.8.0-alpha07 androidx.compose.ui:ui-test-jvmstubs:1.7.6 androidx.compose.ui:ui-test-jvmstubs:1.8.0-alpha07 androidx.compose.ui:ui-test-linuxx64stubs:1.7.6 androidx.compose.ui:ui-test-linuxx64stubs:1.8.0-alpha07 androidx.compose.ui:ui-test-manifest:1.7.6 androidx.compose.ui:ui-test-manifest:1.8.0-alpha07 androidx.compose.ui:ui-test-manifest-lint:1.8.0-alpha07 androidx.compose.ui:ui-text:1.7.6 androidx.compose.ui:ui-text:1.8.0-alpha07 androidx.compose.ui:ui-text-android:1.7.6 androidx.compose.ui:ui-text-android:1.8.0-alpha07 androidx.compose.ui:ui-text-google-fonts:1.7.6 androidx.compose.ui:ui-text-google-fonts:1.8.0-alpha07 androidx.compose.ui:ui-text-jvmstubs:1.7.6 androidx.compose.ui:ui-text-jvmstubs:1.8.0-alpha07 androidx.compose.ui:ui-text-lint:1.8.0-alpha07 androidx.compose.ui:ui-text-linuxx64stubs:1.7.6 androidx.compose.ui:ui-text-linuxx64stubs:1.8.0-alpha07 androidx.compose.ui:ui-tooling:1.7.6 androidx.compose.ui:ui-tooling:1.8.0-alpha07 androidx.compose.ui:ui-tooling-android:1.7.6 androidx.compose.ui:ui-tooling-android:1.8.0-alpha07 androidx.compose.ui:ui-tooling-data:1.7.6 androidx.compose.ui:ui-tooling-data:1.8.0-alpha07 androidx.compose.ui:ui-tooling-data-android:1.7.6 androidx.compose.ui:ui-tooling-data-android:1.8.0-alpha07 androidx.compose.ui:ui-tooling-data-jvmstubs:1.7.6 androidx.compose.ui:ui-tooling-data-jvmstubs:1.8.0-alpha07 androidx.compose.ui:ui-tooling-jvmstubs:1.7.6 androidx.compose.ui:ui-tooling-jvmstubs:1.8.0-alpha07 androidx.compose.ui:ui-tooling-preview:1.7.6 androidx.compose.ui:ui-tooling-preview:1.8.0-alpha07 androidx.compose.ui:ui-tooling-preview-android:1.7.6 androidx.compose.ui:ui-tooling-preview-android:1.8.0-alpha07 androidx.compose.ui:ui-tooling-preview-jvmstubs:1.7.6 androidx.compose.ui:ui-tooling-preview-jvmstubs:1.8.0-alpha07 androidx.compose.ui:ui-unit:1.7.6 androidx.compose.ui:ui-unit:1.8.0-alpha07 androidx.compose.ui:ui-unit-android:1.7.6 androidx.compose.ui:ui-unit-android:1.8.0-alpha07 androidx.compose.ui:ui-unit-jvmstubs:1.7.6 androidx.compose.ui:ui-unit-jvmstubs:1.8.0-alpha07 androidx.compose.ui:ui-unit-linuxx64stubs:1.7.6 androidx.compose.ui:ui-unit-linuxx64stubs:1.8.0-alpha07 androidx.compose.ui:ui-util:1.7.6 androidx.compose.ui:ui-util:1.8.0-alpha07 androidx.compose.ui:ui-util-android:1.7.6 androidx.compose.ui:ui-util-android:1.8.0-alpha07 androidx.compose.ui:ui-util-jvmstubs:1.7.6 androidx.compose.ui:ui-util-jvmstubs:1.8.0-alpha07 androidx.compose.ui:ui-util-linuxx64stubs:1.7.6 androidx.compose.ui:ui-util-linuxx64stubs:1.8.0-alpha07 androidx.compose.ui:ui-viewbinding:1.7.6 androidx.compose.ui:ui-viewbinding:1.8.0-alpha07 androidx.concurrent:concurrent-futures:1.3.0-alpha01 androidx.concurrent:concurrent-futures-ktx:1.3.0-alpha01 androidx.core:core:1.16.0-alpha01 androidx.core:core-ktx:1.16.0-alpha01 androidx.core:core-telecom:1.0.0-beta01 androidx.core:core-testing:1.16.0-alpha01 androidx.core:core-viewtree:1.0.0-alpha01 androidx.core.uwb:uwb:1.0.0-alpha10 androidx.core.uwb:uwb-rxjava3:1.0.0-alpha10 androidx.gradle:gradle-version-catalog:2024.12.01 androidx.gradle:gradle-version-catalog-alpha:2024.12.01 androidx.gradle:gradle-version-catalog-beta:2024.12.01 androidx.graphics:graphics-shapes:1.1.0-alpha01 androidx.graphics:graphics-shapes-android:1.1.0-alpha01 androidx.graphics:graphics-shapes-desktop:1.1.0-alpha01 androidx.graphics:graphics-shapes-iosarm64:1.1.0-alpha01 androidx.graphics:graphics-shapes-iossimulatorarm64:1.1.0-alpha01 androidx.graphics:graphics-shapes-iosx64:1.1.0-alpha01 androidx.graphics:graphics-shapes-linuxarm64:1.1.0-alpha01 androidx.graphics:graphics-shapes-linuxx64:1.1.0-alpha01 androidx.graphics:graphics-shapes-macosarm64:1.1.0-alpha01 androidx.graphics:graphics-shapes-macosx64:1.1.0-alpha01 androidx.graphics:graphics-shapes-tvosarm64:1.1.0-alpha01 androidx.graphics:graphics-shapes-tvossimulatorarm64:1.1.0-alpha01 androidx.graphics:graphics-shapes-tvosx64:1.1.0-alpha01 androidx.graphics:graphics-shapes-watchosarm32:1.1.0-alpha01 androidx.graphics:graphics-shapes-watchosarm64:1.1.0-alpha01 androidx.graphics:graphics-shapes-watchosdevicearm64:1.1.0-alpha01 androidx.graphics:graphics-shapes-watchossimulatorarm64:1.1.0-alpha01 androidx.graphics:graphics-shapes-watchosx64:1.1.0-alpha01 androidx.health:health-services-client:1.1.0-alpha05 androidx.health:health-services-client-external-protobuf:1.1.0-alpha05 androidx.health:health-services-client-proto:1.1.0-alpha05 androidx.ink:ink-authoring:1.0.0-alpha02 androidx.ink:ink-authoring-android:1.0.0-alpha02 androidx.ink:ink-brush:1.0.0-alpha02 androidx.ink:ink-brush-android:1.0.0-alpha02 androidx.ink:ink-brush-jvm:1.0.0-alpha02 androidx.ink:ink-geometry:1.0.0-alpha02 androidx.ink:ink-geometry-android:1.0.0-alpha02 androidx.ink:ink-geometry-jvm:1.0.0-alpha02 androidx.ink:ink-nativeloader:1.0.0-alpha02 androidx.ink:ink-nativeloader-android:1.0.0-alpha02 androidx.ink:ink-nativeloader-jvm:1.0.0-alpha02 androidx.ink:ink-rendering:1.0.0-alpha02 androidx.ink:ink-rendering-android:1.0.0-alpha02 androidx.ink:ink-strokes:1.0.0-alpha02 androidx.ink:ink-strokes-android:1.0.0-alpha02 androidx.ink:ink-strokes-jvm:1.0.0-alpha02 androidx.lifecycle:lifecycle-common:2.9.0-alpha08 androidx.lifecycle:lifecycle-common-iosarm64:2.9.0-alpha08 androidx.lifecycle:lifecycle-common-iossimulatorarm64:2.9.0-alpha08 androidx.lifecycle:lifecycle-common-iosx64:2.9.0-alpha08 androidx.lifecycle:lifecycle-common-java8:2.9.0-alpha08 androidx.lifecycle:lifecycle-common-jvm:2.9.0-alpha08 androidx.lifecycle:lifecycle-common-linuxarm64:2.9.0-alpha08 androidx.lifecycle:lifecycle-common-linuxx64:2.9.0-alpha08 androidx.lifecycle:lifecycle-common-macosarm64:2.9.0-alpha08 androidx.lifecycle:lifecycle-common-macosx64:2.9.0-alpha08 androidx.lifecycle:lifecycle-compiler:2.9.0-alpha08 androidx.lifecycle:lifecycle-livedata:2.9.0-alpha08 androidx.lifecycle:lifecycle-livedata-core:2.9.0-alpha08 androidx.lifecycle:lifecycle-livedata-core-ktx:2.9.0-alpha08 androidx.lifecycle:lifecycle-livedata-ktx:2.9.0-alpha08 androidx.lifecycle:lifecycle-process:2.9.0-alpha08 androidx.lifecycle:lifecycle-reactivestreams:2.9.0-alpha08 androidx.lifecycle:lifecycle-reactivestreams-ktx:2.9.0-alpha08 androidx.lifecycle:lifecycle-runtime:2.9.0-alpha08 androidx.lifecycle:lifecycle-runtime-android:2.9.0-alpha08 androidx.lifecycle:lifecycle-runtime-compose:2.9.0-alpha08 androidx.lifecycle:lifecycle-runtime-compose-android:2.9.0-alpha08 androidx.lifecycle:lifecycle-runtime-compose-jvmstubs:2.9.0-alpha08 androidx.lifecycle:lifecycle-runtime-compose-linuxx64stubs:2.9.0-alpha08 androidx.lifecycle:lifecycle-runtime-desktop:2.9.0-alpha08 androidx.lifecycle:lifecycle-runtime-iosarm64:2.9.0-alpha08 androidx.lifecycle:lifecycle-runtime-iossimulatorarm64:2.9.0-alpha08 androidx.lifecycle:lifecycle-runtime-iosx64:2.9.0-alpha08 androidx.lifecycle:lifecycle-runtime-ktx:2.9.0-alpha08 androidx.lifecycle:lifecycle-runtime-ktx-android:2.9.0-alpha08 androidx.lifecycle:lifecycle-runtime-linuxarm64:2.9.0-alpha08 androidx.lifecycle:lifecycle-runtime-linuxx64:2.9.0-alpha08 androidx.lifecycle:lifecycle-runtime-macosarm64:2.9.0-alpha08 androidx.lifecycle:lifecycle-runtime-macosx64:2.9.0-alpha08 androidx.lifecycle:lifecycle-runtime-testing:2.9.0-alpha08 androidx.lifecycle:lifecycle-runtime-testing-android:2.9.0-alpha08 androidx.lifecycle:lifecycle-runtime-testing-desktop:2.9.0-alpha08 androidx.lifecycle:lifecycle-runtime-testing-iosarm64:2.9.0-alpha08 androidx.lifecycle:lifecycle-runtime-testing-iossimulatorarm64:2.9.0-alpha08 androidx.lifecycle:lifecycle-runtime-testing-iosx64:2.9.0-alpha08 androidx.lifecycle:lifecycle-runtime-testing-linuxarm64:2.9.0-alpha08 androidx.lifecycle:lifecycle-runtime-testing-linuxx64:2.9.0-alpha08 androidx.lifecycle:lifecycle-runtime-testing-macosarm64:2.9.0-alpha08 androidx.lifecycle:lifecycle-runtime-testing-macosx64:2.9.0-alpha08 androidx.lifecycle:lifecycle-service:2.9.0-alpha08 androidx.lifecycle:lifecycle-viewmodel:2.9.0-alpha08 androidx.lifecycle:lifecycle-viewmodel-android:2.9.0-alpha08 androidx.lifecycle:lifecycle-viewmodel-compose:2.9.0-alpha08 androidx.lifecycle:lifecycle-viewmodel-compose-android:2.9.0-alpha08 androidx.lifecycle:lifecycle-viewmodel-compose-desktop:2.9.0-alpha08 androidx.lifecycle:lifecycle-viewmodel-desktop:2.9.0-alpha08 androidx.lifecycle:lifecycle-viewmodel-iosarm64:2.9.0-alpha08 androidx.lifecycle:lifecycle-viewmodel-iossimulatorarm64:2.9.0-alpha08 androidx.lifecycle:lifecycle-viewmodel-iosx64:2.9.0-alpha08 androidx.lifecycle:lifecycle-viewmodel-ktx:2.9.0-alpha08 androidx.lifecycle:lifecycle-viewmodel-linuxarm64:2.9.0-alpha08 androidx.lifecycle:lifecycle-viewmodel-linuxx64:2.9.0-alpha08 androidx.lifecycle:lifecycle-viewmodel-macosarm64:2.9.0-alpha08 androidx.lifecycle:lifecycle-viewmodel-macosx64:2.9.0-alpha08 androidx.lifecycle:lifecycle-viewmodel-savedstate:2.9.0-alpha08 androidx.lifecycle:lifecycle-viewmodel-savedstate-android:2.9.0-alpha08 androidx.lifecycle:lifecycle-viewmodel-savedstate-desktop:2.9.0-alpha08 androidx.lifecycle:lifecycle-viewmodel-savedstate-iosarm64:2.9.0-alpha08 androidx.lifecycle:lifecycle-viewmodel-savedstate-iossimulatorarm64:2.9.0-alpha08 androidx.lifecycle:lifecycle-viewmodel-savedstate-iosx64:2.9.0-alpha08 androidx.lifecycle:lifecycle-viewmodel-savedstate-linuxarm64:2.9.0-alpha08 androidx.lifecycle:lifecycle-viewmodel-savedstate-linuxx64:2.9.0-alpha08 androidx.lifecycle:lifecycle-viewmodel-savedstate-macosarm64:2.9.0-alpha08 androidx.lifecycle:lifecycle-viewmodel-savedstate-macosx64:2.9.0-alpha08 androidx.lifecycle:lifecycle-viewmodel-testing:2.9.0-alpha08 androidx.lifecycle:lifecycle-viewmodel-testing-android:2.9.0-alpha08 androidx.lifecycle:lifecycle-viewmodel-testing-desktop:2.9.0-alpha08 androidx.lifecycle:lifecycle-viewmodel-testing-iosarm64:2.9.0-alpha08 androidx.lifecycle:lifecycle-viewmodel-testing-iossimulatorarm64:2.9.0-alpha08 androidx.lifecycle:lifecycle-viewmodel-testing-iosx64:2.9.0-alpha08 androidx.lifecycle:lifecycle-viewmodel-testing-linuxarm64:2.9.0-alpha08 androidx.lifecycle:lifecycle-viewmodel-testing-linuxx64:2.9.0-alpha08 androidx.lifecycle:lifecycle-viewmodel-testing-macosarm64:2.9.0-alpha08 androidx.lifecycle:lifecycle-viewmodel-testing-macosx64:2.9.0-alpha08 androidx.lint:lint-gradle:1.0.0-alpha03 androidx.mediarouter:mediarouter:1.8.0-alpha01 androidx.mediarouter:mediarouter-testing:1.8.0-alpha01 androidx.navigation:navigation-common:2.8.5 androidx.navigation:navigation-common:2.9.0-alpha04 androidx.navigation:navigation-common-ktx:2.8.5 androidx.navigation:navigation-common-ktx:2.9.0-alpha04 androidx.navigation:navigation-compose:2.8.5 androidx.navigation:navigation-compose:2.9.0-alpha04 androidx.navigation:navigation-dynamic-features-fragment:2.8.5 androidx.navigation:navigation-dynamic-features-fragment:2.9.0-alpha04 androidx.navigation:navigation-dynamic-features-runtime:2.8.5 androidx.navigation:navigation-dynamic-features-runtime:2.9.0-alpha04 androidx.navigation:navigation-fragment:2.8.5 androidx.navigation:navigation-fragment:2.9.0-alpha04 androidx.navigation:navigation-fragment-compose:2.8.5 androidx.navigation:navigation-fragment-compose:2.9.0-alpha04 androidx.navigation:navigation-fragment-ktx:2.8.5 androidx.navigation:navigation-fragment-ktx:2.9.0-alpha04 androidx.navigation:navigation-runtime:2.8.5 androidx.navigation:navigation-runtime:2.9.0-alpha04 androidx.navigation:navigation-runtime-ktx:2.8.5 androidx.navigation:navigation-runtime-ktx:2.9.0-alpha04 androidx.navigation:navigation-safe-args-generator:2.8.5 androidx.navigation:navigation-safe-args-generator:2.9.0-alpha04 androidx.navigation:navigation-safe-args-gradle-plugin:2.8.5 androidx.navigation:navigation-safe-args-gradle-plugin:2.9.0-alpha04 androidx.navigation:navigation-testing:2.8.5 androidx.navigation:navigation-testing:2.9.0-alpha04 androidx.navigation:navigation-ui:2.8.5 androidx.navigation:navigation-ui:2.9.0-alpha04 androidx.navigation:navigation-ui-ktx:2.8.5 androidx.navigation:navigation-ui-ktx:2.9.0-alpha04 androidx.navigation.safeargs:androidx.navigation.safeargs.gradle.plugin:2.8.5 androidx.navigation.safeargs:androidx.navigation.safeargs.gradle.plugin:2.9.0-alpha04 androidx.navigation.safeargs.kotlin:androidx.navigation.safeargs.kotlin.gradle.plugin:2.8.5 androidx.navigation.safeargs.kotlin:androidx.navigation.safeargs.kotlin.gradle.plugin:2.9.0-alpha04 androidx.paging:paging-common:3.3.5 androidx.paging:paging-common-android:3.3.5 androidx.paging:paging-common-iosarm64:3.3.5 androidx.paging:paging-common-iossimulatorarm64:3.3.5 androidx.paging:paging-common-iosx64:3.3.5 androidx.paging:paging-common-jvm:3.3.5 androidx.paging:paging-common-ktx:3.3.5 androidx.paging:paging-common-linuxarm64:3.3.5 androidx.paging:paging-common-linuxx64:3.3.5 androidx.paging:paging-common-macosarm64:3.3.5 androidx.paging:paging-common-macosx64:3.3.5 androidx.paging:paging-common-tvosarm64:3.3.5 androidx.paging:paging-common-tvossimulatorarm64:3.3.5 androidx.paging:paging-common-tvosx64:3.3.5 androidx.paging:paging-common-watchosarm32:3.3.5 androidx.paging:paging-common-watchosarm64:3.3.5 androidx.paging:paging-common-watchossimulatorarm64:3.3.5 androidx.paging:paging-common-watchosx64:3.3.5 androidx.paging:paging-compose:3.3.5 androidx.paging:paging-compose-android:3.3.5 androidx.paging:paging-guava:3.3.5 androidx.paging:paging-runtime:3.3.5 androidx.paging:paging-runtime-ktx:3.3.5 androidx.paging:paging-rxjava2:3.3.5 androidx.paging:paging-rxjava2-ktx:3.3.5 androidx.paging:paging-rxjava3:3.3.5 androidx.paging:paging-testing:3.3.5 androidx.paging:paging-testing-android:3.3.5 androidx.paging:paging-testing-iosarm64:3.3.5 androidx.paging:paging-testing-iossimulatorarm64:3.3.5 androidx.paging:paging-testing-iosx64:3.3.5 androidx.paging:paging-testing-jvm:3.3.5 androidx.paging:paging-testing-linuxarm64:3.3.5 androidx.paging:paging-testing-linuxx64:3.3.5 androidx.paging:paging-testing-macosarm64:3.3.5 androidx.paging:paging-testing-macosx64:3.3.5 androidx.paging:paging-testing-tvosarm64:3.3.5 androidx.paging:paging-testing-tvossimulatorarm64:3.3.5 androidx.paging:paging-testing-tvosx64:3.3.5 androidx.paging:paging-testing-watchosarm32:3.3.5 androidx.paging:paging-testing-watchosarm64:3.3.5 androidx.paging:paging-testing-watchossimulatorarm64:3.3.5 androidx.paging:paging-testing-watchosx64:3.3.5 androidx.pdf:pdf-document-service:1.0.0-alpha05 androidx.pdf:pdf-viewer:1.0.0-alpha05 androidx.pdf:pdf-viewer-fragment:1.0.0-alpha05 androidx.privacysandbox.sdkruntime:sdkruntime-client:1.0.0-alpha16 androidx.privacysandbox.sdkruntime:sdkruntime-core:1.0.0-alpha16 androidx.privacysandbox.sdkruntime:sdkruntime-provider:1.0.0-alpha16 androidx.privacysandbox.ui:ui-client:1.0.0-alpha12 androidx.privacysandbox.ui:ui-core:1.0.0-alpha12 androidx.privacysandbox.ui:ui-provider:1.0.0-alpha12 androidx.room:androidx.room.gradle.plugin:2.7.0-alpha12 androidx.room:room-common:2.7.0-alpha12 androidx.room:room-common-iosarm64:2.7.0-alpha12 androidx.room:room-common-iossimulatorarm64:2.7.0-alpha12 androidx.room:room-common-iosx64:2.7.0-alpha12 androidx.room:room-common-jvm:2.7.0-alpha12 androidx.room:room-common-linuxarm64:2.7.0-alpha12 androidx.room:room-common-linuxx64:2.7.0-alpha12 androidx.room:room-common-macosarm64:2.7.0-alpha12 androidx.room:room-common-macosx64:2.7.0-alpha12 androidx.room:room-compiler:2.7.0-alpha12 androidx.room:room-compiler-processing:2.7.0-alpha12 androidx.room:room-compiler-processing-testing:2.7.0-alpha12 androidx.room:room-external-antlr:2.7.0-alpha12 androidx.room:room-gradle-plugin:2.7.0-alpha12 androidx.room:room-guava:2.7.0-alpha12 androidx.room:room-ktx:2.7.0-alpha12 androidx.room:room-migration:2.7.0-alpha12 androidx.room:room-migration-iosarm64:2.7.0-alpha12 androidx.room:room-migration-iossimulatorarm64:2.7.0-alpha12 androidx.room:room-migration-iosx64:2.7.0-alpha12 androidx.room:room-migration-jvm:2.7.0-alpha12 androidx.room:room-migration-linuxarm64:2.7.0-alpha12 androidx.room:room-migration-linuxx64:2.7.0-alpha12 androidx.room:room-migration-macosarm64:2.7.0-alpha12 androidx.room:room-migration-macosx64:2.7.0-alpha12 androidx.room:room-paging:2.7.0-alpha12 androidx.room:room-paging-android:2.7.0-alpha12 androidx.room:room-paging-guava:2.7.0-alpha12 androidx.room:room-paging-iosarm64:2.7.0-alpha12 androidx.room:room-paging-iossimulatorarm64:2.7.0-alpha12 androidx.room:room-paging-iosx64:2.7.0-alpha12 androidx.room:room-paging-jvm:2.7.0-alpha12 androidx.room:room-paging-linuxarm64:2.7.0-alpha12 androidx.room:room-paging-linuxx64:2.7.0-alpha12 androidx.room:room-paging-macosarm64:2.7.0-alpha12 androidx.room:room-paging-macosx64:2.7.0-alpha12 androidx.room:room-paging-rxjava2:2.7.0-alpha12 androidx.room:room-paging-rxjava3:2.7.0-alpha12 androidx.room:room-runtime:2.7.0-alpha12 androidx.room:room-runtime-android:2.7.0-alpha12 androidx.room:room-runtime-iosarm64:2.7.0-alpha12 androidx.room:room-runtime-iossimulatorarm64:2.7.0-alpha12 androidx.room:room-runtime-iosx64:2.7.0-alpha12 androidx.room:room-runtime-jvm:2.7.0-alpha12 androidx.room:room-runtime-linuxarm64:2.7.0-alpha12 androidx.room:room-runtime-linuxx64:2.7.0-alpha12 androidx.room:room-runtime-macosarm64:2.7.0-alpha12 androidx.room:room-runtime-macosx64:2.7.0-alpha12 androidx.room:room-rxjava2:2.7.0-alpha12 androidx.room:room-rxjava3:2.7.0-alpha12 androidx.room:room-testing:2.7.0-alpha12 androidx.room:room-testing-android:2.7.0-alpha12 androidx.room:room-testing-iosarm64:2.7.0-alpha12 androidx.room:room-testing-iossimulatorarm64:2.7.0-alpha12 androidx.room:room-testing-iosx64:2.7.0-alpha12 androidx.room:room-testing-jvm:2.7.0-alpha12 androidx.room:room-testing-linuxarm64:2.7.0-alpha12 androidx.room:room-testing-linuxx64:2.7.0-alpha12 androidx.room:room-testing-macosarm64:2.7.0-alpha12 androidx.room:room-testing-macosx64:2.7.0-alpha12 androidx.savedstate:savedstate:1.3.0-alpha06 androidx.savedstate:savedstate-android:1.3.0-alpha06 androidx.savedstate:savedstate-compose:1.3.0-alpha06 androidx.savedstate:savedstate-compose-android:1.3.0-alpha06 androidx.savedstate:savedstate-compose-jvmstubs:1.3.0-alpha06 androidx.savedstate:savedstate-compose-linuxx64stubs:1.3.0-alpha06 androidx.savedstate:savedstate-desktop:1.3.0-alpha06 androidx.savedstate:savedstate-iosarm64:1.3.0-alpha06 androidx.savedstate:savedstate-iossimulatorarm64:1.3.0-alpha06 androidx.savedstate:savedstate-iosx64:1.3.0-alpha06 androidx.savedstate:savedstate-ktx:1.3.0-alpha06 androidx.savedstate:savedstate-linuxarm64:1.3.0-alpha06 androidx.savedstate:savedstate-linuxx64:1.3.0-alpha06 androidx.savedstate:savedstate-macosarm64:1.3.0-alpha06 androidx.savedstate:savedstate-macosx64:1.3.0-alpha06 androidx.sqlite:sqlite:2.5.0-alpha12 androidx.sqlite:sqlite-android:2.5.0-alpha12 androidx.sqlite:sqlite-bundled:2.5.0-alpha12 androidx.sqlite:sqlite-bundled-android:2.5.0-alpha12 androidx.sqlite:sqlite-bundled-iosarm64:2.5.0-alpha12 androidx.sqlite:sqlite-bundled-iossimulatorarm64:2.5.0-alpha12 androidx.sqlite:sqlite-bundled-iosx64:2.5.0-alpha12 androidx.sqlite:sqlite-bundled-jvm:2.5.0-alpha12 androidx.sqlite:sqlite-bundled-linuxarm64:2.5.0-alpha12 androidx.sqlite:sqlite-bundled-linuxx64:2.5.0-alpha12 androidx.sqlite:sqlite-bundled-macosarm64:2.5.0-alpha12 androidx.sqlite:sqlite-bundled-macosx64:2.5.0-alpha12 androidx.sqlite:sqlite-framework:2.5.0-alpha12 androidx.sqlite:sqlite-framework-android:2.5.0-alpha12 androidx.sqlite:sqlite-framework-iosarm64:2.5.0-alpha12 androidx.sqlite:sqlite-framework-iossimulatorarm64:2.5.0-alpha12 androidx.sqlite:sqlite-framework-iosx64:2.5.0-alpha12 androidx.sqlite:sqlite-framework-linuxarm64:2.5.0-alpha12 androidx.sqlite:sqlite-framework-linuxx64:2.5.0-alpha12 androidx.sqlite:sqlite-framework-macosarm64:2.5.0-alpha12 androidx.sqlite:sqlite-framework-macosx64:2.5.0-alpha12 androidx.sqlite:sqlite-iosarm64:2.5.0-alpha12 androidx.sqlite:sqlite-iossimulatorarm64:2.5.0-alpha12 androidx.sqlite:sqlite-iosx64:2.5.0-alpha12 androidx.sqlite:sqlite-jvm:2.5.0-alpha12 androidx.sqlite:sqlite-ktx:2.5.0-alpha12 androidx.sqlite:sqlite-linuxarm64:2.5.0-alpha12 androidx.sqlite:sqlite-linuxx64:2.5.0-alpha12 androidx.sqlite:sqlite-macosarm64:2.5.0-alpha12 androidx.sqlite:sqlite-macosx64:2.5.0-alpha12 androidx.transition:transition:1.6.0-alpha01 androidx.transition:transition-ktx:1.6.0-alpha01 androidx.viewpager:viewpager:1.1.0 androidx.wear:wear-phone-interactions:1.1.0-alpha05 androidx.wear:wear-remote-interactions:1.1.0 androidx.wear.compose:compose-foundation:1.5.0-alpha07 androidx.wear.compose:compose-material:1.5.0-alpha07 androidx.wear.compose:compose-material-core:1.5.0-alpha07 androidx.wear.compose:compose-material3:1.0.0-alpha30 androidx.wear.compose:compose-navigation:1.5.0-alpha07 androidx.wear.compose:compose-ui-tooling:1.5.0-alpha07 androidx.wear.protolayout:protolayout:1.3.0-alpha05 androidx.wear.protolayout:protolayout-expression:1.3.0-alpha05 androidx.wear.protolayout:protolayout-expression-pipeline:1.3.0-alpha05 androidx.wear.protolayout:protolayout-external-protobuf:1.3.0-alpha05 androidx.wear.protolayout:protolayout-material:1.3.0-alpha05 androidx.wear.protolayout:protolayout-material-core:1.3.0-alpha05 androidx.wear.protolayout:protolayout-material3:1.3.0-alpha05 androidx.wear.protolayout:protolayout-proto:1.3.0-alpha05 androidx.wear.protolayout:protolayout-renderer:1.3.0-alpha05 androidx.wear.protolayout:protolayout-testing:1.3.0-alpha05 androidx.wear.tiles:tiles:1.5.0-alpha05 androidx.wear.tiles:tiles-material:1.5.0-alpha05 androidx.wear.tiles:tiles-proto:1.5.0-alpha05 androidx.wear.tiles:tiles-renderer:1.5.0-alpha05 androidx.wear.tiles:tiles-testing:1.5.0-alpha05 androidx.wear.tiles:tiles-tooling:1.5.0-alpha05 androidx.wear.tiles:tiles-tooling-preview:1.5.0-alpha05 androidx.webkit:webkit:1.13.0-alpha02November 27, 2024
New Jetpack Artifacts: 27 Nov 2024
This week, we got the 1.5.0 stable release of Media3:
androidx.media3:media3-cast:1.5.0 androidx.media3:media3-common:1.5.0 androidx.media3:media3-common-ktx:1.5.0 androidx.media3:media3-container:1.5.0 androidx.media3:media3-database:1.5.0 androidx.media3:media3-datasource:1.5.0 androidx.media3:media3-datasource-cronet:1.5.0 androidx.media3:media3-datasource-okhttp:1.5.0 androidx.media3:media3-datasource-rtmp:1.5.0 androidx.media3:media3-decoder:1.5.0 androidx.media3:media3-effect:1.5.0 androidx.media3:media3-exoplayer:1.5.0 androidx.media3:media3-exoplayer-dash:1.5.0 androidx.media3:media3-exoplayer-hls:1.5.0 androidx.media3:media3-exoplayer-ima:1.5.0 androidx.media3:media3-exoplayer-midi:1.5.0 androidx.media3:media3-exoplayer-rtsp:1.5.0 androidx.media3:media3-exoplayer-smoothstreaming:1.5.0 androidx.media3:media3-exoplayer-workmanager:1.5.0 androidx.media3:media3-extractor:1.5.0 androidx.media3:media3-muxer:1.5.0 androidx.media3:media3-session:1.5.0 androidx.media3:media3-test-utils:1.5.0 androidx.media3:media3-test-utils-robolectric:1.5.0 androidx.media3:media3-transformer:1.5.0 androidx.media3:media3-ui:1.5.0 androidx.media3:media3-ui-leanback:1.5.0November 20, 2024
New Jetpack Artifacts: 20 Nov 2024
This week is for Media3 and a bit of Test:
androidx.media3:media3-cast:1.5.0-rc01 androidx.media3:media3-cast:1.5.0-rc02 androidx.media3:media3-common:1.5.0-rc01 androidx.media3:media3-common:1.5.0-rc02 androidx.media3:media3-common-ktx:1.5.0-rc01 androidx.media3:media3-common-ktx:1.5.0-rc02 androidx.media3:media3-container:1.5.0-rc01 androidx.media3:media3-container:1.5.0-rc02 androidx.media3:media3-database:1.5.0-rc01 androidx.media3:media3-database:1.5.0-rc02 androidx.media3:media3-datasource:1.5.0-rc01 androidx.media3:media3-datasource:1.5.0-rc02 androidx.media3:media3-datasource-cronet:1.5.0-rc01 androidx.media3:media3-datasource-cronet:1.5.0-rc02 androidx.media3:media3-datasource-okhttp:1.5.0-rc01 androidx.media3:media3-datasource-okhttp:1.5.0-rc02 androidx.media3:media3-datasource-rtmp:1.5.0-rc01 androidx.media3:media3-datasource-rtmp:1.5.0-rc02 androidx.media3:media3-decoder:1.5.0-rc01 androidx.media3:media3-decoder:1.5.0-rc02 androidx.media3:media3-effect:1.5.0-rc01 androidx.media3:media3-effect:1.5.0-rc02 androidx.media3:media3-exoplayer:1.5.0-rc01 androidx.media3:media3-exoplayer:1.5.0-rc02 androidx.media3:media3-exoplayer-dash:1.5.0-rc01 androidx.media3:media3-exoplayer-dash:1.5.0-rc02 androidx.media3:media3-exoplayer-hls:1.5.0-rc01 androidx.media3:media3-exoplayer-hls:1.5.0-rc02 androidx.media3:media3-exoplayer-ima:1.5.0-rc01 androidx.media3:media3-exoplayer-ima:1.5.0-rc02 androidx.media3:media3-exoplayer-midi:1.5.0-rc01 androidx.media3:media3-exoplayer-midi:1.5.0-rc02 androidx.media3:media3-exoplayer-rtsp:1.5.0-rc01 androidx.media3:media3-exoplayer-rtsp:1.5.0-rc02 androidx.media3:media3-exoplayer-smoothstreaming:1.5.0-rc01 androidx.media3:media3-exoplayer-smoothstreaming:1.5.0-rc02 androidx.media3:media3-exoplayer-workmanager:1.5.0-rc01 androidx.media3:media3-exoplayer-workmanager:1.5.0-rc02 androidx.media3:media3-extractor:1.5.0-rc01 androidx.media3:media3-extractor:1.5.0-rc02 androidx.media3:media3-muxer:1.5.0-rc01 androidx.media3:media3-muxer:1.5.0-rc02 androidx.media3:media3-session:1.5.0-rc01 androidx.media3:media3-session:1.5.0-rc02 androidx.media3:media3-test-utils:1.5.0-rc01 androidx.media3:media3-test-utils:1.5.0-rc02 androidx.media3:media3-test-utils-robolectric:1.5.0-rc01 androidx.media3:media3-test-utils-robolectric:1.5.0-rc02 androidx.media3:media3-transformer:1.5.0-rc01 androidx.media3:media3-transformer:1.5.0-rc02 androidx.media3:media3-ui:1.5.0-rc01 androidx.media3:media3-ui:1.5.0-rc02 androidx.media3:media3-ui-leanback:1.5.0-rc01 androidx.media3:media3-ui-leanback:1.5.0-rc02 androidx.test:orchestrator:1.6.0-alpha01 androidx.test.services:storage:1.6.0-alpha01 androidx.test.services:test-services:1.6.0-alpha01App Functions and the Android 16 DP1 Musings
The good news is: the API differences report that was broken whenI wrote about Android 16 DP1 yesterdayhas been repaired! As a result, we get access to insights like this fromthe docs for AppFunctionService:
Abstract base class to provide app functions to the system
���and this in the docs for AppFunctionManager:
Provides app functions related functionalities.
App function is a specific piece of functionality that an app offers to the system. These functionalities can be integrated into various system features.
����
While the rest of the documentation on ���app functions��� is sparse, some of my guesses were accurate.App functions are tied into app search, as the object representinga specific function requestpoints to a GenericDocument from the app search area. And, developers should be able to createsubclasses of AppFunctionService to handle app function requests. This is a bound service,defended by BIND_APP_FUNCTION_SERVICE so that only a system process can bind to it.
There is mention of an ���App Functions SDK���:
In most cases this identifier should come from the ID automatically generated by the AppFunctions SDK
There is also mention of EXECUTE_APP_FUNCTIONS_TRUSTED and EXECUTE_APP_FUNCTIONS that are notin the Android SDK yet. With luck, these point to future areas with more information about whatthis is all about.
November 19, 2024
Random Musings on the Android 16 Developer Preview 1
Wow, it���s February again already?
*checks calendar*
No, Google is just changing the timeframe for major Android releases.
As is outlined in the Android 16 DP1 blog post,Google is moving to having a major and a minor release each calendar year. The major releasehas been moved earlier in the year to better align with device manufacturer timetables.The minor release, planned for late 2025, ���will include new developer APIs��� but should not���include planned behavior changes that could affect apps���.
So, What���s In the API Differences Report?Fans of these ���random musings��� posts know that I pore through the API differences report to helpprovide detail beyond what the release notes state and to identify other changes that Googleis not talking about yet.
That is not working out so well this time around.
Simply put, the API differences reportis largely broken. Links lead to 404s or call out API additions that do not show up in the actualdocumentation. It could be that they changed the scope of DP1 and failed to regenerate the APIdifferences report. Or, it could be that the API differences report is correct and they failedto publish the documentation updates. My guess is that it is the former, given the mix of whatis working and what is not.
I may publish a follow-on post with more if the API differences report starts behaving more normally.
OK, What Can You Tell Us?The biggest area of change surrounds the photo picker. As is noted in the release notes:
The developer preview includes new APIs that enable apps to embed the photo picker into their view hierarchy. This allows it to feel like a more integrated part of the app while still leveraging the process isolation that allows users to select media without the app needing overly broad permissions.
What is interesting to me is that they are using SurfaceControlViewHost for this.The actual UI will be rendered by a separate process, but you can control where that UI getsrendered on your screen, wrap it in your own UI, etc. Google debuted this systemfour years ago,and I have been waiting for it to get put to use ��� it might be applied elsewhere, but thisis the first that I recall seeing.
The other big area of possible change is something called ���app functions���. This is a bit of a ���negative space��� analysis, as this is the biggest area that is missing from the API differencesreport. For example, there is a new android.app.appfunctions package���and there is no documentation for it,despite a link to that page from the API differences report. But, what I can infer is:
It is tied to app search. There is a similar ���new with missing docs��� android.app.appsearch.functionspackage, and AppSearchManager will have a new getAppFunctionManager() method.
There is a new system service, probably AppFunctionManager, tied toanother system service name.
It probably involves developers creating a custom bound service, as there will bea new BIND_APP_FUNCTION_SERVICE permission.Those BIND_ permissions allow developers to defend a service, ensuring that only core OS processescan bind to them, not arbitrary other clients.
Given those two, I���ll guess that the app search functionality will gain some sort of ���quick actions���UI, where developers can publish operations (���app functions���) that can be performed on search results for theirapp. What would be even more interesting is if developers could offer actions on any search results.
Is There Much Else of Note?The release notes andblog postmention changes to Health Connect and Privacy Sandbox. If you use either of those, you may wantto investigate further.
Beyond that:
The BatteryManager broadcasts may be getting a new EXTRA_CAPACITY_LEVEL extra,perhaps tied to battery health
A bunch of FingerprintManager constants are supposedly deprecated,but, then again, that whole class is deprecated, so ��������
Little else seems like it has changed in areas that might be commonly used. Ad Services mightqualify, but I have never used it, so I cannot really cover it here.
That���s It?Even if we assume that the broken documentation points to changes, this is a surprisingly smallmajor release. Since there is only one more developer preview, and API changes should start fadingout after a Beta 1 release, Android 16 might be a bit sparse in terms of developer-facing changes.Since they had ~3 months chopped off the development schedule, this seems reasonable. It may be thatDP2 will turn out to be much larger.
For user-facing changes, as always, pay attention to Mishaal Rahman,who does excellent work covering those!
November 13, 2024
New Jetpack Artifacts: 13 Nov 2024
This time, we got a dozen new artifacts, mostly for Lint rules:
androidx.collection:collection-js androidx.collection:collection-wasm-js androidx.compose.animation:animation-core-lint androidx.compose.animation:animation-lint androidx.compose.material3:material3-lint androidx.compose.foundation:foundation-lint androidx.compose.runtime:runtime-lint androidx.compose.runtime:runtime-saveable-lint androidx.compose.ui:ui-graphics-lint androidx.compose.ui:ui-lint androidx.compose.ui:ui-test-manifest-lint androidx.compose.ui:ui-text-lintOverall, here are the new artifact versions:
androidx.activity:activity:1.10.0-beta01 androidx.activity:activity-compose:1.10.0-beta01 androidx.activity:activity-ktx:1.10.0-beta01 androidx.baselineprofile:androidx.baselineprofile.gradle.plugin:1.4.0-alpha05 androidx.baselineprofile.apptarget:androidx.baselineprofile.apptarget.gradle.plugin:1.4.0-alpha05 androidx.baselineprofile.consumer:androidx.baselineprofile.consumer.gradle.plugin:1.4.0-alpha05 androidx.baselineprofile.producer:androidx.baselineprofile.producer.gradle.plugin:1.4.0-alpha05 androidx.benchmark:androidx.benchmark.gradle.plugin:1.4.0-alpha05 androidx.benchmark:benchmark-baseline-profile-gradle-plugin:1.4.0-alpha05 androidx.benchmark:benchmark-common:1.4.0-alpha05 androidx.benchmark:benchmark-gradle-plugin:1.4.0-alpha05 androidx.benchmark:benchmark-junit4:1.4.0-alpha05 androidx.benchmark:benchmark-macro:1.4.0-alpha05 androidx.benchmark:benchmark-macro-junit4:1.4.0-alpha05 androidx.car.app:app:1.7.0-beta03 androidx.car.app:app-automotive:1.7.0-beta03 androidx.car.app:app-projected:1.7.0-beta03 androidx.car.app:app-testing:1.7.0-beta03 androidx.collection:collection:1.5.0-alpha06 androidx.collection:collection-iosarm64:1.5.0-alpha06 androidx.collection:collection-iossimulatorarm64:1.5.0-alpha06 androidx.collection:collection-iosx64:1.5.0-alpha06 androidx.collection:collection-js:1.5.0-alpha06 androidx.collection:collection-jvm:1.5.0-alpha06 androidx.collection:collection-ktx:1.5.0-alpha06 androidx.collection:collection-linuxarm64:1.5.0-alpha06 androidx.collection:collection-linuxx64:1.5.0-alpha06 androidx.collection:collection-macosarm64:1.5.0-alpha06 androidx.collection:collection-macosx64:1.5.0-alpha06 androidx.collection:collection-mingwx64:1.5.0-alpha06 androidx.collection:collection-tvosarm64:1.5.0-alpha06 androidx.collection:collection-tvossimulatorarm64:1.5.0-alpha06 androidx.collection:collection-tvosx64:1.5.0-alpha06 androidx.collection:collection-wasm-js:1.5.0-alpha06 androidx.collection:collection-watchosarm32:1.5.0-alpha06 androidx.collection:collection-watchosarm64:1.5.0-alpha06 androidx.collection:collection-watchosdevicearm64:1.5.0-alpha06 androidx.collection:collection-watchossimulatorarm64:1.5.0-alpha06 androidx.collection:collection-watchosx64:1.5.0-alpha06 androidx.compose:compose-bom:2024.11.00 androidx.compose:compose-bom-alpha:2024.11.00 androidx.compose:compose-bom-beta:2024.11.00 androidx.compose.animation:animation:1.8.0-alpha06 androidx.compose.animation:animation-android:1.8.0-alpha06 androidx.compose.animation:animation-core:1.8.0-alpha06 androidx.compose.animation:animation-core-android:1.8.0-alpha06 androidx.compose.animation:animation-core-jvmstubs:1.8.0-alpha06 androidx.compose.animation:animation-core-lint:1.8.0-alpha06 androidx.compose.animation:animation-core-linuxx64stubs:1.8.0-alpha06 androidx.compose.animation:animation-graphics:1.8.0-alpha06 androidx.compose.animation:animation-graphics-android:1.8.0-alpha06 androidx.compose.animation:animation-graphics-jvmstubs:1.8.0-alpha06 androidx.compose.animation:animation-graphics-linuxx64stubs:1.8.0-alpha06 androidx.compose.animation:animation-jvmstubs:1.8.0-alpha06 androidx.compose.animation:animation-lint:1.8.0-alpha06 androidx.compose.animation:animation-linuxx64stubs:1.8.0-alpha06 androidx.compose.animation:animation-tooling-internal:1.8.0-alpha06 androidx.compose.foundation:foundation:1.8.0-alpha06 androidx.compose.foundation:foundation-android:1.8.0-alpha06 androidx.compose.foundation:foundation-jvmstubs:1.8.0-alpha06 androidx.compose.foundation:foundation-layout:1.8.0-alpha06 androidx.compose.foundation:foundation-layout-android:1.8.0-alpha06 androidx.compose.foundation:foundation-layout-jvmstubs:1.8.0-alpha06 androidx.compose.foundation:foundation-layout-linuxx64stubs:1.8.0-alpha06 androidx.compose.foundation:foundation-lint:1.8.0-alpha06 androidx.compose.foundation:foundation-linuxx64stubs:1.8.0-alpha06 androidx.compose.material:material:1.8.0-alpha06 androidx.compose.material3:material3:1.4.0-alpha04 androidx.compose.material3:material3-adaptive-navigation-suite:1.4.0-alpha04 androidx.compose.material3:material3-adaptive-navigation-suite-android:1.4.0-alpha04 androidx.compose.material3:material3-adaptive-navigation-suite-jvmstubs:1.4.0-alpha04 androidx.compose.material3:material3-android:1.4.0-alpha04 androidx.compose.material3:material3-jvmstubs:1.4.0-alpha04 androidx.compose.material3:material3-lint:1.4.0-alpha04 androidx.compose.material3:material3-linuxx64stubs:1.4.0-alpha04 androidx.compose.material3:material3-window-size-class:1.4.0-alpha04 androidx.compose.material3:material3-window-size-class-android:1.4.0-alpha04 androidx.compose.material3:material3-window-size-class-jvmstubs:1.4.0-alpha04 androidx.compose.material3:material3-window-size-class-linuxx64stubs:1.4.0-alpha04 androidx.compose.material3.adaptive:adaptive:1.1.0-alpha07 androidx.compose.material3.adaptive:adaptive-android:1.1.0-alpha07 androidx.compose.material3.adaptive:adaptive-jvmstubs:1.1.0-alpha07 androidx.compose.material3.adaptive:adaptive-layout:1.1.0-alpha07 androidx.compose.material3.adaptive:adaptive-layout-android:1.1.0-alpha07 androidx.compose.material3.adaptive:adaptive-layout-jvmstubs:1.1.0-alpha07 androidx.compose.material3.adaptive:adaptive-navigation:1.1.0-alpha07 androidx.compose.material3.adaptive:adaptive-navigation-android:1.1.0-alpha07 androidx.compose.material3.adaptive:adaptive-navigation-jvmstubs:1.1.0-alpha07 androidx.compose.runtime:runtime:1.8.0-alpha06 androidx.compose.runtime:runtime-android:1.8.0-alpha06 androidx.compose.runtime:runtime-jvmstubs:1.8.0-alpha06 androidx.compose.runtime:runtime-lint:1.8.0-alpha06 androidx.compose.runtime:runtime-linuxx64stubs:1.8.0-alpha06 androidx.compose.runtime:runtime-livedata:1.8.0-alpha06 androidx.compose.runtime:runtime-rxjava2:1.8.0-alpha06 androidx.compose.runtime:runtime-rxjava3:1.8.0-alpha06 androidx.compose.runtime:runtime-saveable:1.8.0-alpha06 androidx.compose.runtime:runtime-saveable-android:1.8.0-alpha06 androidx.compose.runtime:runtime-saveable-jvmstubs:1.8.0-alpha06 androidx.compose.runtime:runtime-saveable-lint:1.8.0-alpha06 androidx.compose.runtime:runtime-saveable-linuxx64stubs:1.8.0-alpha06 androidx.compose.runtime:runtime-tracing:1.8.0-alpha06 androidx.compose.ui:ui:1.8.0-alpha06 androidx.compose.ui:ui-android:1.8.0-alpha06 androidx.compose.ui:ui-android-stubs:1.8.0-alpha06 androidx.compose.ui:ui-geometry:1.8.0-alpha06 androidx.compose.ui:ui-geometry-android:1.8.0-alpha06 androidx.compose.ui:ui-geometry-jvmstubs:1.8.0-alpha06 androidx.compose.ui:ui-geometry-linuxx64stubs:1.8.0-alpha06 androidx.compose.ui:ui-graphics:1.8.0-alpha06 androidx.compose.ui:ui-graphics-android:1.8.0-alpha06 androidx.compose.ui:ui-graphics-jvmstubs:1.8.0-alpha06 androidx.compose.ui:ui-graphics-lint:1.8.0-alpha06 androidx.compose.ui:ui-graphics-linuxx64stubs:1.8.0-alpha06 androidx.compose.ui:ui-jvmstubs:1.8.0-alpha06 androidx.compose.ui:ui-lint:1.8.0-alpha06 androidx.compose.ui:ui-linuxx64stubs:1.8.0-alpha06 androidx.compose.ui:ui-test:1.8.0-alpha06 androidx.compose.ui:ui-test-android:1.8.0-alpha06 androidx.compose.ui:ui-test-junit4:1.8.0-alpha06 androidx.compose.ui:ui-test-junit4-android:1.8.0-alpha06 androidx.compose.ui:ui-test-junit4-jvmstubs:1.8.0-alpha06 androidx.compose.ui:ui-test-jvmstubs:1.8.0-alpha06 androidx.compose.ui:ui-test-linuxx64stubs:1.8.0-alpha06 androidx.compose.ui:ui-test-manifest:1.8.0-alpha06 androidx.compose.ui:ui-test-manifest-lint:1.8.0-alpha06 androidx.compose.ui:ui-text:1.8.0-alpha06 androidx.compose.ui:ui-text-android:1.8.0-alpha06 androidx.compose.ui:ui-text-google-fonts:1.8.0-alpha06 androidx.compose.ui:ui-text-jvmstubs:1.8.0-alpha06 androidx.compose.ui:ui-text-lint:1.8.0-alpha06 androidx.compose.ui:ui-text-linuxx64stubs:1.8.0-alpha06 androidx.compose.ui:ui-tooling:1.8.0-alpha06 androidx.compose.ui:ui-tooling-android:1.8.0-alpha06 androidx.compose.ui:ui-tooling-data:1.8.0-alpha06 androidx.compose.ui:ui-tooling-data-android:1.8.0-alpha06 androidx.compose.ui:ui-tooling-data-jvmstubs:1.8.0-alpha06 androidx.compose.ui:ui-tooling-jvmstubs:1.8.0-alpha06 androidx.compose.ui:ui-tooling-preview:1.8.0-alpha06 androidx.compose.ui:ui-tooling-preview-android:1.8.0-alpha06 androidx.compose.ui:ui-tooling-preview-jvmstubs:1.8.0-alpha06 androidx.compose.ui:ui-unit:1.8.0-alpha06 androidx.compose.ui:ui-unit-android:1.8.0-alpha06 androidx.compose.ui:ui-unit-jvmstubs:1.8.0-alpha06 androidx.compose.ui:ui-unit-linuxx64stubs:1.8.0-alpha06 androidx.compose.ui:ui-util:1.8.0-alpha06 androidx.compose.ui:ui-util-android:1.8.0-alpha06 androidx.compose.ui:ui-util-jvmstubs:1.8.0-alpha06 androidx.compose.ui:ui-util-linuxx64stubs:1.8.0-alpha06 androidx.compose.ui:ui-viewbinding:1.8.0-alpha06 androidx.exifinterface:exifinterface:1.4.0-alpha01 androidx.gradle:gradle-version-catalog:2024.11.00 androidx.gradle:gradle-version-catalog-alpha:2024.11.00 androidx.gradle:gradle-version-catalog-beta:2024.11.00 androidx.lifecycle:lifecycle-common:2.9.0-alpha07 androidx.lifecycle:lifecycle-common-iosarm64:2.9.0-alpha07 androidx.lifecycle:lifecycle-common-iossimulatorarm64:2.9.0-alpha07 androidx.lifecycle:lifecycle-common-iosx64:2.9.0-alpha07 androidx.lifecycle:lifecycle-common-java8:2.9.0-alpha07 androidx.lifecycle:lifecycle-common-jvm:2.9.0-alpha07 androidx.lifecycle:lifecycle-common-linuxarm64:2.9.0-alpha07 androidx.lifecycle:lifecycle-common-linuxx64:2.9.0-alpha07 androidx.lifecycle:lifecycle-common-macosarm64:2.9.0-alpha07 androidx.lifecycle:lifecycle-common-macosx64:2.9.0-alpha07 androidx.lifecycle:lifecycle-compiler:2.9.0-alpha07 androidx.lifecycle:lifecycle-livedata:2.9.0-alpha07 androidx.lifecycle:lifecycle-livedata-core:2.9.0-alpha07 androidx.lifecycle:lifecycle-livedata-core-ktx:2.9.0-alpha07 androidx.lifecycle:lifecycle-livedata-ktx:2.9.0-alpha07 androidx.lifecycle:lifecycle-process:2.9.0-alpha07 androidx.lifecycle:lifecycle-reactivestreams:2.9.0-alpha07 androidx.lifecycle:lifecycle-reactivestreams-ktx:2.9.0-alpha07 androidx.lifecycle:lifecycle-runtime:2.9.0-alpha07 androidx.lifecycle:lifecycle-runtime-android:2.9.0-alpha07 androidx.lifecycle:lifecycle-runtime-compose:2.9.0-alpha07 androidx.lifecycle:lifecycle-runtime-compose-android:2.9.0-alpha07 androidx.lifecycle:lifecycle-runtime-compose-jvmstubs:2.9.0-alpha07 androidx.lifecycle:lifecycle-runtime-compose-linuxx64stubs:2.9.0-alpha07 androidx.lifecycle:lifecycle-runtime-desktop:2.9.0-alpha07 androidx.lifecycle:lifecycle-runtime-iosarm64:2.9.0-alpha07 androidx.lifecycle:lifecycle-runtime-iossimulatorarm64:2.9.0-alpha07 androidx.lifecycle:lifecycle-runtime-iosx64:2.9.0-alpha07 androidx.lifecycle:lifecycle-runtime-ktx:2.9.0-alpha07 androidx.lifecycle:lifecycle-runtime-ktx-android:2.9.0-alpha07 androidx.lifecycle:lifecycle-runtime-linuxarm64:2.9.0-alpha07 androidx.lifecycle:lifecycle-runtime-linuxx64:2.9.0-alpha07 androidx.lifecycle:lifecycle-runtime-macosarm64:2.9.0-alpha07 androidx.lifecycle:lifecycle-runtime-macosx64:2.9.0-alpha07 androidx.lifecycle:lifecycle-runtime-testing:2.9.0-alpha07 androidx.lifecycle:lifecycle-runtime-testing-android:2.9.0-alpha07 androidx.lifecycle:lifecycle-runtime-testing-desktop:2.9.0-alpha07 androidx.lifecycle:lifecycle-runtime-testing-iosarm64:2.9.0-alpha07 androidx.lifecycle:lifecycle-runtime-testing-iossimulatorarm64:2.9.0-alpha07 androidx.lifecycle:lifecycle-runtime-testing-iosx64:2.9.0-alpha07 androidx.lifecycle:lifecycle-runtime-testing-linuxarm64:2.9.0-alpha07 androidx.lifecycle:lifecycle-runtime-testing-linuxx64:2.9.0-alpha07 androidx.lifecycle:lifecycle-runtime-testing-macosarm64:2.9.0-alpha07 androidx.lifecycle:lifecycle-runtime-testing-macosx64:2.9.0-alpha07 androidx.lifecycle:lifecycle-service:2.9.0-alpha07 androidx.lifecycle:lifecycle-viewmodel:2.9.0-alpha07 androidx.lifecycle:lifecycle-viewmodel-android:2.9.0-alpha07 androidx.lifecycle:lifecycle-viewmodel-compose:2.9.0-alpha07 androidx.lifecycle:lifecycle-viewmodel-compose-android:2.9.0-alpha07 androidx.lifecycle:lifecycle-viewmodel-compose-desktop:2.9.0-alpha07 androidx.lifecycle:lifecycle-viewmodel-desktop:2.9.0-alpha07 androidx.lifecycle:lifecycle-viewmodel-iosarm64:2.9.0-alpha07 androidx.lifecycle:lifecycle-viewmodel-iossimulatorarm64:2.9.0-alpha07 androidx.lifecycle:lifecycle-viewmodel-iosx64:2.9.0-alpha07 androidx.lifecycle:lifecycle-viewmodel-ktx:2.9.0-alpha07 androidx.lifecycle:lifecycle-viewmodel-linuxarm64:2.9.0-alpha07 androidx.lifecycle:lifecycle-viewmodel-linuxx64:2.9.0-alpha07 androidx.lifecycle:lifecycle-viewmodel-macosarm64:2.9.0-alpha07 androidx.lifecycle:lifecycle-viewmodel-macosx64:2.9.0-alpha07 androidx.lifecycle:lifecycle-viewmodel-savedstate:2.9.0-alpha07 androidx.lifecycle:lifecycle-viewmodel-savedstate-android:2.9.0-alpha07 androidx.lifecycle:lifecycle-viewmodel-savedstate-desktop:2.9.0-alpha07 androidx.lifecycle:lifecycle-viewmodel-savedstate-iosarm64:2.9.0-alpha07 androidx.lifecycle:lifecycle-viewmodel-savedstate-iossimulatorarm64:2.9.0-alpha07 androidx.lifecycle:lifecycle-viewmodel-savedstate-iosx64:2.9.0-alpha07 androidx.lifecycle:lifecycle-viewmodel-savedstate-linuxarm64:2.9.0-alpha07 androidx.lifecycle:lifecycle-viewmodel-savedstate-linuxx64:2.9.0-alpha07 androidx.lifecycle:lifecycle-viewmodel-savedstate-macosarm64:2.9.0-alpha07 androidx.lifecycle:lifecycle-viewmodel-savedstate-macosx64:2.9.0-alpha07 androidx.lifecycle:lifecycle-viewmodel-testing:2.9.0-alpha07 androidx.lifecycle:lifecycle-viewmodel-testing-android:2.9.0-alpha07 androidx.lifecycle:lifecycle-viewmodel-testing-desktop:2.9.0-alpha07 androidx.lifecycle:lifecycle-viewmodel-testing-iosarm64:2.9.0-alpha07 androidx.lifecycle:lifecycle-viewmodel-testing-iossimulatorarm64:2.9.0-alpha07 androidx.lifecycle:lifecycle-viewmodel-testing-iosx64:2.9.0-alpha07 androidx.lifecycle:lifecycle-viewmodel-testing-linuxarm64:2.9.0-alpha07 androidx.lifecycle:lifecycle-viewmodel-testing-linuxx64:2.9.0-alpha07 androidx.lifecycle:lifecycle-viewmodel-testing-macosarm64:2.9.0-alpha07 androidx.lifecycle:lifecycle-viewmodel-testing-macosx64:2.9.0-alpha07 androidx.navigation:navigation-common:2.8.4 androidx.navigation:navigation-common:2.9.0-alpha03 androidx.navigation:navigation-common-ktx:2.8.4 androidx.navigation:navigation-common-ktx:2.9.0-alpha03 androidx.navigation:navigation-compose:2.8.4 androidx.navigation:navigation-compose:2.9.0-alpha03 androidx.navigation:navigation-dynamic-features-fragment:2.8.4 androidx.navigation:navigation-dynamic-features-fragment:2.9.0-alpha03 androidx.navigation:navigation-dynamic-features-runtime:2.8.4 androidx.navigation:navigation-dynamic-features-runtime:2.9.0-alpha03 androidx.navigation:navigation-fragment:2.8.4 androidx.navigation:navigation-fragment:2.9.0-alpha03 androidx.navigation:navigation-fragment-compose:2.8.4 androidx.navigation:navigation-fragment-compose:2.9.0-alpha03 androidx.navigation:navigation-fragment-ktx:2.8.4 androidx.navigation:navigation-fragment-ktx:2.9.0-alpha03 androidx.navigation:navigation-runtime:2.8.4 androidx.navigation:navigation-runtime:2.9.0-alpha03 androidx.navigation:navigation-runtime-ktx:2.8.4 androidx.navigation:navigation-runtime-ktx:2.9.0-alpha03 androidx.navigation:navigation-safe-args-generator:2.8.4 androidx.navigation:navigation-safe-args-generator:2.9.0-alpha03 androidx.navigation:navigation-safe-args-gradle-plugin:2.8.4 androidx.navigation:navigation-safe-args-gradle-plugin:2.9.0-alpha03 androidx.navigation:navigation-testing:2.8.4 androidx.navigation:navigation-testing:2.9.0-alpha03 androidx.navigation:navigation-ui:2.8.4 androidx.navigation:navigation-ui:2.9.0-alpha03 androidx.navigation:navigation-ui-ktx:2.8.4 androidx.navigation:navigation-ui-ktx:2.9.0-alpha03 androidx.navigation.safeargs:androidx.navigation.safeargs.gradle.plugin:2.8.4 androidx.navigation.safeargs:androidx.navigation.safeargs.gradle.plugin:2.9.0-alpha03 androidx.navigation.safeargs.kotlin:androidx.navigation.safeargs.kotlin.gradle.plugin:2.8.4 androidx.navigation.safeargs.kotlin:androidx.navigation.safeargs.kotlin.gradle.plugin:2.9.0-alpha03 androidx.paging:paging-common:3.3.4 androidx.paging:paging-common-android:3.3.4 androidx.paging:paging-common-iosarm64:3.3.4 androidx.paging:paging-common-iossimulatorarm64:3.3.4 androidx.paging:paging-common-iosx64:3.3.4 androidx.paging:paging-common-jvm:3.3.4 androidx.paging:paging-common-ktx:3.3.4 androidx.paging:paging-common-linuxarm64:3.3.4 androidx.paging:paging-common-linuxx64:3.3.4 androidx.paging:paging-common-macosarm64:3.3.4 androidx.paging:paging-common-macosx64:3.3.4 androidx.paging:paging-common-tvosarm64:3.3.4 androidx.paging:paging-common-tvossimulatorarm64:3.3.4 androidx.paging:paging-common-tvosx64:3.3.4 androidx.paging:paging-common-watchosarm32:3.3.4 androidx.paging:paging-common-watchosarm64:3.3.4 androidx.paging:paging-common-watchossimulatorarm64:3.3.4 androidx.paging:paging-common-watchosx64:3.3.4 androidx.paging:paging-compose:3.3.4 androidx.paging:paging-compose-android:3.3.4 androidx.paging:paging-guava:3.3.4 androidx.paging:paging-runtime:3.3.4 androidx.paging:paging-runtime-ktx:3.3.4 androidx.paging:paging-rxjava2:3.3.4 androidx.paging:paging-rxjava2-ktx:3.3.4 androidx.paging:paging-rxjava3:3.3.4 androidx.paging:paging-testing:3.3.4 androidx.paging:paging-testing-android:3.3.4 androidx.paging:paging-testing-iosarm64:3.3.4 androidx.paging:paging-testing-iossimulatorarm64:3.3.4 androidx.paging:paging-testing-iosx64:3.3.4 androidx.paging:paging-testing-jvm:3.3.4 androidx.paging:paging-testing-linuxarm64:3.3.4 androidx.paging:paging-testing-linuxx64:3.3.4 androidx.paging:paging-testing-macosarm64:3.3.4 androidx.paging:paging-testing-macosx64:3.3.4 androidx.paging:paging-testing-tvosarm64:3.3.4 androidx.paging:paging-testing-tvossimulatorarm64:3.3.4 androidx.paging:paging-testing-tvosx64:3.3.4 androidx.paging:paging-testing-watchosarm32:3.3.4 androidx.paging:paging-testing-watchosarm64:3.3.4 androidx.paging:paging-testing-watchossimulatorarm64:3.3.4 androidx.paging:paging-testing-watchosx64:3.3.4 androidx.pdf:pdf-viewer:1.0.0-alpha04 androidx.pdf:pdf-viewer-fragment:1.0.0-alpha04 androidx.privacysandbox.sdkruntime:sdkruntime-client:1.0.0-alpha15 androidx.privacysandbox.sdkruntime:sdkruntime-core:1.0.0-alpha15 androidx.privacysandbox.sdkruntime:sdkruntime-provider:1.0.0-alpha15 androidx.privacysandbox.ui:ui-client:1.0.0-alpha11 androidx.privacysandbox.ui:ui-core:1.0.0-alpha11 androidx.privacysandbox.ui:ui-provider:1.0.0-alpha11 androidx.savedstate:savedstate:1.3.0-alpha05 androidx.savedstate:savedstate-android:1.3.0-alpha05 androidx.savedstate:savedstate-desktop:1.3.0-alpha05 androidx.savedstate:savedstate-iosarm64:1.3.0-alpha05 androidx.savedstate:savedstate-iossimulatorarm64:1.3.0-alpha05 androidx.savedstate:savedstate-iosx64:1.3.0-alpha05 androidx.savedstate:savedstate-ktx:1.3.0-alpha05 androidx.savedstate:savedstate-linuxarm64:1.3.0-alpha05 androidx.savedstate:savedstate-linuxx64:1.3.0-alpha05 androidx.savedstate:savedstate-macosarm64:1.3.0-alpha05 androidx.savedstate:savedstate-macosx64:1.3.0-alpha05 androidx.viewpager:viewpager:1.1.0-rc01 androidx.wear.compose:compose-foundation:1.5.0-alpha06 androidx.wear.compose:compose-material:1.5.0-alpha06 androidx.wear.compose:compose-material-core:1.5.0-alpha06 androidx.wear.compose:compose-material3:1.0.0-alpha29 androidx.wear.compose:compose-navigation:1.5.0-alpha06 androidx.wear.compose:compose-ui-tooling:1.5.0-alpha06 androidx.wear.protolayout:protolayout:1.3.0-alpha04 androidx.wear.protolayout:protolayout-expression:1.3.0-alpha04 androidx.wear.protolayout:protolayout-expression-pipeline:1.3.0-alpha04 androidx.wear.protolayout:protolayout-external-protobuf:1.3.0-alpha04 androidx.wear.protolayout:protolayout-material:1.3.0-alpha04 androidx.wear.protolayout:protolayout-material-core:1.3.0-alpha04 androidx.wear.protolayout:protolayout-material3:1.3.0-alpha04 androidx.wear.protolayout:protolayout-proto:1.3.0-alpha04 androidx.wear.protolayout:protolayout-renderer:1.3.0-alpha04 androidx.wear.protolayout:protolayout-testing:1.3.0-alpha04 androidx.wear.tiles:tiles:1.5.0-alpha04 androidx.wear.tiles:tiles-material:1.5.0-alpha04 androidx.wear.tiles:tiles-proto:1.5.0-alpha04 androidx.wear.tiles:tiles-renderer:1.5.0-alpha04 androidx.wear.tiles:tiles-testing:1.5.0-alpha04 androidx.wear.tiles:tiles-tooling:1.5.0-alpha04 androidx.wear.tiles:tiles-tooling-preview:1.5.0-alpha04 androidx.webkit:webkit:1.13.0-alpha01

