Status Update
Comments
al...@google.com <al...@google.com> #2
Attached reproducing video of an app using calculateWindowSizeClass
and LocalConfiguration
:
On the second time resizing to be 50%/50% from smaller, the displayed configuration is incorrect.
sg...@google.com <sg...@google.com> #3
When resizing the activity in multi-window mode under those conditions, there are cases where:
the Activity is not recreated Activity.onConfigurationChanged is not called View.onConfigurationChanged is not called
Is this just for 33 / is there a framework bug filed? The amount of broken things in configuration land we already had to workaround in Compose is a bit untenable. It seems like we are missing a lot of test coverage in the platform to avoid these issues hitting us in the future
al...@google.com <al...@google.com> #4
In any case this seems like more ammunition for us to push more strongly on 'pure-compose apps should always opt out of configuration changes'
ag...@google.com <ag...@google.com> #5
Yes, API 33 introduced this behavior, (internal) platform bug is here:
al...@google.com <al...@google.com> #6
I was incorrect, this is also reproducible on API 32 as well. Not reproducible on API 31.
al...@google.com <al...@google.com>
al...@google.com <al...@google.com> #7
Adam/Louis, how do we want to handle this one? Is there someone on platform who should take this, or since API 32 is already out in the wild maybe this should go to devrel to push more strongly on 'pure-compose apps should always opt out of configuration changes'.
al...@google.com <al...@google.com>
al...@google.com <al...@google.com>
ap...@google.com <ap...@google.com> #8
ap...@google.com <ap...@google.com> #9
I'm having issues on pre-33 api levels on a pure compose app (has all configChanges added in the manifest file) pared with AppCompatActivity
just for multi language support. When changing the language I'm using AppCompatDelegate.setApplicationLocales(compat)
which calls onConfigurationChanged
on the activity. LocalConfiguration changes to the new configuration on 33+ but remains the same on pre-33. Workaround that i've found is calling if (Build.VERSION.SDK_INT < 33) contentView.dispatchConfigurationChanged(newConfig)
in onConfigurationChanged
. I'm guessing it's a compose issue since activity wise everything works as expected.
ap...@google.com <ap...@google.com> #10
LocalConfiguration
but a separate issue.
al...@google.com <al...@google.com> #11
Thanks for the heads up, I've tried to find a related issue but only managed to find this one after a brief search.
ap...@google.com <ap...@google.com> #12
Ok
ap...@google.com <ap...@google.com> #13
Thanks for the heads up, I've tried to find a related issue but only managed to find this one after a brief search.
ap...@google.com <ap...@google.com> #14
Branch: androidx-main
commit 12ea61e42c7f29a0f539a069f06507a0f133910d
Author: Alan Viverette <alanv@google.com>
Date: Tue Jul 02 13:55:26 2024
Remove usage of @DoNotInline for manual NewApi outlines (A thru Ca)
Does not include AppSearch because they have downstream changes.
We no longer need manual NewApi outlines, so we can start by letting the
compiler inline the static methods.
Relnote: """Removed manual outlining of access to new platform APIs
since this happens automatically via API modeling when using R8 with
AGP 7.3 or later (e.g. R8 version 3.3) and for all builds when using
AGP 8.1 or later (e.g. D8 version 8.1). Clients who are not using
AGP are advised to update to D8 version 8.1 or later. See
[this article](
for more details."""
Bug: 345472586
Test: ./gradlew bOS
Change-Id: I9496cfaeb50a5c484fbee6521b74a0605fb013dc
M activity/activity/src/main/java/androidx/activity/BackEventCompat.kt
M activity/activity/src/main/java/androidx/activity/ComponentActivity.kt
M activity/activity/src/main/java/androidx/activity/OnBackPressedDispatcher.kt
M appcompat/appcompat-resources/src/main/java/androidx/appcompat/resources/Compatibility.java
M appcompat/appcompat-resources/src/main/java/androidx/appcompat/widget/DrawableUtils.java
M appcompat/appcompat/src/main/java/androidx/appcompat/app/AppCompatDelegate.java
M appcompat/appcompat/src/main/java/androidx/appcompat/app/AppCompatDelegateImpl.java
M appcompat/appcompat/src/main/java/androidx/appcompat/app/AppLocalesMetadataHolderService.java
M appcompat/appcompat/src/main/java/androidx/appcompat/view/WindowCallbackWrapper.java
M appcompat/appcompat/src/main/java/androidx/appcompat/widget/AppCompatReceiveContentHelper.java
M appcompat/appcompat/src/main/java/androidx/appcompat/widget/AppCompatSpinner.java
M appcompat/appcompat/src/main/java/androidx/appcompat/widget/AppCompatTextClassifierHelper.java
M appcompat/appcompat/src/main/java/androidx/appcompat/widget/AppCompatTextHelper.java
M appcompat/appcompat/src/main/java/androidx/appcompat/widget/AppCompatTextViewAutoSizeHelper.java
M appcompat/appcompat/src/main/java/androidx/appcompat/widget/DropDownListView.java
M appcompat/appcompat/src/main/java/androidx/appcompat/widget/ListPopupWindow.java
M appcompat/appcompat/src/main/java/androidx/appcompat/widget/MenuPopupWindow.java
M appcompat/appcompat/src/main/java/androidx/appcompat/widget/SearchView.java
M appcompat/appcompat/src/main/java/androidx/appcompat/widget/TintTypedArray.java
M appcompat/appcompat/src/main/java/androidx/appcompat/widget/Toolbar.java
M appcompat/appcompat/src/main/java/androidx/appcompat/widget/TooltipCompat.java
M appcompat/appcompat/src/main/java/androidx/appcompat/widget/ViewUtils.java
M benchmark/benchmark-macro/src/main/java/androidx/benchmark/macro/perfetto/server/PerfettoHttpServer.kt
M benchmark/integration-tests/macrobenchmark-target/src/main/java/androidx/benchmark/integration/macrobenchmark/target/SingleColorActivity.kt
M biometric/integration-tests/testapp/src/main/java/androidx/biometric/integration/testapp/CryptoUtils.kt
M bluetooth/bluetooth/src/main/java/androidx/bluetooth/AdvertiseParams.kt
M bluetooth/bluetooth/src/main/java/androidx/bluetooth/ScanFilter.kt
M bluetooth/bluetooth/src/main/java/androidx/bluetooth/ScanResult.kt
M browser/browser/src/main/java/androidx/browser/customtabs/Api33Impl.java
M browser/browser/src/main/java/androidx/browser/customtabs/CustomTabsIntent.java
M camera/camera-camera2-pipe-integration/src/main/java/androidx/camera/camera2/pipe/integration/adapter/EncoderProfilesProviderAdapter.kt
M camera/camera-camera2-pipe-integration/src/main/java/androidx/camera/camera2/pipe/integration/compat/ApiCompat.kt
M camera/camera-camera2-pipe-integration/src/main/java/androidx/camera/camera2/pipe/integration/impl/CameraInteropStateCallbackRepository.kt
M camera/camera-camera2-pipe-integration/src/main/java/androidx/camera/camera2/pipe/integration/internal/DynamicRangeConversions.kt
M camera/camera-camera2-pipe-integration/src/main/java/androidx/camera/camera2/pipe/integration/internal/DynamicRangeResolver.kt
M camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/compat/ApiCompat.kt
M camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/compat/CaptureSessionWrapper.kt
M camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/Camera2CaptureRequestBuilder.java
M camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/Camera2EncoderProfilesProvider.java
M camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/DynamicRangeResolver.java
M camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/SupportedSurfaceCombination.java
M camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/SynchronizedCaptureSessionBaseImpl.java
M camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/compat/ApiCompat.java
M camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/compat/StreamConfigurationMapCompatBaseImpl.java
M camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/compat/params/DynamicRangeConversions.java
M camera/camera-core/src/main/java/androidx/camera/core/imagecapture/Bitmap2JpegBytes.java
M camera/camera-core/src/main/java/androidx/camera/core/impl/CameraValidator.java
M camera/camera-core/src/main/java/androidx/camera/core/impl/utils/ContextUtil.java
M camera/camera-effects/src/main/java/androidx/camera/effects/internal/Utils.java
M camera/camera-extensions/src/androidTest/java/androidx/camera/extensions/util/Api21Impl.kt
M camera/camera-extensions/src/main/java/androidx/camera/extensions/internal/ExtensionsUtils.java
M camera/camera-extensions/src/main/java/androidx/camera/extensions/internal/compat/workaround/CaptureOutputSurfaceForCaptureProcessor.java
M camera/camera-testing/src/main/java/androidx/camera/testing/impl/CameraUtil.java
M camera/camera-testing/src/main/java/androidx/camera/testing/impl/TestImageUtil.java
M camera/camera-testing/src/main/java/androidx/camera/testing/impl/WakelockEmptyActivityRule.kt
M camera/camera-testing/src/main/java/androidx/camera/testing/impl/compat/LooperCompat.java
M camera/camera-video/src/main/java/androidx/camera/video/internal/compat/Api23Impl.java
M camera/camera-video/src/main/java/androidx/camera/video/internal/compat/Api24Impl.java
M camera/camera-video/src/main/java/androidx/camera/video/internal/compat/Api26Impl.java
M camera/camera-video/src/main/java/androidx/camera/video/internal/compat/Api28Impl.java
M camera/camera-video/src/main/java/androidx/camera/video/internal/compat/Api29Impl.java
M camera/camera-video/src/main/java/androidx/camera/video/internal/compat/Api31Impl.java
M camera/camera-video/src/main/java/androidx/camera/video/internal/encoder/EncoderImpl.java
M camera/camera-view/src/main/java/androidx/camera/view/SurfaceViewImplementation.java
M camera/camera-viewfinder/src/main/java/androidx/camera/viewfinder/SurfaceViewImplementation.java
M camera/integration-tests/avsynctestapp/src/main/java/androidx/camera/integration/avsync/MainActivity.kt
M camera/integration-tests/camerapipetestapp/src/main/java/androidx/camera/integration/camera2/pipe/SimpleCamera.kt
M camera/integration-tests/coretestapp/src/main/java/androidx/camera/integration/core/CameraXActivity.java
M camera/integration-tests/coretestapp/src/main/java/androidx/camera/integration/core/CameraXService.java
M camera/integration-tests/coretestapp/src/main/java/androidx/camera/integration/core/OpenGLActivity.java
M camera/integration-tests/coretestapp/src/main/java/androidx/camera/integration/core/SurfaceViewRenderSurface.java
M camera/integration-tests/extensionstestapp/src/main/java/androidx/camera/integration/extensions/Camera2ExtensionsActivity.kt
M car/app/app-automotive/src/main/java/androidx/car/app/activity/BaseCarAppActivity.java
M car/app/app-automotive/src/main/java/androidx/car/app/activity/renderer/surface/TemplateSurfaceView.java
M car/app/app-automotive/src/main/java/androidx/car/app/hardware/info/AutomotiveCarInfo.java
M car/app/app/src/main/java/androidx/car/app/CarAppMetadataHolderService.java
M car/app/app/src/main/java/androidx/car/app/CarContext.java
M car/app/app/src/main/java/androidx/car/app/SessionInfoIntentEncoder.java
M car/app/app/src/main/java/androidx/car/app/connection/CarConnectionTypeLiveData.java
M car/app/app/src/main/java/androidx/car/app/model/DateTimeWithZone.java
M car/app/app/src/main/java/androidx/car/app/model/DurationSpan.java
M car/app/app/src/main/java/androidx/car/app/navigation/model/TravelEstimate.java
M car/app/app/src/main/java/androidx/car/app/notification/CarNotificationManager.java
M car/app/app/src/main/java/androidx/car/app/validation/HostValidator.java
al...@google.com <al...@google.com> #15
We still have some @DoNotInline
usages lingering because of conflicts with androidx-platform-dev
. Once the upstreaming is completed and those are removed, I think we should call it done. Manually inlining the ApiXXImpl
classes isn't urgent or really necessary.
bu...@google.com <bu...@google.com> #16
Bugjuggler:
ap...@google.com <ap...@google.com> #17
Branch: androidx-main
commit c520a87c6e27a14472cfcf8b03c0d4ea8c1a37c7
Author: Ian Baker <ibaker@google.com>
Date: Thu Jul 18 08:32:31 2024
Remove `@DoNotInline` recommendations from go/androidx-api-guidelines
The associated lint check has been disabled, see
PiperOrigin-RevId: 653629895
Change-Id: I186c052a059e5ad30386cd45beb47f24bdafe657
M docs/api_guidelines/compat.md
M docs/api_guidelines/platform_compat.md
bu...@google.com <bu...@google.com>
al...@google.com <al...@google.com> #18
We'll take removing manual outlining on a case-by-case basis. Removing it all at once would be a lot of work for not much gain.
pr...@google.com <pr...@google.com> #19
The following release(s) address this bug.It is possible this bug has only been partially addressed:
androidx.benchmark:benchmark-macro:1.3.0-rc01
androidx.camera:camera-camera2:1.4.0-rc01
androidx.camera:camera-core:1.4.0-rc01
androidx.camera:camera-effects:1.4.0-rc01
androidx.camera:camera-extensions:1.4.0-rc01
androidx.camera:camera-video:1.4.0-rc01
androidx.camera:camera-view:1.4.0-rc01
androidx.constraintlayout:constraintlayout-compose:1.1.0-alpha14
androidx.constraintlayout:constraintlayout-compose-android:1.1.0-alpha14
androidx.lifecycle:lifecycle-process:2.9.0-alpha01
androidx.profileinstaller:profileinstaller:1.4.0-alpha02
androidx.recyclerview:recyclerview:1.4.0-alpha02
androidx.sqlite:sqlite-framework:2.5.0-alpha06
androidx.sqlite:sqlite-framework-android:2.5.0-alpha06
androidx.sqlite:sqlite-framework-iosarm64:2.5.0-alpha06
androidx.sqlite:sqlite-framework-iossimulatorarm64:2.5.0-alpha06
androidx.sqlite:sqlite-framework-iosx64:2.5.0-alpha06
androidx.sqlite:sqlite-framework-linuxx64:2.5.0-alpha06
androidx.sqlite:sqlite-framework-macosarm64:2.5.0-alpha06
androidx.sqlite:sqlite-framework-macosx64:2.5.0-alpha06
androidx.window:window:1.4.0-alpha01
na...@google.com <na...@google.com> #20
The following release(s) address this bug.It is possible this bug has only been partially addressed:
androidx.core:core:1.15.0-alpha02
androidx.core:core-ktx:1.15.0-alpha02
androidx.emoji2:emoji2:1.5.0-rc01
androidx.webkit:webkit:1.12.0-beta01
pr...@google.com <pr...@google.com> #21
The following release(s) address this bug.It is possible this bug has only been partially addressed:
androidx.activity:activity:1.10.0-alpha02
androidx.core:core-splashscreen:1.2.0-alpha02
androidx.work:work-multiprocess:2.10.0-alpha03
androidx.work:work-runtime:2.10.0-alpha03
na...@google.com <na...@google.com> #22
The following release(s) address this bug.It is possible this bug has only been partially addressed:
androidx.car.app:app:1.7.0-beta02
androidx.car.app:app-automotive:1.7.0-beta02
androidx.privacysandbox.ui:ui-client:1.0.0-alpha10
androidx.privacysandbox.ui:ui-provider:1.0.0-alpha10
androidx.wear.watchface:watchface-complications-data:1.3.0-alpha04
pr...@google.com <pr...@google.com> #23
The following release(s) address this bug.It is possible this bug has only been partially addressed:
androidx.input:input-motionprediction:1.0.0-beta05
androidx.webkit:webkit:1.12.1
na...@google.com <na...@google.com> #24
The following release(s) address this bug.It is possible this bug has only been partially addressed:
androidx.core:core-location-altitude:1.0.0-alpha03
na...@google.com <na...@google.com> #25
The following release(s) address this bug.It is possible this bug has only been partially addressed:
androidx.exifinterface:exifinterface:1.4.0-alpha01
pr...@google.com <pr...@google.com> #26
The following release(s) address this bug.It is possible this bug has only been partially addressed:
androidx.core:core-telecom:1.0.0-beta01
androidx.mediarouter:mediarouter:1.8.0-alpha01
androidx.transition:transition:1.6.0-alpha01
na...@google.com <na...@google.com> #27
The following release(s) address this bug.It is possible this bug has only been partially addressed:
androidx.browser:browser:1.9.0-alpha01
androidx.versionedparcelable:versionedparcelable:1.2.1
pr...@google.com <pr...@google.com> #28
The following release(s) address this bug.It is possible this bug has only been partially addressed:
androidx.tracing:tracing:1.3.0-beta01
Description
R8 may double-outline platform NewApi calls when automatic outlining is enabled, so we should consider no-op'ing the
@DoNotInline
annotation when we're using an R8 version that does outlining.Looping in from email,