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-master-dev
commit 1dc8469381c79612a3d8f7ec138866c732506950
Author: Jeremy Woods <jbwoods@google.com>
Date: Tue Jun 16 16:00:41 2020
Add ActivityResult lint to update Fragment dependency
When using the ActivityResult APIs, you should update the
fragment dependency to at least 1.3.0-alpha06 to ensure that
FragmentActivity is compatible.
This change adds a lint check to notify the user that their dependency
should be updated. This is only a warning, the user must fix the
dependency manually. The quick fix will be in a later CL.
Test: added ActivityResultFragmentVersionDetectorTest
Bug: 152554847
Change-Id: Ie59c1e2d428ce473f4e57939a69616b9052936c5
A activity/activity-lint/src/main/java/androidx/activity/lint/ActivityIssueRegistry.kt
A activity/activity-lint/src/main/java/androidx/activity/lint/ActivityResultFragmentVersionDetector.kt
A activity/activity-lint/src/main/resources/META-INF/services/com.android.tools.lint.client.api.IssueRegistry
A activity/activity-lint/src/test/java/androidx/activity/lint/ActivityResultFragmentVersionDetectorTest.kt
A activity/activity-lint/src/test/java/androidx/activity/lint/ApiLintVersionsTest.kt
A activity/activity-lint/src/test/java/androidx/activity/lint/stubs/Stubs.kt
bi...@google.com <bi...@google.com> #3
Branch: androidx-master-dev
commit 88b606aa168d0131d366a790183453d52ed97d26
Author: Jeremy Woods <jbwoods@google.com>
Date: Thu Jun 11 11:27:35 2020
Create activity-lint module
Created module for custom activity lint checks.
Test: ./gradlew bOS
Bug: 152554847
Change-Id: Ice5a9794fcc769a82f1831cc10337d9b82fbbb71
A activity/activity-lint/build.gradle
M buildSrc/src/main/kotlin/androidx/build/PublishDocsRules.kt
M settings.gradle
au...@google.com <au...@google.com> #4
This has been fixed internally and will be available in the Activity 1.2.0-alpha07 release.
bi...@google.com <bi...@google.com> #5
Branch: androidx-master-dev
commit a17089efb14fcfb5e3938680f0d3b3103245092c
Author: Jeremy Woods <jbwoods@google.com>
Date: Wed Jul 01 17:59:41 2020
Publish the activity lint rule
We should actually publish the lint rule.
Also ignoring any project dependencies since they would be using the
most recent version of fragments anyway.
Test: ./gradlew bOS
Bug: 152554847
Change-Id: Ica57230490024b6aff32fcc3ec83d1c6f800f05f
M activity/activity-ktx/build.gradle
M activity/activity-lint/src/main/java/androidx/activity/lint/ActivityResultFragmentVersionDetector.kt
M activity/activity-lint/src/test/java/androidx/activity/lint/ActivityResultFragmentVersionDetectorTest.kt
M activity/activity/build.gradle
M activity/integration-tests/testapp/build.gradle
ga...@google.com <ga...@google.com> #6
Branch: androidx-master-dev
commit be64fe99f1e6800d2df7bc1a0a5ca4ffc38a2f6a
Author: Jeremy Woods <jbwoods@google.com>
Date: Tue Jul 07 15:09:23 2020
Make ActivityResult lint look for transitive dependencies
Instead of only looking for explicit fragment dependencies, the
ActivityResultFragmentVersionDetector should also take into
consideration transitive dependencies. This ensures we can catch older
versions in apps that use libraries like appcompat and navigation.
Test: ./gradlew bOS all exisiting tests pass
Bug: 152554847
Change-Id: Id0a3b6c69a685cc46b71f1977a348189780b385a
M activity/activity-ktx/build.gradle
M activity/activity-lint/src/main/java/androidx/activity/lint/ActivityResultFragmentVersionDetector.kt
M activity/integration-tests/testapp/build.gradle
bi...@google.com <bi...@google.com> #7
The new lint check can now detect the fragment library as a transitive dependency.
sp...@google.com <sp...@google.com> #8
This change seems to crash lint with NoSuchMethodError on Android Studio 4.1.0-beta04.
/home/circleci/code/mobile: Error: Unexpected failure during lint analysis (this is a bug in lint or one of the libraries it depends on)
Message: com.android.tools.lint.detector.api.Project.getCurrentVariant()Lcom/android/builder/model/Variant;
The crash seems to involve the detector androidx.activity.lint.ActivityResultFragmentVersionDetector.
You can try disabling it with something like this:
android {
lintOptions {
disable "InvalidFragmentVersionForActivityResult"
}
}
Stack: NoSuchMethodError:ActivityResultFragmentVersionDetector.checkDslPropertyAssignment(ActivityResultFragmentVersionDetector.kt:97)←Detector.checkDslPropertyAssignment(Detector.kt:418)←UastGradleVisitor.handleMethodCall(UastGradleVisitor.kt:190)←UastGradleVisitor.access$handleMethodCall(UastGradleVisitor.kt:34)←UastGradleVisitor$visitBuildScript$1.visitCallExpression(UastGradleVisitor.kt:40)←KotlinUFunctionCallExpression.accept(KotlinUFunctionCallExpression.kt:205)←ImplementationUtilsKt.acceptList(implementationUtils.kt:23)←UBlockExpression$DefaultImpls.accept(UBlockExpression.kt:21)
You can set environment variable LINT_PRINT_STACKTRACE=true to dump a full stacktrace to stdout. [LintError]
sp...@google.com <sp...@google.com> #9
Re #8 - please file a new bug with a sample project.
xa...@google.com <xa...@google.com> #10
Scott, do we have a cherry-pick ready for the lint fix?
sp...@google.com <sp...@google.com> #11
Yes, Change-Id: I994677cebb63de5472bb8ea561bdad0336c72f55
sp...@google.com <sp...@google.com> #12
Saurabh, it looks like Xav is OOO until after the deadline for patch 1 check-ins.
Can you or someone else give DrNo approval for ag/I994677cebb63de5472bb8ea561bdad0336c72f55?
sp...@google.com <sp...@google.com> #13
Hey Saurabh, ag/I994677cebb63de5472bb8ea561bdad0336c72f55 still needs DrNo approval. Can you give approval, or can you reassign to someone who can?
au...@google.com <au...@google.com> #14
I still see it being broken in AGP 8.2.0-alpha15.
See me trying to remove the entry from the allow list:
au...@google.com <au...@google.com> #15
Here is a stacktrace from AGP 8.2.0-alpha15 / Gradle 8.3-rc-1
fileExists:380, Instrumented (org.gradle.internal.classpath)
intercept_exists:71, FileInterceptorsDeclaration (org.gradle.internal.classpath.declarations)
settingsFileExists:424, AnalyticsSettings (com.android.tools.analytics)
needToInitializeAnalytics:200, ProjectOptions (com.android.build.gradle.options)
isAnalyticsEnabled:180, ProjectOptions (com.android.build.gradle.options)
basePluginApply:123, AndroidPluginBaseServices (com.android.build.gradle.internal.plugins)
run:348, BasePlugin$apply$1 (com.android.build.gradle.internal.plugins)
runAction:27, CrashReporting (com.android.build.gradle.internal.crash)
apply:347, BasePlugin (com.android.build.gradle.internal.plugins)
apply:126, BasePlugin (com.android.build.gradle.internal.plugins)
applyImperative:43, ImperativeOnlyPluginTarget (org.gradle.api.internal.plugins)
applyImperative:51, RuleBasedPluginTarget (org.gradle.api.internal.plugins)
addPlugin:187, DefaultPluginManager (org.gradle.api.internal.plugins)
access$100:52, DefaultPluginManager (org.gradle.api.internal.plugins)
run:282, DefaultPluginManager$AddPluginBuildOperation (org.gradle.api.internal.plugins)
execute:29, DefaultBuildOperationRunner$1 (org.gradle.internal.operations)
execute:26, DefaultBuildOperationRunner$1 (org.gradle.internal.operations)
execute:66, DefaultBuildOperationRunner$2 (org.gradle.internal.operations)
execute:59, DefaultBuildOperationRunner$2 (org.gradle.internal.operations)
execute:157, DefaultBuildOperationRunner (org.gradle.internal.operations)
execute:59, DefaultBuildOperationRunner (org.gradle.internal.operations)
run:47, DefaultBuildOperationRunner (org.gradle.internal.operations)
run:68, DefaultBuildOperationExecutor (org.gradle.internal.operations)
lambda$doApply$0:167, DefaultPluginManager (org.gradle.api.internal.plugins)
execute:-1, DefaultPluginManager$$Lambda$772/0x0000000801239068 (org.gradle.api.internal.plugins)
apply:44, DefaultUserCodeApplicationContext (org.gradle.configuration.internal)
doApply:166, DefaultPluginManager (org.gradle.api.internal.plugins)
apply:146, DefaultPluginManager (org.gradle.api.internal.plugins)
applyType:161, DefaultObjectConfigurationAction (org.gradle.api.internal.plugins)
access$200:43, DefaultObjectConfigurationAction (org.gradle.api.internal.plugins)
run:98, DefaultObjectConfigurationAction$3 (org.gradle.api.internal.plugins)
execute:184, DefaultObjectConfigurationAction (org.gradle.api.internal.plugins)
apply:49, AbstractPluginAware (org.gradle.api.internal.project)
apply:28, LibraryPlugin (com.android.build.gradle)
apply:24, LibraryPlugin (com.android.build.gradle)
applyImperative:43, ImperativeOnlyPluginTarget (org.gradle.api.internal.plugins)
applyImperative:51, RuleBasedPluginTarget (org.gradle.api.internal.plugins)
addPlugin:187, DefaultPluginManager (org.gradle.api.internal.plugins)
access$100:52, DefaultPluginManager (org.gradle.api.internal.plugins)
run:282, DefaultPluginManager$AddPluginBuildOperation (org.gradle.api.internal.plugins)
execute:29, DefaultBuildOperationRunner$1 (org.gradle.internal.operations)
execute:26, DefaultBuildOperationRunner$1 (org.gradle.internal.operations)
execute:66, DefaultBuildOperationRunner$2 (org.gradle.internal.operations)
execute:59, DefaultBuildOperationRunner$2 (org.gradle.internal.operations)
execute:157, DefaultBuildOperationRunner (org.gradle.internal.operations)
execute:59, DefaultBuildOperationRunner (org.gradle.internal.operations)
run:47, DefaultBuildOperationRunner (org.gradle.internal.operations)
run:68, DefaultBuildOperationExecutor (org.gradle.internal.operations)
lambda$doApply$0:167, DefaultPluginManager (org.gradle.api.internal.plugins)
execute:-1, DefaultPluginManager$$Lambda$772/0x0000000801239068 (org.gradle.api.internal.plugins)
apply:44, DefaultUserCodeApplicationContext (org.gradle.configuration.internal)
doApply:166, DefaultPluginManager (org.gradle.api.internal.plugins)
apply:137, DefaultPluginManager (org.gradle.api.internal.plugins)
lambda$applyPlugin$1:148, DefaultPluginRequestApplicator (org.gradle.plugin.use.internal)
run:-1, DefaultPluginRequestApplicator$$Lambda$2374/0x00000008018feae0 (org.gradle.plugin.use.internal)
applyPlugin:199, DefaultPluginRequestApplicator (org.gradle.plugin.use.internal)
applyPlugin:146, DefaultPluginRequestApplicator (org.gradle.plugin.use.internal)
access$200:60, DefaultPluginRequestApplicator (org.gradle.plugin.use.internal)
lambda$add$1:119, DefaultPluginRequestApplicator$1$1 (org.gradle.plugin.use.internal)
accept:-1, DefaultPluginRequestApplicator$1$1$$Lambda$2372/0x00000008018fe670 (org.gradle.plugin.use.internal)
lambda$applyPlugins$0:142, DefaultPluginRequestApplicator (org.gradle.plugin.use.internal)
accept:-1, DefaultPluginRequestApplicator$$Lambda$2373/0x00000008018fe8a8 (org.gradle.plugin.use.internal)
forEach:75, Iterable (java.lang)
applyPlugins:142, DefaultPluginRequestApplicator (org.gradle.plugin.use.internal)
apply:117, DefaultScriptPluginFactory$ScriptPluginImpl (org.gradle.configuration)
run:65, BuildOperationScriptPlugin$1 (org.gradle.configuration)
execute:29, DefaultBuildOperationRunner$1 (org.gradle.internal.operations)
execute:26, DefaultBuildOperationRunner$1 (org.gradle.internal.operations)
execute:66, DefaultBuildOperationRunner$2 (org.gradle.internal.operations)
execute:59, DefaultBuildOperationRunner$2 (org.gradle.internal.operations)
execute:157, DefaultBuildOperationRunner (org.gradle.internal.operations)
execute:59, DefaultBuildOperationRunner (org.gradle.internal.operations)
run:47, DefaultBuildOperationRunner (org.gradle.internal.operations)
run:68, DefaultBuildOperationExecutor (org.gradle.internal.operations)
lambda$apply$0:62, BuildOperationScriptPlugin (org.gradle.configuration)
execute:-1, BuildOperationScriptPlugin$$Lambda$405/0x000000080107f8b8 (org.gradle.configuration)
apply:44, DefaultUserCodeApplicationContext (org.gradle.configuration.internal)
apply:62, BuildOperationScriptPlugin (org.gradle.configuration)
accept:-1, BuildScriptProcessor$$Lambda$1367/0x00000008015823a0 (org.gradle.configuration.project)
lambda$applyToMutableState$1:395, DefaultProjectStateRegistry$ProjectStateImpl (org.gradle.api.internal.project)
apply:-1, DefaultProjectStateRegistry$ProjectStateImpl$$Lambda$1309/0x0000000801536908 (org.gradle.api.internal.project)
fromMutableState:413, DefaultProjectStateRegistry$ProjectStateImpl (org.gradle.api.internal.project)
applyToMutableState:394, DefaultProjectStateRegistry$ProjectStateImpl (org.gradle.api.internal.project)
execute:46, BuildScriptProcessor (org.gradle.configuration.project)
execute:27, BuildScriptProcessor (org.gradle.configuration.project)
evaluate:35, ConfigureActionsProjectEvaluator (org.gradle.configuration.project)
lambda$run$0:109, LifecycleProjectEvaluator$EvaluateProject (org.gradle.configuration.project)
accept:-1, LifecycleProjectEvaluator$EvaluateProject$$Lambda$1347/0x0000000801568260 (org.gradle.configuration.project)
lambda$applyToMutableState$1:395, DefaultProjectStateRegistry$ProjectStateImpl (org.gradle.api.internal.project)
apply:-1, DefaultProjectStateRegistry$ProjectStateImpl$$Lambda$1309/0x0000000801536908 (org.gradle.api.internal.project)
fromMutableState:413, DefaultProjectStateRegistry$ProjectStateImpl (org.gradle.api.internal.project)
applyToMutableState:394, DefaultProjectStateRegistry$ProjectStateImpl (org.gradle.api.internal.project)
run:100, LifecycleProjectEvaluator$EvaluateProject (org.gradle.configuration.project)
execute:29, DefaultBuildOperationRunner$1 (org.gradle.internal.operations)
execute:26, DefaultBuildOperationRunner$1 (org.gradle.internal.operations)
execute:66, DefaultBuildOperationRunner$2 (org.gradle.internal.operations)
execute:59, DefaultBuildOperationRunner$2 (org.gradle.internal.operations)
execute:157, DefaultBuildOperationRunner (org.gradle.internal.operations)
execute:59, DefaultBuildOperationRunner (org.gradle.internal.operations)
run:47, DefaultBuildOperationRunner (org.gradle.internal.operations)
run:68, DefaultBuildOperationExecutor (org.gradle.internal.operations)
evaluate:72, LifecycleProjectEvaluator (org.gradle.configuration.project)
evaluate:788, DefaultProject (org.gradle.api.internal.project)
evaluate:156, DefaultProject (org.gradle.api.internal.project)
lambda$ensureSelfConfigured$2:84, ProjectLifecycleController (org.gradle.api.internal.project)
run:-1, ProjectLifecycleController$$Lambda$1344/0x0000000801561228 (org.gradle.api.internal.project)
lambda$doTransition$14:255, StateTransitionController (org.gradle.internal.model)
get:-1, StateTransitionController$$Lambda$341/0x00000008010060c8 (org.gradle.internal.model)
doTransition:266, StateTransitionController (org.gradle.internal.model)
doTransition:254, StateTransitionController (org.gradle.internal.model)
lambda$maybeTransitionIfNotCurrentlyTransitioning$10:199, StateTransitionController (org.gradle.internal.model)
run:-1, StateTransitionController$$Lambda$1345/0x0000000801561450 (org.gradle.internal.model)
withLock:34, DefaultSynchronizer (org.gradle.internal.work)
maybeTransitionIfNotCurrentlyTransitioning:195, StateTransitionController (org.gradle.internal.model)
ensureSelfConfigured:84, ProjectLifecycleController (org.gradle.api.internal.project)
ensureConfigured:369, DefaultProjectStateRegistry$ProjectStateImpl (org.gradle.api.internal.project)
configure:33, TaskPathProjectEvaluator (org.gradle.execution)
getSelection:59, DefaultTaskSelector (org.gradle.execution)
resolveTaskName:98, DefaultBuildTaskSelector (org.gradle.execution.selection)
parseTasks:49, CommandLineTaskParser (org.gradle.execution.commandline)
scheduleRequestedTasks:51, TaskNameResolvingBuildTaskScheduler (org.gradle.execution)
scheduleRequestedTasks:72, DefaultTasksBuildTaskScheduler (org.gradle.execution)
lambda$scheduleRequestedTasks$0:46, DefaultTaskExecutionPreparer (org.gradle.initialization)
run:-1, DefaultTaskExecutionPreparer$$Lambda$1748/0x00000008017f6d60 (org.gradle.initialization)
create:31, Factories$1 (org.gradle.internal)
withReplacedLocks:360, DefaultWorkerLeaseService (org.gradle.internal.work)
withMutableStateOfAllProjects:228, DefaultProjectStateRegistry$DefaultBuildProjectRegistry (org.gradle.api.internal.project)
withMutableStateOfAllProjects:221, DefaultProjectStateRegistry$DefaultBuildProjectRegistry (org.gradle.api.internal.project)
scheduleRequestedTasks:45, DefaultTaskExecutionPreparer (org.gradle.initialization)
lambda$scheduleRequestedTasks$0:76, VintageBuildModelController (org.gradle.initialization)
run:-1, VintageBuildModelController$$Lambda$1747/0x00000008017f6b38 (org.gradle.initialization)
lambda$inState$1:99, StateTransitionController (org.gradle.internal.model)
get:-1, StateTransitionController$$Lambda$300/0x0000000800fd08a0 (org.gradle.internal.model)
lambda$inState$2:114, StateTransitionController (org.gradle.internal.model)
create:-1, StateTransitionController$$Lambda$301/0x0000000800fd0ac8 (org.gradle.internal.model)
withLock:44, DefaultSynchronizer (org.gradle.internal.work)
inState:110, StateTransitionController (org.gradle.internal.model)
inState:98, StateTransitionController (org.gradle.internal.model)
scheduleRequestedTasks:76, VintageBuildModelController (org.gradle.initialization)
scheduleRequestedTasks:55, ConfigurationCacheAwareBuildModelController (org.gradle.configurationcache)
addRequestedTasks:351, DefaultBuildLifecycleController$DefaultWorkGraphBuilder (org.gradle.internal.build)
lambda$scheduleRequestedTasks$0:41, DefaultBuildTreeWorkPreparer (org.gradle.internal.buildtree)
accept:-1, DefaultBuildTreeWorkPreparer$$Lambda$1744/0x00000008017e7d08 (org.gradle.internal.buildtree)
lambda$populateWorkGraph$7:186, DefaultBuildLifecycleController (org.gradle.internal.build)
accept:-1, DefaultBuildLifecycleController$$Lambda$1746/0x00000008017f6228 (org.gradle.internal.build)
populateWorkGraph:42, DefaultBuildWorkPreparer (org.gradle.internal.build)
populateTaskGraph:106, BuildOperationFiringBuildWorkPreparer$PopulateWorkGraph (org.gradle.internal.build)
run:92, BuildOperationFiringBuildWorkPreparer$PopulateWorkGraph (org.gradle.internal.build)
execute:29, DefaultBuildOperationRunner$1 (org.gradle.internal.operations)
execute:26, DefaultBuildOperationRunner$1 (org.gradle.internal.operations)
execute:66, DefaultBuildOperationRunner$2 (org.gradle.internal.operations)
execute:59, DefaultBuildOperationRunner$2 (org.gradle.internal.operations)
execute:157, DefaultBuildOperationRunner (org.gradle.internal.operations)
execute:59, DefaultBuildOperationRunner (org.gradle.internal.operations)
run:47, DefaultBuildOperationRunner (org.gradle.internal.operations)
run:68, DefaultBuildOperationExecutor (org.gradle.internal.operations)
populateWorkGraph:67, BuildOperationFiringBuildWorkPreparer (org.gradle.internal.build)
lambda$populateWorkGraph$8:186, DefaultBuildLifecycleController (org.gradle.internal.build)
run:-1, DefaultBuildLifecycleController$$Lambda$1745/0x00000008017f6000 (org.gradle.internal.build)
lambda$inState$1:99, StateTransitionController (org.gradle.internal.model)
get:-1, StateTransitionController$$Lambda$300/0x0000000800fd08a0 (org.gradle.internal.model)
lambda$inState$2:114, StateTransitionController (org.gradle.internal.model)
create:-1, StateTransitionController$$Lambda$301/0x0000000800fd0ac8 (org.gradle.internal.model)
withLock:44, DefaultSynchronizer (org.gradle.internal.work)
inState:110, StateTransitionController (org.gradle.internal.model)
inState:98, StateTransitionController (org.gradle.internal.model)
populateWorkGraph:186, DefaultBuildLifecycleController (org.gradle.internal.build)
populateWorkGraph:169, DefaultBuildWorkGraphController$DefaultBuildWorkGraph (org.gradle.internal.build)
populateWorkGraph:76, DefaultBuildController (org.gradle.composite.internal)
withWorkGraph:153, DefaultIncludedBuildTaskGraph$DefaultBuildTreeWorkGraphBuilder (org.gradle.composite.internal)
lambda$scheduleRequestedTasks$1:41, DefaultBuildTreeWorkPreparer (org.gradle.internal.buildtree)
accept:-1, DefaultBuildTreeWorkPreparer$$Lambda$1740/0x00000008017e5920 (org.gradle.internal.buildtree)
run:209, DefaultIncludedBuildTaskGraph$DefaultBuildTreeWorkGraph$1 (org.gradle.composite.internal)
execute:29, DefaultBuildOperationRunner$1 (org.gradle.internal.operations)
execute:26, DefaultBuildOperationRunner$1 (org.gradle.internal.operations)
execute:66, DefaultBuildOperationRunner$2 (org.gradle.internal.operations)
execute:59, DefaultBuildOperationRunner$2 (org.gradle.internal.operations)
execute:157, DefaultBuildOperationRunner (org.gradle.internal.operations)
execute:59, DefaultBuildOperationRunner (org.gradle.internal.operations)
run:47, DefaultBuildOperationRunner (org.gradle.internal.operations)
run:68, DefaultBuildOperationExecutor (org.gradle.internal.operations)
scheduleWork:204, DefaultIncludedBuildTaskGraph$DefaultBuildTreeWorkGraph (org.gradle.composite.internal)
scheduleRequestedTasks:37, DefaultBuildTreeWorkPreparer (org.gradle.internal.buildtree)
invoke:46, ConfigurationCacheAwareBuildTreeWorkController$scheduleAndRunRequestedTasks$executionResult$1$result$1 (org.gradle.configurationcache)
invoke:45, ConfigurationCacheAwareBuildTreeWorkController$scheduleAndRunRequestedTasks$executionResult$1$result$1 (org.gradle.configurationcache)
invoke:137, DefaultConfigurationCache$loadOrScheduleRequestedTasks$1 (org.gradle.configurationcache)
invoke:136, DefaultConfigurationCache$loadOrScheduleRequestedTasks$1 (org.gradle.configurationcache)
runWorkThatContributesToCacheEntry:303, DefaultConfigurationCache (org.gradle.configurationcache)
loadOrScheduleRequestedTasks:136, DefaultConfigurationCache (org.gradle.configurationcache)
apply:45, ConfigurationCacheAwareBuildTreeWorkController$scheduleAndRunRequestedTasks$executionResult$1 (org.gradle.configurationcache)
apply:44, ConfigurationCacheAwareBuildTreeWorkController$scheduleAndRunRequestedTasks$executionResult$1 (org.gradle.configurationcache)
withNewWorkGraph:112, DefaultIncludedBuildTaskGraph (org.gradle.composite.internal)
scheduleAndRunRequestedTasks:44, ConfigurationCacheAwareBuildTreeWorkController (org.gradle.configurationcache)
lambda$scheduleAndRunTasks$1:68, DefaultBuildTreeLifecycleController (org.gradle.internal.buildtree)
get:-1, DefaultBuildTreeLifecycleController$$Lambda$303/0x0000000800fd1410 (org.gradle.internal.buildtree)
lambda$runBuild$4:98, DefaultBuildTreeLifecycleController (org.gradle.internal.buildtree)
get:-1, DefaultBuildTreeLifecycleController$$Lambda$304/0x0000000800fd1638 (org.gradle.internal.buildtree)
lambda$transition$6:169, StateTransitionController (org.gradle.internal.model)
get:-1, StateTransitionController$$Lambda$306/0x0000000800fd1a88 (org.gradle.internal.model)
doTransition:266, StateTransitionController (org.gradle.internal.model)
lambda$transition$7:169, StateTransitionController (org.gradle.internal.model)
create:-1, StateTransitionController$$Lambda$305/0x0000000800fd1860 (org.gradle.internal.model)
withLock:44, DefaultSynchronizer (org.gradle.internal.work)
transition:169, StateTransitionController (org.gradle.internal.model)
runBuild:95, DefaultBuildTreeLifecycleController (org.gradle.internal.buildtree)
scheduleAndRunTasks:68, DefaultBuildTreeLifecycleController (org.gradle.internal.buildtree)
scheduleAndRunTasks:63, DefaultBuildTreeLifecycleController (org.gradle.internal.buildtree)
run:53, BuildModelActionRunner (org.gradle.tooling.internal.provider.runner)
run:35, ChainingBuildActionRunner (org.gradle.launcher.exec)
run:49, ProblemReportingBuildActionRunner (org.gradle.internal.buildtree)
run:65, BuildOutcomeReportingBuildActionRunner (org.gradle.launcher.exec)
run:140, FileSystemWatchingBuildActionRunner (org.gradle.tooling.internal.provider)
run:41, BuildCompletionNotifyingBuildActionRunner (org.gradle.launcher.exec)
lambda$execute$0:40, RootBuildLifecycleBuildActionExecutor (org.gradle.launcher.exec)
apply:-1, RootBuildLifecycleBuildActionExecutor$$Lambda$296/0x0000000800fc4228 (org.gradle.launcher.exec)
run:123, DefaultRootBuildState (org.gradle.composite.internal)
execute:40, RootBuildLifecycleBuildActionExecutor (org.gradle.launcher.exec)
execute:58, InitDeprecationLoggingActionExecutor (org.gradle.internal.buildtree)
execute:40, DefaultBuildTreeContext (org.gradle.internal.buildtree)
lambda$execute$0:65, BuildTreeLifecycleBuildActionExecutor (org.gradle.launcher.exec)
apply:-1, BuildTreeLifecycleBuildActionExecutor$$Lambda$175/0x0000000800e3d8a0 (org.gradle.launcher.exec)
run:58, BuildTreeState (org.gradle.internal.buildtree)
execute:65, BuildTreeLifecycleBuildActionExecutor (org.gradle.launcher.exec)
call:61, RunAsBuildOperationBuildActionExecutor$3 (org.gradle.launcher.exec)
call:57, RunAsBuildOperationBuildActionExecutor$3 (org.gradle.launcher.exec)
execute:204, DefaultBuildOperationRunner$CallableBuildOperationWorker (org.gradle.internal.operations)
execute:199, DefaultBuildOperationRunner$CallableBuildOperationWorker (org.gradle.internal.operations)
execute:66, DefaultBuildOperationRunner$2 (org.gradle.internal.operations)
execute:59, DefaultBuildOperationRunner$2 (org.gradle.internal.operations)
execute:157, DefaultBuildOperationRunner (org.gradle.internal.operations)
execute:59, DefaultBuildOperationRunner (org.gradle.internal.operations)
call:53, DefaultBuildOperationRunner (org.gradle.internal.operations)
call:73, DefaultBuildOperationExecutor (org.gradle.internal.operations)
execute:57, RunAsBuildOperationBuildActionExecutor (org.gradle.launcher.exec)
lambda$execute$0:36, RunAsWorkerThreadBuildActionExecutor (org.gradle.launcher.exec)
create:-1, RunAsWorkerThreadBuildActionExecutor$$Lambda$172/0x0000000800e15fa0 (org.gradle.launcher.exec)
withLocks:264, DefaultWorkerLeaseService (org.gradle.internal.work)
runAsWorkerThread:128, DefaultWorkerLeaseService (org.gradle.internal.work)
execute:36, RunAsWorkerThreadBuildActionExecutor (org.gradle.launcher.exec)
execute:110, ContinuousBuildActionExecutor (org.gradle.tooling.internal.provider.continuous)
execute:64, SubscribableBuildActionExecutor (org.gradle.tooling.internal.provider)
execute:46, DefaultBuildSessionContext (org.gradle.internal.session)
apply:92, BuildSessionLifecycleBuildActionExecuter$ActionImpl (org.gradle.tooling.internal.provider)
apply:80, BuildSessionLifecycleBuildActionExecuter$ActionImpl (org.gradle.tooling.internal.provider)
run:69, BuildSessionState (org.gradle.internal.session)
execute:62, BuildSessionLifecycleBuildActionExecuter (org.gradle.tooling.internal.provider)
execute:41, BuildSessionLifecycleBuildActionExecuter (org.gradle.tooling.internal.provider)
execute:64, StartParamsValidatingActionExecuter (org.gradle.tooling.internal.provider)
execute:32, StartParamsValidatingActionExecuter (org.gradle.tooling.internal.provider)
execute:51, SessionFailureReportingActionExecuter (org.gradle.tooling.internal.provider)
execute:39, SessionFailureReportingActionExecuter (org.gradle.tooling.internal.provider)
execute:47, SetupLoggingActionExecuter (org.gradle.tooling.internal.provider)
execute:31, SetupLoggingActionExecuter (org.gradle.tooling.internal.provider)
doBuild:65, ExecuteBuild (org.gradle.launcher.daemon.server.exec)
execute:37, BuildCommandOnly (org.gradle.launcher.daemon.server.exec)
proceed:104, DaemonCommandExecution (org.gradle.launcher.daemon.server.api)
execute:39, WatchForDisconnection (org.gradle.launcher.daemon.server.exec)
proceed:104, DaemonCommandExecution (org.gradle.launcher.daemon.server.api)
execute:29, ResetDeprecationLogger (org.gradle.launcher.daemon.server.exec)
proceed:104, DaemonCommandExecution (org.gradle.launcher.daemon.server.api)
execute:35, RequestStopIfSingleUsedDaemon (org.gradle.launcher.daemon.server.exec)
proceed:104, DaemonCommandExecution (org.gradle.launcher.daemon.server.api)
create:78, ForwardClientInput$2 (org.gradle.launcher.daemon.server.exec)
create:75, ForwardClientInput$2 (org.gradle.launcher.daemon.server.exec)
swap:38, Swapper (org.gradle.util.internal)
execute:75, ForwardClientInput (org.gradle.launcher.daemon.server.exec)
proceed:104, DaemonCommandExecution (org.gradle.launcher.daemon.server.api)
execute:64, LogAndCheckHealth (org.gradle.launcher.daemon.server.exec)
proceed:104, DaemonCommandExecution (org.gradle.launcher.daemon.server.api)
doBuild:63, LogToClient (org.gradle.launcher.daemon.server.exec)
execute:37, BuildCommandOnly (org.gradle.launcher.daemon.server.exec)
proceed:104, DaemonCommandExecution (org.gradle.launcher.daemon.server.api)
doBuild:84, EstablishBuildEnvironment (org.gradle.launcher.daemon.server.exec)
execute:37, BuildCommandOnly (org.gradle.launcher.daemon.server.exec)
proceed:104, DaemonCommandExecution (org.gradle.launcher.daemon.server.api)
run:52, StartBuildOrRespondWithBusy$1 (org.gradle.launcher.daemon.server.exec)
run:297, DaemonStateCoordinator$1 (org.gradle.launcher.daemon.server)
onExecute:64, ExecutorPolicy$CatchAndRecordFailures (org.gradle.internal.concurrent)
run:47, AbstractManagedExecutor$1 (org.gradle.internal.concurrent)
runWorker:1136, ThreadPoolExecutor (java.util.concurrent)
run:635, ThreadPoolExecutor$Worker (java.util.concurrent)
run:833, Thread (java.lang)
ga...@google.com <ga...@google.com> #16
This location is still in
Error.fileSystemEntry(
location = "android_prefs_root/analytics.settings",
name = "analytics.settings"
),
so it seems like this bug was incorrectly marked as fixed.
bi...@google.com <bi...@google.com> #17
re #16, the fix for analytics.settings
is to not creating that file unless we have to. see
In our integration tests, there are cases(e.g. AnalyticsConfigurationCachingTest) we need to create this file, therefore you would get
However, in general, androidx shouldn't see this issue. I will chat more with Scott next week.
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