Status Update
Comments
gr...@google.com <gr...@google.com> #2
Branch: androidx-master-dev
commit c60f33e229e31ab328ef6b59dab63b264954831c
Author: Alexandre Elias <aelias@google.com>
Date: Fri Jul 10 16:23:09 2020
Semantics no-op cleanups
Partly in response to lmr's broad code review, I did a pass of
superficial API/implementation cleanup. The main changes are:
- I changed each Boolean SemanticsProperty where false is equivalent to
not being present to take "Unit" instead. This is conceptually
clearer: it avoids questions like "can I cancel out a semantics from a
merged child by setting it to false?" Because "property = Unit" looks
weird, I also changed the style of these to "property()".
- I moved the Semantics id generator closer to where it's used, in
SemanticsModifierCore. I made it internal and an AtomicInt.
(Note that integer ids are heavily used in the Android
AccessibilityNodeInfo APIs so I can't simply remove them entirely.)
- I deleted dead code. Some examples include SemanticsHintOverrides,
a public API not connected to anything, and SemanticsPropertyKey
merge() open method which is never called. (In both cases I have
a different plan in mind for accessibility.)
Fixes: 145951226
Fixes: 145955412
Test: existing tests
Relnote: "Single-value semantics properties now use a calling style.
For example, 'semantics { hidden = true }' is now written as:
'semantics { hidden() }'."
Change-Id: Ic1afd12ea22c926babc9662f1804d80b33aa0cfc
M ui/integration-tests/benchmark/src/androidTest/java/androidx/ui/benchmark/test/LayoutNodeModifierBenchmark.kt
M ui/ui-core/api/0.1.0-dev15.txt
M ui/ui-core/api/current.txt
M ui/ui-core/api/public_plus_experimental_0.1.0-dev15.txt
M ui/ui-core/api/public_plus_experimental_current.txt
M ui/ui-core/api/restricted_0.1.0-dev15.txt
M ui/ui-core/api/restricted_current.txt
M ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/graphics/vector/VectorTest.kt
M ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/semantics/SemanticsTests.kt
M ui/ui-core/src/androidMain/kotlin/androidx/ui/core/AndroidActuals.kt
M ui/ui-core/src/androidMain/kotlin/androidx/ui/core/AndroidComposeView.kt
M ui/ui-core/src/androidMain/kotlin/androidx/ui/core/AndroidComposeViewAccessibilityDelegateCompat.kt
M ui/ui-core/src/androidMain/kotlin/androidx/ui/core/AndroidPopup.kt
M ui/ui-core/src/commonMain/kotlin/androidx/ui/core/Expect.kt
M ui/ui-core/src/commonMain/kotlin/androidx/ui/core/semantics/SemanticsConfiguration.kt
D ui/ui-core/src/commonMain/kotlin/androidx/ui/core/semantics/SemanticsHintOverrides.kt
M ui/ui-core/src/commonMain/kotlin/androidx/ui/core/semantics/SemanticsModifier.kt
M ui/ui-core/src/commonMain/kotlin/androidx/ui/core/semantics/SemanticsNode.kt
M ui/ui-core/src/commonMain/kotlin/androidx/ui/core/semantics/SemanticsOwner.kt
M ui/ui-core/src/commonMain/kotlin/androidx/ui/core/semantics/SemanticsWrapper.kt
M ui/ui-core/src/commonMain/kotlin/androidx/ui/semantics/SemanticsProperties.kt
M ui/ui-foundation/api/0.1.0-dev15.txt
M ui/ui-foundation/api/current.txt
M ui/ui-foundation/api/public_plus_experimental_0.1.0-dev15.txt
M ui/ui-foundation/api/public_plus_experimental_current.txt
M ui/ui-foundation/api/restricted_0.1.0-dev15.txt
M ui/ui-foundation/api/restricted_current.txt
M ui/ui-foundation/src/main/java/androidx/ui/foundation/Clickable.kt
M ui/ui-foundation/src/main/java/androidx/ui/foundation/Dialog.kt
M ui/ui-foundation/src/main/java/androidx/ui/foundation/Scroller.kt
M ui/ui-foundation/src/main/java/androidx/ui/foundation/selection/Selectable.kt
M ui/ui-foundation/src/main/java/androidx/ui/foundation/selection/Toggleable.kt
M ui/ui-foundation/src/main/java/androidx/ui/foundation/semantics/FoundationSemanticsProperties.kt
M ui/ui-material/src/androidTest/java/androidx/ui/material/ButtonTest.kt
M ui/ui-material/src/androidTest/java/androidx/ui/material/CardTest.kt
M ui/ui-material/src/androidTest/java/androidx/ui/material/CheckboxScreenshotTest.kt
M ui/ui-material/src/androidTest/java/androidx/ui/material/RadioButtonScreenshotTest.kt
M ui/ui-material/src/androidTest/java/androidx/ui/material/ScaffoldTest.kt
M ui/ui-material/src/androidTest/java/androidx/ui/material/SnackbarTest.kt
M ui/ui-material/src/androidTest/java/androidx/ui/material/SurfaceTest.kt
M ui/ui-material/src/androidTest/java/androidx/ui/material/ripple/RippleIndicationTest.kt
M ui/ui-material/src/androidTest/java/androidx/ui/material/textfield/TextFieldScreenshotTest.kt
M ui/ui-material/src/main/java/androidx/ui/material/AppBar.kt
M ui/ui-material/src/main/java/androidx/ui/material/TextFieldImpl.kt
M ui/ui-test/src/androidTest/java/androidx/ui/test/AssertsTest.kt
M ui/ui-test/src/androidTest/java/androidx/ui/test/CallSemanticsActionTest.kt
M ui/ui-test/src/androidTest/java/androidx/ui/test/ErrorMessagesTest.kt
M ui/ui-test/src/androidTest/java/androidx/ui/test/FindersTest.kt
M ui/ui-test/src/androidTest/java/androidx/ui/test/PrintToStringTest.kt
M ui/ui-test/src/androidTest/java/androidx/ui/test/ScrollToTest.kt
M ui/ui-test/src/androidTest/java/androidx/ui/test/TextActionsTest.kt
M ui/ui-test/src/main/java/androidx/ui/test/Actions.kt
M ui/ui-test/src/main/java/androidx/ui/test/Filters.kt
M ui/ui-text/api/0.1.0-dev15.txt
M ui/ui-text/api/current.txt
M ui/ui-text/api/public_plus_experimental_0.1.0-dev15.txt
M ui/ui-text/api/public_plus_experimental_current.txt
M ui/ui-text/api/restricted_0.1.0-dev15.txt
M ui/ui-text/api/restricted_current.txt
M ui/ui-text/src/commonMain/kotlin/androidx/ui/text/CoreTextField.kt
M ui/ui-text/src/commonMain/kotlin/androidx/ui/text/TextSemanticsProperties.kt
gr...@google.com <gr...@google.com> #3
Inspected the JARs
❯ javap -cp 1.6.0-rc01-classes.jar androidx.compose.ui.text.TextStyle | grep getTextAlign
public final int getTextAlign-e0LSkKk();
public final androidx.compose.ui.text.style.TextAlign getTextAlign();
public static void getTextAlign$annotations();
❯ javap -cp 1.5.4-classes.jar androidx.compose.ui.text.TextStyle | grep getTextAlign
public final androidx.compose.ui.text.style.TextAlign getTextAlign-buA522U();
gr...@google.com <gr...@google.com> #4
1.5.4
, but a non-null type in 1.6.0-rc01
. The rest of the contents of the hash are the same.
gr...@google.com <gr...@google.com> #5
Possible fix looks like it would be to include the hash in JvmName
annotation.
@get:JvmName("getTextAlign-buA522U")
gr...@google.com <gr...@google.com>
so...@google.com <so...@google.com> #6
In addition to TextAlign, we've changed TextDirection, Hyphens and LineBreak at the same time. So let's update all of them at once.
gr...@google.com <gr...@google.com> #7
Created
gr...@google.com <gr...@google.com> #8
minimal repro attached
gr...@google.com <gr...@google.com> #9
Verified the fix in
In Android Studio I built aosp/2918751 by running the demo app.
Then, I found the jar file used in the build at:
~/workspace/androidx-main/out/androidx/compose/ui/ui-text/build/intermediates/compile_library_classes_jar/debug/bundleLibCompileToJarDebug/classes.jar
I modified the repro project build.gradle
(project, not library) to remove the module being changed via adding the following above dependencies
at the top level:
configurations.all {
exclude(group = "androidx.compose.ui", module = "ui-text")
}
and then adding it back in to the project via the following inside the dependencies
:
dependencies {
...
implementation(files("~/workspace/androidx-main/out/androidx/compose/ui/ui-text/build/intermediates/compile_library_classes_jar/debug/bundleLibCompileToJarDebug/classes.jar"))
}
By this not immediately crashing on start up, it verifies that the currently incompatible methods have been made compatible with the change in aosp/2918751.
ap...@google.com <ap...@google.com> #10
Branch: androidx-main
commit 9ed6b9a2f42e3a1f0c4c5e123f0e2c703b7d4fed
Author: Grant Toepfer <grantapher@google.com>
Date: Fri Jan 19 12:36:15 2024
Fix binary backwards compatibility in Text/ParagraphStyle
go/mangling-binary-compat
Since the properties introduced for binary backwards compatibility didn't include the inline class mangling in their jvm name, the changes were not truly backwards compatible. This change adds the correct inline class mangling to the jvm names of the getter methods.
Relnote: Fixed backwards binary incompatibility in TextStyle and ParagraphStyle
Test: Manually verified (see
Fixes:
Change-Id: I179f0ff77b3b85a05d98a28405ad936d2e9413cf
M compose/ui/ui-text/api/current.ignore
M compose/ui/ui-text/api/current.txt
M compose/ui/ui-text/api/restricted_current.ignore
M compose/ui/ui-text/api/restricted_current.txt
M compose/ui/ui-text/src/commonMain/kotlin/androidx/compose/ui/text/ParagraphStyle.kt
M compose/ui/ui-text/src/commonMain/kotlin/androidx/compose/ui/text/TextStyle.kt
gr...@google.com <gr...@google.com> #11
Expect the fix in the next compose release.
na...@google.com <na...@google.com> #12
The following release(s) address this bug.It is possible this bug has only been partially addressed:
androidx.compose.ui:ui-text:1.6.0
androidx.compose.ui:ui-text-android:1.6.0
androidx.compose.ui:ui-text-desktop:1.6.0
Description
Jetpack Compose version: 1.6.0-rc01
Jetpack Compose component(s) used: ui
Android Studio Build: 2023.2.1 Beta 2
Kotlin version: 1.9.20
Steps to Reproduce or Code Sample to Reproduce:
Compile a module with Compose 1.5.x, that has code reading a TextStyle.textAlign property
consume that module in another project that is using compose 1.6
at runtime crashes
Stack trace (if applicable):
I see in 1.6 there is an attempt to handle this incompatibility by adding this method, but its not working: