This update includes fixes for the following public issues:
You can now easily export databases, tables, and query results from the Database Inspector to save, share, or recreate locally.
To learn more, see the release notes.
Starting in AGP 7.0.0-alpha10, R8 will more precisely and consistently handle missing classes and the -dontwarn option. Therefore, you should start to evaluate the missing class warnings emitted by R8.
-dontwarn
We are happy to announce the release of ConstraintLayout 2.1.0 beta 1, with many new features :)
dependencies {
implementation 'androidx.constraintlayout:constraintlayout:2.1.0-beta01'
}
More information about the new features in 2.1.0 can be found on the wiki, the source code is available on https://github.com/androidx/constraintlayout
ConstraintLayout
Helpers
MotionLayout
When using Android Gradle plugin 7.0 to build your app, JDK 11 is now required to run Gradle. Android Studio Arctic Fox bundles JDK 11 and configures Gradle to use it by default, which means that most Android Studio users do not need to make any configuration changes to their projects.
For more information, see the release notes.
You can now use Natvis files to customize the way C++ objects are displayed in the native debugger.
Starting with Arctic Fox Canary 6, you can now inspect layouts written with the new Android declarative UI framework, Jetpack Compose. Whether your app uses layouts fully written in Compose or layouts that use a hybrid of Compose and Views, the Layout Inspector helps you understand how your layouts are rendered on your running device.
This feature requires that each module using the Compose UI declare the following dependencies.
debugImplementation "androidx.compose.ui:ui-tooling:1.0.0-alpha11" debugImplementation "org.jetbrains.kotlin:kotlin-reflect:1.4.21"
To get started, deploy your app to a connected device and then open the Layout Inspector window by selecting View > Tool Windows > Layout Inspector.
When you inspect failed assertions after running instrumented tests, it's sometimes difficult or time consuming to reproduce that test failure again. However, reproducing those failures on your connected device is critical in helping you diagnose the issue, either by attaching a debugger or interacting with the app at the time of failure.
In Android Gradle plugin 7.0-alpha06 and higher, we're introducing automated test snapshots – a quicker way to reproduce test failures by leveraging Emulator snapshots. In other words, when your instrumented tests running on a connected Emulator encounter a Java or Kotlin assertion that fails, the device takes a snapshot at the time of failure. After your test run completes, you can then reload the snapshot on the same device in order to reproduce and investigate that failure.
7.0-alpha06
android.native.buildOutput
To reduce clutter in build output, AGP 4.2 filters messages from native builds that use CMake and ndk-build, displaying only C/C++ compiler output by default. Previously, a line of output was generated for every file that was built, resulting in a large quantity of informational messages.
ndk-build
For usage information, see the release notes.
In the C++ code editor window, you can set an arbitrary execution point when running your app in the debugger. This feature is useful when you want to break out of a loop or force a different path with branching code.
This update includes fixes for the following issues:
This update also includes fixes for the following public issues:
For Kotlin apps that use coroutines, you can now use StateFlow objects as a data binding source to automatically notify the UI about changes in the data. Your data bindings will be lifecycle aware and will only be triggered when the UI is visible on the screen.
StateFlow
To use a StateFlow object with your binding class, you need to specify a lifecycle owner to define the scope of the StateFlow object, and in your layout, assign the properties and methods of your ViewModel component to the corresponding views using binding expressions, as shown in the following snippets:
ViewModel
class ViewModel() { val username: StateFlow }
<TextView android:id="@+id/name" android:text="@{viewmodel.username}" />
If you're in a Kotlin app that uses AndroidX, StateFlow support is automatically included in the functionality of data binding, including the coroutines dependencies.
To learn more, see the user guide.