Status Update
Comments
je...@google.com <je...@google.com>
ra...@google.com <ra...@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
ra...@google.com <ra...@google.com> #3
Related public bug:
je...@google.com <je...@google.com> #4
ok so we can move the location of the baseline.prof to the new location : BUNDLE_METADATA/com.android.tools.build.profiles/baseline.prof{m}
but this will not fix the previous versions of the plugins that have shipped with this behavior (including Bumblebee) so this needs to be handled by the playstore to look into both locations (for a while at least).
wk...@google.com <wk...@google.com> #5
Martin mentioned on the email thread that they likely won't look in the previous location:
Bundletool guards its behavioural changes behind the bundletool version that the AAB was created with (so the developer knows how their bundles will be turned into apks, and there are no surprises). So we'd only be converting profiles-in-AAB to profiles-in-APKs for cases where the AAB was built with a bundletool that knew about profiles (which is, as of now, none of them - but bundletool 1.11 will).
In that case, if we don't fix it for Chipmunk release, we will have 2 stable versions of AGP that people are going to use for a while where the profile essentially gets lost, and the next stable release is not until July at least. I would argue we should make it a P0 and get the fix in AGP and potentially delay the stable release for a week. And in the worst case we should do it in a point release as soon as possible.
al...@google.com <al...@google.com>
al...@google.com <al...@google.com> #6
Currently the baseline profile ends up in BUNDLE_METADATA/assets/dexopt/baseline.prof{m}. It needs to end up in BUNDLE_METADATA/com.android.tools.build.profiles/baseline.prof{m}
Should we also move baseline profile in apk from
assets/dexopt/baseline.prof{m}
to
com.android.tools.build.profiles/baseline.prof{m}
al...@google.com <al...@google.com> #7
After discussion: APK path for baseline.prof must stay the same assets/dexopt/baseline.prof
ca...@google.com <ca...@google.com> #8
+1 to P0ing this and ensuring baseline profiles will be successfully packaged for bundle-using app developers ASAP. This is a huge priority as baseline profiles is the biggest intervention apps can do to improve their performance, and we're really advocating that every app take advantage of it right now!
al...@google.com <al...@google.com>
ra...@google.com <ra...@google.com> #9
Hi alexgolubev@, will this feature also land in the same version of the Android Gradle Plugin that the fix for multidex landed in?
al...@google.com <al...@google.com> #10
I merged both CLs to Dolphin branch so it will be in Dolphin/AGP 7.3 Beta 1 Release
wk...@google.com <wk...@google.com> #11
Should we also backport it to 7.2.1? What's the process to do it?
je...@google.com <je...@google.com> #12
I am talking to Saurabh about it.
ke...@gmail.com <ke...@gmail.com> #13
Baseline profile is located in BUNDLE-METADATA/assets.dexopt/baseline.prof{m}
when app bundle is built with 7.3.0-beta01
.
This is the same location as 7.2.0
.
When app bundle is built with 7.2.1
or 7.4.0-alpha02
, it is located in BUNDLE-METADATA/com.android.tools.build.profiles/baseline.prof{m}
.
Does it work correctly with 7.3.0-beta01
? Which AGP version is correct?
ly...@gmail.com <ly...@gmail.com> #15
Is there release date of bundletool 1.11 with support for copying profiles into generated apk from bundles as follows from the
vi...@spotify.com <vi...@spotify.com> #16
al...@google.com <al...@google.com> #17
Fix is merged into 7.2 branch and will be available in Chipmunk/AGP 7.2 Patch 2 Release
li...@pinterest.com <li...@pinterest.com> #18
de...@google.com <de...@google.com> #19
Thank you for your patience while our engineering team worked to resolve this issue. A fix for this issue is now available in:
- Android Studio Dolphin Beta 2 (2021.3.1.11)
- Android Gradle Plugin 7.3.0-beta02
We encourage you to try the latest update.
If you notice further issues or have questions, please file a new bug report.
Thank you for taking the time to submit feedback — we really appreciate it!
je...@gmail.com <je...@gmail.com> #20
Hi guys new here.. need your help to fix things right. Not for me I give you my word.. I had already refunded 2 times.. please don’t let your good system get exploited by malicious user that prey on end user. Really hope good pro skill guys like you all can keep a good image and uphold what’s right! Thanks again
je...@gmail.com <je...@gmail.com> #21
Even now I just notices the report I wrote to raise here but not under my name!? So many other user!!! Please help!
sh...@pinterest.com <sh...@pinterest.com> #22
jb...@twitter.com <jb...@twitter.com> #23
Hi there - just for clarification: the release notes here say this fix was merged for 7.2.1, back in May (patch 1):
However the discussion here in June indicates this will be part of 7.2.2 (which is unreleased afaik). Can anyone clear up this discrepancy?
jb...@twitter.com <jb...@twitter.com> #24
FYI for those following - it looks like AGP 7.2.2 was released yesterday so we should be unblocked to use baseline profiles with app bundles (I haven't yet verified personally).
ju...@arkea.com <ju...@arkea.com> #25
I have similar issue and just try it out the AGP 7.3.1.
The bad location of profile still remain in this release (com.android.tools.build.profiles instead of assets.dexopt)
Any update about this ?
Thanks
be...@google.com <be...@google.com> #26
Using the
- Build release bundle
- Extract apks
- Extract universal apk
- Inspect apk in Android Studio
The Baseline Profile can be found under assets/dexopt/baseline.prof{m}
when inspecting an apk, even though it is under com.android.tools.build.profiles
when inspecting an aab.
se...@gmail.com <se...@gmail.com> #27
je...@google.com <je...@google.com> #28
#27, please file a new bug, bonus if you include a repro case.
Description
go/baseline-profiles for context.
Currently when building app bundles, baseline profiles are not being packaged into
assets/dexopt/baseline.prof
.This causes the profiles to get dropped and the app is no longer optimized.