Status Update
Comments
bi...@google.com <bi...@google.com>
jv...@google.com <jv...@google.com>
ga...@google.com <ga...@google.com>
au...@google.com <au...@google.com> #2
Branch: androidx-main
commit 66494e2d6810347e6a3b41ec3f2665e598f108f0
Author: Ian Lake <ilake@google.com>
Date: Thu Apr 14 00:14:24 2022
Ensure that SavedStateHandle restores upon initial creation
runOnNextRecreation() only runs on the next time
the lifecycle reaches CREATED, not the first time.
By using a LifecycleObserver directly, we ensure that
each Lifecycle move causes a performRestore() to
consistently happen.
Test: existing tests pass, sample app works
BUG: 228865698
Relnote: "Fixed an issue where nesting one `NavHost` within
another `NavHost` in a non-primary bottom navigation tab
would lead to an `IllegalStateException` when using
multiple back stacks."
Change-Id: I11bd5173f035ae1da7922b4142fcedc0f3b54ff6
M lifecycle/lifecycle-viewmodel-savedstate/src/main/java/androidx/lifecycle/SavedStateHandleSupport.kt
bi...@google.com <bi...@google.com> #3
au...@google.com <au...@google.com> #4
Thanks for confirming! The fix will be in the next release of Lifecycle (2.5.0-beta01).
bi...@google.com <bi...@google.com> #5
using jetpack compose / bottom navigation with NavHost
Fatal Exception: java.lang.IllegalStateException: You cannot access the NavBackStackEntry's ViewModels after the NavBackStackEntry is destroyed.
at androidx.navigation.NavBackStackEntry.getViewModelStore(NavBackStackEntry.kt:192)
at androidx.navigation.compose.NavHostKt.NavHost(NavHost.kt:106)
at androidx.navigation.compose.NavHostKt.NavHost(NavHost.kt:69)
ga...@google.com <ga...@google.com> #6
I am seeing a high occurance rate with 2.5.0-beta01 as well.
bi...@google.com <bi...@google.com> #7
Re remember
around getBackStackEntry
needs to be updated.
sp...@google.com <sp...@google.com> #8
We are using Compose version: 1.2.0-rc03
and jetpack lifecycle version: 2.4.1
Fatal Exception: java.lang.IllegalStateException: You cannot access the NavBackStackEntry's ViewModels after the NavBackStackEntry is destroyed.
at androidx.navigation.NavBackStackEntry.getViewModelStore(NavBackStackEntry.kt:192)
at androidx.navigation.compose.NavHostKt.NavHost(NavHost.kt:106)
at androidx.navigation.compose.NavHostKt.NavHost(NavHost.kt:69)
sp...@google.com <sp...@google.com> #9
Please file a new bug with a minimal sample project that reproduces your error.
xa...@google.com <xa...@google.com> #10
sp...@google.com <sp...@google.com> #11
Re backQueue
is not part of the public API surface and never has been. Calling anything on that is always, always, always the wrong thing to do.
sp...@google.com <sp...@google.com> #12
Any updates? This issue is persistent for almost 6 months and its getting crazier.
au...@google.com <au...@google.com> #15
It's still happening with navigation-compose
2.7.0 and lifecycle
2.6.1
bi...@google.com <bi...@google.com> #17
Still happening on navigation-compose v2.7.7
/ lifecycle v2.7.0
.
Any updates / prospect? Workaround maybe?
ga...@google.com <ga...@google.com> #18
Considering there is a workaround (to allow-list this file) moving this to I beta blocking.
je...@google.com <je...@google.com> #19
Bingran asked me if I had any insights about this issue and mentioned that Aurimas didn't manage to reproduce it locally and suspected that it only happened in an incremental build.
I'm still investigating, but I notice a non-incremental build that failed on Aurimas's change from
for
je...@google.com <je...@google.com> #20
bi...@google.com <bi...@google.com> #21
In terms of #20, I think that is expected because we normally see config cache miss if a file is created during configuration. However, if a file get modified, I assume it would say xxx has been modified.
je...@google.com <je...@google.com> #22
This debugging change says that:
analytics.settings was written at:
2023-08-30 20:08:54.977482090 +0000
first Gradle start at Wed Aug 30 20:03:28 UTC 2023
first Gradle end at Wed Aug 30 20:09:35 UTC 2023
It looks like something in the first build wrote this file somewhat near the end of the build
Specifically, about 5m26s - 5m27s after the start of the build and 40s-41s before the end of the build
Resulting scan:
I see a few tasks that started in this build scan at approximately 5m26s, mostly lint-related.
I'll see if I can get more details
je...@google.com <je...@google.com> #23
I checked some timestamps again in aosp/2731437
Gradle started at 21:01:18 UTC 2023
Gradle completed at 21:07:21 UTC 2023
analytics.settings created at 21:05:35.748195543
4m17s after Gradle started
1m46s before Gradle ended
Uploaded the scan to
I see a few tasks running in that scan around 4m17s, mostly but not exclusively lint
je...@google.com <je...@google.com> #24
I just tried this command:
OUT_DIR=../../out DIST_DIR=../../out/dist ./busytown/androidx_compose_multiplatform.sh
and found that that reproduced the error on my computer. Maybe we can simplify it from there
sp...@google.com <sp...@google.com> #25
I see a few tasks running in that scan around 4m17s, mostly but not exclusively lint
I took a look at my previous lint fix after seeing this.
I think the problem might be that LintClient.isGradle
might not always be true when running the lint tasks, in which case
LintClient.isGradle
should be true when running lint tasks from Gradle because we invoke lint with --client-id gradle
, but when I run grep -r "client=\""
on the AndroidX codebase, I see a mix of client="gradle"
and client="cli"
, which suggests to me that the client id is being reset in some cases.
je...@google.com <je...@google.com> #26
I ran this command:
rm ../../out -rf && OUT_DIR=../../out DIST_DIR=../../out/dist ./gradlew lintAnalyzeDebug -Pandroidx.verifyUpToDate
and it created ../../out/.gradle/.android/analytics.settings
but when I ran this command
rm ../../out -rf && OUT_DIR=../../out DIST_DIR=../../out/dist ./gradlew lintAnalyzeDebug -Pandroidx.verifyUpToDate --max-workers 1
it didn't create ../../out/.gradle/.android/analytics.settings
so it could be that reproducing the error requires running certain tasks at the same time
je...@google.com <je...@google.com> #27
Combining
I think lint runs inside the Gradle Daemon JVM process - is that right?
I notice LintClient.kt mentions “@JvmStatic lateinit var clientName: String”. I think that means multiple lint clients might be able to overwrite each others’ values?
Maybe I can figure out which tasks set the lint client to something else
bi...@google.com <bi...@google.com>
je...@google.com <je...@google.com> #30
Thanks!
I investigated a little bit more into the plausibility of our guess (parallel lint invocations causing incorrect client) and it seems to be holding up:
1: I notice that aosp/2724176 changes some clients from "cli" to "gradle" for example
2: I regenerated all of the lint baselines via echo | tee
find -name lint-baseline.xml && ./gradlew updateLintBaseline --max-workers=1
and found that it put 'client="gradle"' into the resulting files
I'll check again later after updating to the corresponding AGP
sp...@google.com <sp...@google.com> #31
Thanks again Jeff!
Reassigning back to Bingran assuming the lint issue has been resolved.
In our integration tests, there are cases(e.g. AnalyticsConfigurationCachingTest) we need to create this file, therefore you would get config cache miss. So it is intended that we still have an entry in ConfigurationCacheReportChecker.
Unfortunately, yes, AnalyticsSettings
is still interacting with the file in a way that is not compatible with configuration caching.
sp...@google.com <sp...@google.com>
an...@google.com <an...@google.com> #33
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 Hedgehog | 2023.1.1 Beta 4
- Android Gradle Plugin 8.2.0-beta04
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!
an...@google.com <an...@google.com> #34
The fixes for this issue are now also available in:
- Android Studio Iguana | 2023.2.1 Canary 4
- Android Gradle Plugin 8.3.0-alpha04
We encourage you to try the latest update.
If you notice further issues or have questions, please file a new bug report.
jf...@block.xyz <jf...@block.xyz> #35
In Gradle 8.3 we are ignoring this file with the following in gradle.properties
:
org.gradle.configuration-cache.inputs.unsafe.ignore.file-system-checks=**/.gradle/.android/analytics.settings
However, the AnalyticsService still breaks configuration on demand for some people:
> Failed to apply plugin 'com.android.internal.library'.
> Accessing GradleBuildProject.Builder through AnalyticsConfiguratorService is not allowed after AnalyticsService is created.
We've found that setting "hasOptedIn":false,"
in ~.gradle/.android/analytics.settings
fixes the issue.
sp...@google.com <sp...@google.com> #36
Re: #35, that looks like
mf...@gmail.com <mf...@gmail.com> #37
وجيهكم خلوني في حالي ..ماهو مقر.طالب
Description
DESCRIBE THE ISSUE IN DETAIL:
STEPS TO REPRODUCE:
./busytown/androidx_device_tests.sh
Expected
Our build is run twice (for up to dateness validation). Second run uses configuration cache
Actual
Second build does not use configuration cache, it is dropped due to