[Config] CLI Compose Android Figma Connect
Thanks for adding support of the Android Compose 🚀
Would you consider adding a connected app example to the documentation for easier integration? Also, It is missing the CLI part on the Compose page
Env
- Code Connect CLI version : 1.2.2
- Operating system: Mac OS
- Code Connect file:
{
"codeConnect": {
"parser": "compose",
"include": [
"design/src/main/java/com/example/android/design/compose/component/**"
],
}
}
CLI command
npx figma connect publish --token <token> --verbose
Error
Config file found, parsing /<project-path> using specified include globs
Running parser: ./gradlew -p . parseCodeConnect -PfilePath=tmp/figma-code-connect-parser-io.json.tmp -q
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':design:parseCodeConnect'.
> Could not initialize class com.figma.code.connect.models.FigmaString
On the same config file & untouched code, I could receive sometimes another error:
Config file found, parsing /<project-path> using specified include globs
Running parser: ./gradlew -p . parseCodeConnect -PfilePath=tmp/figma-code-connect-parser-io.json.tmp -q
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':design:parseCodeConnect'.
> 'kotlinx.serialization.KSerializer kotlinx.serialization.internal.EnumsKt.createAnnotatedEnumSerializer(java.lang.String, java.lang.Enum[], java.lang.String[], java.lang.annotation.Annotation[][], java.lang.annotation.Annotation[])'
I tried adding "gradleWrapperPath": ".." and removing "parser": "compose", - receiving same error
Could you please help locate the issue or add an app example with proper configuration?
Hi @ViktoriiaYarska, sorry for the delayed response. I haven't been able to reproduce this issue on my end so far.
This is what my setup looks like:
ButtonDoc.kt
@FigmaConnect(url="https://www.figma.com/design/.../...?node-id=0-5&t=...")
class ButtonDoc {
@FigmaProperty(FigmaType.Text, "label")
val label = "Click me"
@FigmaProperty(FigmaType.Boolean, "disabled", true)
val disabled: Boolean? = null
@FigmaProperty(FigmaType.Enum, "variant")
val variant: ButtonVariant = Figma.mapping(
"default" to ButtonVariant.Default,
"large" to ButtonVariant.Large
)
@Composable
fun Component() {
Button(
variant = variant,
label = label,
disabled = disabled
)
}
}
libs.versions.toml
[versions]
kotlin = "2.0.0"
codeConnectLib = "1.1.3"
...
[libraries]
code-connect-lib = { module = "com.figma.code.connect:code-connect-lib", version.ref = "codeConnectLib" }
...
build.gradle.kts
plugins {
id("com.figma.code.connect") version "1.2.1"
...
}
dependencies {
implementation(libs.code.connect.lib)
...
}
Are you able to provide a sample of a @FigmaConnect file that you're trying to connect, your Kotlin version, and Code Connect Lib version to help debug?
It also may be worth updating to the latest Code Connect CLI version 1.3.1.
@rgullyfigma Hi, as per your suggestion, I've tried to updating to the latest Code Connect CLI version 1.3.1, but it seems like only v1.1.3 is available on mavenCentral(): https://mvnrepository.com/artifact/com.figma.code.connect/code-connect-lib I'm also facing the parsing errors reported by @ViktoriiaYarska , which seem to be resolved in code-connect https://github.com/figma/code-connect/releases/tag/v1.2.1 according to the release notes. I'm unable to access any other versions due to them not being available on mavenCentral. Please guide on how to upgrade to your recommended version.
Hi @ritum-kr, there are a few different dependencies when using Code Connect for Compose:
- The
npmCode Connect CLI package (typically installed as a global packagenpm install --global @figma/code-connect@latest). Its current version is1.3.1. - The
com.figma.code.connectdependency for Android which contains the logic for Android parsing. Its current version is1.2.1. - The
code-connect-libdependency for Android which contains the definitions for Figma's Compose annotations (@FigmaConnectetc.). Its current version if1.1.3.
I believe that you were trying to update the code-connect-lib which does have a latest version of 1.1.3.
It was the com.figma.code.connect dependency that was updated as part of this release (https://github.com/figma/code-connect/releases/tag/v1.2.1) you mentioned from 1.1.4 to 1.2.1. You should be able to update this by specifying the new version in your build.gradle.kts:
plugins {
id("com.figma.code.connect") version "1.2.1"
...
}
dependencies {
implementation(libs.code.connect.lib)
...
}
and you should be able to update the Code Connect CLI npm package using something like this:
npm install --global @figma/[email protected]
Hopefully that helps. Let me know if you're still running into issues.
Okay, I'm using the com.figma.code.connect") version "1.2.1" and code-connect-lib version 1.1.3. After doing
npm install --global @figma/[email protected]
when I try the
npx figma connect publish --token=<token> --verbose
I specify the URL of my figma file, I select pages with the Figma components I'd like to map, it finds 2 components and then returns the message:
"Error returned from parser: Parser exited with code 1. Try re-running the command with --verbose for more information."
I've already specified --verbose at the end but there's no specific error.
I also tried
figma connect create <figma url> --token=<token> --verbose, which returns the message:
Running parser: ./gradlew -p . createCodeConnect -PfilePath=tmp/figma-code-connect-parser-io.json.tmp -q
FAILURE:
Build failed with an exception.
- What went wrong: Execution failed for task ':code-connect:createCodeConnect'.
'void kotlinx.serialization.json.JsonBuilder.setAllowTrailingComma(boolean)'
Please advise.
EDIT: I see later on you did use figma connect so my earlier advice is probably less helpful. What happens when you run figma connect publish --token=<token> --verbose?
Hi @ritum-kr - just want to rule out that it's not the wrong CLI being used. You mentioned using npx figma connect publish, do you know if you have a version of @figma/code-connect in the package.json? If there is, using npx figma connect will use that local version instead of the globally installed figma connect. To use this one, use figma connect instead of npx figma connect
You can update the local version as well using npm install @figma/code-connect@latest. I'll also check in with the team to see if there's further support we can provide here!
Hey @ritum-kr, that error message makes it seem like there may be a syntax error somewhere causing the parser to fail. Do any of your @FigmaConnect implementations have any errors that you can see, or have any issues with imports?
Ideally they'd look like this with all the Figma annotations and types resolving successfully:
@rgullyfigma I have tried your above snippet, there's no build or import errors. I'm still getting `* What went wrong: Execution failed for task ':code-connect:createCodeConnect'.
'void kotlinx.serialization.json.JsonBuilder.setAllowTrailingComma(boolean)'`
To eliminate the possibility, I tried with the following code snippet, which just includes a simple text label property, but same error:
@FigmaConnect("https://www.figma.com/design/YKQbttm2fUzrxElzrvQUCo/Citrus---Rue?node-id=531-8161&m=dev")
class LoadingDocs {
@FigmaProperty(FigmaType.Boolean, "Show Label")
val showLabel = true
@Composable
fun Component(modifier: Modifier = Modifier) {
CircularLoadingIndicator(
label = if (showLabel) "label" else null,
)
}
}
@Composable
fun CircularLoadingIndicator(
modifier: Modifier = Modifier,
label: String? = null,
) {
Column(
modifier = modifier.semantics(mergeDescendants = true) {}
.clearAndSetSemantics { contentDescription = label ?: "Loading" },
horizontalAlignment = Alignment.CenterHorizontally,
) {
label?.let {
Text(text = label)
}
}
}
@akbarbmirza when I run figma connect publish --token=<token> --verbose, I simply get
Config file found, parsing <config file package location> using specified include globs Error returned from parser: Parser exited with code 1. Try re-running the command with --verbose for more information.
@ritum-kr Have you got any other @FigmaConnect files within your project?
@rgullyfigma No, just this one.
Hi @ritum-kr did you have any luck solving your publish problems?
com.figma.code.connect.models.FigmaString is defined here and depends on kotlinx.serialization.Serializable. Might be worth checking if there's some serialization dependency in your project causing some conflict with Code Connect.
Your project is currently using
kotlin-serialization = { module = "org.jetbrains.kotlinx:kotlinx-serialization-json", version = "1.6.3" }
Our is matching the version and also using
implementation("org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.6.3") implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.3")
I've tried removing the core-jvm dependency but receive the same error.
Since it's the same version it shouldn't cause a conflict. What do you recommend based on this?
Hey @ritum-kr, sorry you're still having issues.
I haven't been able to replicate your issue on my end. I have created a working sample project which can hopefully help you debug on your side to see if there is an issue with your project or environment. It also contains libs.versions.toml which could be helpful for checking versions of dependencies etc.
I have also added the --stacktrace output when running the --verbose command in the latest code-connect npm package (1.3.3), which I am working on getting published shortly.
Hey @rgullyfigma , I've run into our issue with the latest code connect v 1.3.3 and now the detailed --verbose command gives me this error:
Trace: Error: Parser exited with code 1 at ChildProcess.<anonymous> (/Users/xyz/.nvm/versions/node/v20.12.0/lib/node_modules/@figma/code-connect/dist/connect/parser_executables.js:112:32) at ChildProcess.emit (node:events:518:28) at maybeClose (node:internal/child_process:1105:16) at ChildProcess._handle.onexit (node:internal/child_process:305:5) at getCodeConnectObjects (/Users/xyz/.nvm/versions/node/v20.12.0/lib/node_modules/@figma/code-connect/dist/commands/connect.js:182:25) at process.processTicksAndRejections (node:internal/process/task_queues:95:5) at async getUnconnectedComponentsAndConnectedComponentMappings (/Users/xyz/.nvm/versions/node/v20.12.0/lib/node_modules/@figma/code-connect/dist/connect/wizard/run_wizard.js:536:32) at async runWizard (/Users/xyz/.nvm/versions/node/v20.12.0/lib/node_modules/@figma/code-connect/dist/connect/wizard/run_wizard.js:785:68) Error calling parser: Error: Parser exited with code 1.
Does this offer you any insights? Would using a different node version make a difference?
And I also tried the "connect create" directly, which gives me the detailed error:
`* What went wrong: Execution failed for task ':code-connect:createCodeConnect'.
'void kotlinx.serialization.json.JsonBuilder.setAllowTrailingComma(boolean)'
- Try:
Run with --info or --debug option to get more log output. Run with --scan to get full insights. Get more help at https://help.gradle.org.
- Exception is: org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':code-connect:createCodeConnect'. at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.lambda$executeIfValid$1(ExecuteActionsTaskExecuter.java:130) at org.gradle.internal.Try$Failure.ifSuccessfulOrElse(Try.java:282) at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeIfValid(ExecuteActionsTaskExecuter.java:128) at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:116) at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:46) at org.gradle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter.execute(ResolveTaskExecutionModeExecuter.java:51) at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:57) at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:74) at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36) at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:77) at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:55) at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:52) at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:200) at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:195) at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66) at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59) at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157) at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59) at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:53) at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:73) at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:52) at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:42) at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:331) at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:318) at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.lambda$execute$0(DefaultTaskExecutionGraph.java:314) at org.gradle.internal.operations.CurrentBuildOperationRef.with(CurrentBuildOperationRef.java:80) at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:314) at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:303) at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:463) at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:380) at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64) at org.gradle.internal.concurrent.AbstractManagedExecutor$1.run(AbstractManagedExecutor.java:47) Caused by: java.lang.NoSuchMethodError: 'void kotlinx.serialization.json.JsonBuilder.setAllowTrailingComma(boolean)' at com.figma.code.connect.FigmaCodeConnectPlugin.apply$lambda$15$lambda$13$lambda$12(FigmaCodeConnectPlugin.kt:160) at kotlinx.serialization.json.JsonKt.Json(Json.kt:187) at kotlinx.serialization.json.JsonKt.Json$default(Json.kt:185) at com.figma.code.connect.FigmaCodeConnectPlugin.apply$lambda$15$lambda$13(FigmaCodeConnectPlugin.kt:157) at com.figma.code.connect.FigmaCodeConnectPlugin.apply$lambda$15$lambda$14(FigmaCodeConnectPlugin.kt:152) at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:831) at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:804) at org.gradle.api.internal.tasks.execution.TaskExecution$3.run(TaskExecution.java:244) at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:29) at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:26) at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66) at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59) at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157) at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59) at org.gradle.internal.operations.DefaultBuildOperationRunner.run(DefaultBuildOperationRunner.java:47) at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:68) at org.gradle.api.internal.tasks.execution.TaskExecution.executeAction(TaskExecution.java:229) at org.gradle.api.internal.tasks.execution.TaskExecution.executeActions(TaskExecution.java:212) at org.gradle.api.internal.tasks.execution.TaskExecution.executeWithPreviousOutputFiles(TaskExecution.java:195) at org.gradle.api.internal.tasks.execution.TaskExecution.execute(TaskExecution.java:162) at org.gradle.internal.execution.steps.ExecuteStep.executeInternal(ExecuteStep.java:105) at org.gradle.internal.execution.steps.ExecuteStep.access$000(ExecuteStep.java:44) at org.gradle.internal.execution.steps.ExecuteStep$1.call(ExecuteStep.java:59) at org.gradle.internal.execution.steps.ExecuteStep$1.call(ExecuteStep.java:56) at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:200) at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:195) at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66) at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59) at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157) at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59) at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:53) at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:73) at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:56) at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:44) at org.gradle.internal.execution.steps.CancelExecutionStep.execute(CancelExecutionStep.java:41) at org.gradle.internal.execution.steps.TimeoutStep.executeWithoutTimeout(TimeoutStep.java:74) at org.gradle.internal.execution.steps.TimeoutStep.execute(TimeoutStep.java:55) at org.gradle.internal.execution.steps.PreCreateOutputParentsStep.execute(PreCreateOutputParentsStep.java:50) at org.gradle.internal.execution.steps.PreCreateOutputParentsStep.execute(PreCreateOutputParentsStep.java:28) at org.gradle.internal.execution.steps.RemovePreviousOutputsStep.execute(RemovePreviousOutputsStep.java:67) at org.gradle.internal.execution.steps.RemovePreviousOutputsStep.execute(RemovePreviousOutputsStep.java:37) at org.gradle.internal.execution.steps.BroadcastChangingOutputsStep.execute(BroadcastChangingOutputsStep.java:61) at org.gradle.internal.execution.steps.BroadcastChangingOutputsStep.execute(BroadcastChangingOutputsStep.java:26) at org.gradle.internal.execution.steps.CaptureOutputsAfterExecutionStep.execute(CaptureOutputsAfterExecutionStep.java:67) at org.gradle.internal.execution.steps.CaptureOutputsAfterExecutionStep.execute(CaptureOutputsAfterExecutionStep.java:45) at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:40) at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:29) at org.gradle.internal.execution.steps.BuildCacheStep.executeWithoutCache(BuildCacheStep.java:189) at org.gradle.internal.execution.steps.BuildCacheStep.lambda$execute$1(BuildCacheStep.java:75) at org.gradle.internal.Either$Right.fold(Either.java:175) at org.gradle.internal.execution.caching.CachingState.fold(CachingState.java:62) at org.gradle.internal.execution.steps.BuildCacheStep.execute(BuildCacheStep.java:73) at org.gradle.internal.execution.steps.BuildCacheStep.execute(BuildCacheStep.java:48) at org.gradle.internal.execution.steps.StoreExecutionStateStep.execute(StoreExecutionStateStep.java:46) at org.gradle.internal.execution.steps.StoreExecutionStateStep.execute(StoreExecutionStateStep.java:35) at org.gradle.internal.execution.steps.SkipUpToDateStep.executeBecause(SkipUpToDateStep.java:76) at org.gradle.internal.execution.steps.SkipUpToDateStep.lambda$execute$2(SkipUpToDateStep.java:54) at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:54) at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:36) at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:37) at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:27) at org.gradle.internal.execution.steps.ResolveIncrementalCachingStateStep.executeDelegate(ResolveIncrementalCachingStateStep.java:49) at org.gradle.internal.execution.steps.ResolveIncrementalCachingStateStep.executeDelegate(ResolveIncrementalCachingStateStep.java:27) at org.gradle.internal.execution.steps.AbstractResolveCachingStateStep.execute(AbstractResolveCachingStateStep.java:71) at org.gradle.internal.execution.steps.AbstractResolveCachingStateStep.execute(AbstractResolveCachingStateStep.java:39) at org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:65) at org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:36) at org.gradle.internal.execution.steps.ValidateStep.execute(ValidateStep.java:106) at org.gradle.internal.execution.steps.ValidateStep.execute(ValidateStep.java:55) at org.gradle.internal.execution.steps.AbstractCaptureStateBeforeExecutionStep.execute(AbstractCaptureStateBeforeExecutionStep.java:64) at org.gradle.internal.execution.steps.AbstractCaptureStateBeforeExecutionStep.execute(AbstractCaptureStateBeforeExecutionStep.java:43) at org.gradle.internal.execution.steps.AbstractSkipEmptyWorkStep.executeWithNonEmptySources(AbstractSkipEmptyWorkStep.java:125) at org.gradle.internal.execution.steps.AbstractSkipEmptyWorkStep.execute(AbstractSkipEmptyWorkStep.java:56) at org.gradle.internal.execution.steps.AbstractSkipEmptyWorkStep.execute(AbstractSkipEmptyWorkStep.java:36) at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsStartedStep.execute(MarkSnapshottingInputsStartedStep.java:38) at org.gradle.internal.execution.steps.LoadPreviousExecutionStateStep.execute(LoadPreviousExecutionStateStep.java:36) at org.gradle.internal.execution.steps.LoadPreviousExecutionStateStep.execute(LoadPreviousExecutionStateStep.java:23) at org.gradle.internal.execution.steps.HandleStaleOutputsStep.execute(HandleStaleOutputsStep.java:75) at org.gradle.internal.execution.steps.HandleStaleOutputsStep.execute(HandleStaleOutputsStep.java:41) at org.gradle.internal.execution.steps.AssignMutableWorkspaceStep.lambda$execute$0(AssignMutableWorkspaceStep.java:35) at org.gradle.api.internal.tasks.execution.TaskExecution$4.withWorkspace(TaskExecution.java:289) at org.gradle.internal.execution.steps.AssignMutableWorkspaceStep.execute(AssignMutableWorkspaceStep.java:31) at org.gradle.internal.execution.steps.AssignMutableWorkspaceStep.execute(AssignMutableWorkspaceStep.java:22) at org.gradle.internal.execution.steps.ChoosePipelineStep.execute(ChoosePipelineStep.java:40) at org.gradle.internal.execution.steps.ChoosePipelineStep.execute(ChoosePipelineStep.java:23) at org.gradle.internal.execution.steps.ExecuteWorkBuildOperationFiringStep.lambda$execute$2(ExecuteWorkBuildOperationFiringStep.java:67) at org.gradle.internal.execution.steps.ExecuteWorkBuildOperationFiringStep.execute(ExecuteWorkBuildOperationFiringStep.java:67) at org.gradle.internal.execution.steps.ExecuteWorkBuildOperationFiringStep.execute(ExecuteWorkBuildOperationFiringStep.java:39) at org.gradle.internal.execution.steps.IdentityCacheStep.execute(IdentityCacheStep.java:46) at org.gradle.internal.execution.steps.IdentityCacheStep.execute(IdentityCacheStep.java:34) at org.gradle.internal.execution.steps.IdentifyStep.execute(IdentifyStep.java:48) at org.gradle.internal.execution.steps.IdentifyStep.execute(IdentifyStep.java:35) at org.gradle.internal.execution.impl.DefaultExecutionEngine$1.execute(DefaultExecutionEngine.java:61) at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeIfValid(ExecuteActionsTaskExecuter.java:127) at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:116) at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:46) at org.gradle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter.execute(ResolveTaskExecutionModeExecuter.java:51) at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:57) at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:74) at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36) at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:77) at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:55) at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:52) at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:200) at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:195) at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66) at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59) at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157) at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59) at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:53) at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:73) at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:52) at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:42) at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:331) at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:318) at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.lambda$execute$0(DefaultTaskExecutionGraph.java:314) at org.gradle.internal.operations.CurrentBuildOperationRef.with(CurrentBuildOperationRef.java:80) at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:314) at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:303) at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:463) at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:380) at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64) at org.gradle.internal.concurrent.AbstractManagedExecutor$1.run(AbstractManagedExecutor.java:47)
`
Thanks for the output. I see someone reported a similar issue on the Jetbrains support forum. May be worth looking at to see if there's something similar in your project configuration. What gradle wrapper version do you have?
Also, did you manage to get the sample project working?
Gradle wrapper v is 8.7. The sample project, when run on my work computer is showing the same error since it has to do the same setup and configuration to go through Kroger servers. I will try the linked issue resolution and report back.
As per your recommendation in the shared link, I've changed the alias(libs.plugins.jetbrainsKotlinAndroid) to id("org.jetbrains.kotlin.android") but get the same error.
@ritum-kr do you have id("com.figma.code.connect") version "1.2.1" defined in multiple build.gradle.kts files? I have noticed while trying to reproduce that I get kotlinx.serialization errors when I have Code Connect in more than one module.
Nope, just the one. I actually created a separate module for the code connect stuff and all the code connect related things are in the gradle for only that one module.
@rgullyfigma Thanks a lot for creating working sample project! It helped me to locate an issue and finally connect.
The issue was - dependency conflict with ktlint.
Fix in project build.gradle.kts
buildscript {
configurations.all {
resolutionStrategy {
force(libs.kotlinx.serialization.json)
}
}
dependencies {
...
classpath(libs.ktlint)
}
}
@ritum-kr hope this'll help for you as well
@ViktoriiaYarska that is great news! 🎉