Status Update
Comments
em...@gmail.com <em...@gmail.com> #2
- latest Android Studio 2024.1.2 (22 Aug 2024 build) | 241.18034.62.2412.12266719
- latest Gradle 8.10
- sourceCompatibility JavaVersion.VERSION_17
- targetCompatibility JavaVersion.VERSION_17
jb...@google.com <jb...@google.com> #3
It seems like the code is conflicting with the new type safe navigation APIs. It should resolve if you use named parameters to ensure the proper setStartDestination
function is being used.
em...@gmail.com <em...@gmail.com> #4
jb...@google.com <jb...@google.com> #5
Please provide a minimal sample project that reproduces this issue.
si...@gmail.com <si...@gmail.com> #6
NavGraph navGraph = navigationController.getNavInflater().inflate(R.navigation.nav_graph);
navGraph.setStartDestination(R.id.alternative_start_destination);
navigationController.setGraph(navGraph);
jb...@google.com <jb...@google.com> #7
Do you have a sample project so we can reproduce the issue?
me...@gmail.com <me...@gmail.com> #8
Same issue.
I am using Android Studio Koala Feature Drop | 2024.1.2 Patch 1
, com.android.tools.build:gradle:8.6.1
I agreed the code provided in #6 are the key to the reproduce the case.
em...@gmail.com <em...@gmail.com> #9
Unfortunately my project is very big and it would take days of work to clean up to get an "empty and dumb container".
The code at #6 works in a new project created from scratch, so the issue should be elsewhere.
da...@gmail.com <da...@gmail.com> #10
implementation 'org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.3'
il...@google.com <il...@google.com> #11
Re
si...@gmail.com <si...@gmail.com> #12
sa...@gmail.com <sa...@gmail.com> #13
Hi, I added a sample project.
I also confirm that by manually importing
kotlinx-serialization-json (version 1.7.3 as an example), the compilation ends successfully.
in this project i am using 2.8.4, but it still reproduces.
The problem is definitely on the overload of the setStartDestination method which uses the generic T method, instead of the specific int
jb...@google.com <jb...@google.com>
cl...@google.com <cl...@google.com> #14
Yup java is pulling in the
ap...@google.com <ap...@google.com> #15
Project: platform/frameworks/support
Branch: androidx-main
Author: Clara Fok <
Link:
Fix wrong setStartDestination overload in Java
Expand for full commit details
Fix wrong setStartDestination overload in Java
Java compiler links to the wrong NavGraph.setStartDestination overload which takes a `startDestination: T` instead of the correct `startDestination: Int`.
The overload that takes `T` is part of the Navigation SafeArgs features for kotlin users, so we hide this overload from Java sources with @JvmSynthetic.
This annotation is binary compatible. https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.jvm/-jvm-synthetic/
Test: manual testing
Bug: 364634035
Relnote: "The kotlin-specific NavGraph.setStartDestination overload for type safety is hidden from Java sources."
Change-Id: Ic640c37f3cef5578022866529a8e576eba8d745d
Files:
- M
navigation/navigation-common/api/current.txt
- M
navigation/navigation-common/api/restricted_current.txt
- M
navigation/navigation-common/src/main/java/androidx/navigation/NavGraph.kt
Hash: ca3ba4e8cad00096390024507b7db28bbe6e2ed5
Date: Thu Nov 28 16:38:58 2024
cl...@google.com <cl...@google.com> #16
Fixed and available in navigation-2.9.0-alpha04
da...@gmail.com <da...@gmail.com> #17
I have tried this fix by using navigation-2.9.0-alpha03
and removed the temp fix of implementation 'org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.3'
however the same error has returned during build:
"class file for kotlinx.serialization.KSerializer not found"
The build is successful when retaining implementation 'org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.3'
Is this expected, or is there perhaps something else I'm not doing?
cl...@google.com <cl...@google.com> #18
Typo - it is available in navigation-2.9.0-alpha04
.
te...@gmail.com <te...@gmail.com> #19
pr...@google.com <pr...@google.com> #20
The following release(s) address this bug.It is possible this bug has only been partially addressed:
androidx.navigation:navigation-common:2.9.0-alpha04
da...@gmail.com <da...@gmail.com> #21
I've tested with the proposed fix and can confirm this is resolved for me.
Description
Version used: 2.8.0
Devices/Android versions reproduced on: Android 11
Previous working version: 2.7.7
Using Navigation 2.7.7 all works fine but when updating to 2.8.0 I get "error: cannot access KSerializer" ("class file for kotlinx.serialization.KSerializer not found") at this line:
- navGraph.(HERE IS THE MARKED POINT)setStartDestination(R.id.nav_permissions)
during "Task :app:compileDebugJavaWithJavac".
This piece of code placed in a MainActivity.onCreate() method:
- NavGraph navGraph = navController.getGraph();
- navGraph.setStartDestination(R.id.nav_permissions)
Those are my TOML libraries versions used in this project:
annotation = "1.8.2"
appcompat = "1.7.0"
constraintlayout = "2.1.4"
flexbox = "3.0.0"
gradle_plugin = "8.6.0"
kotlin = "1.9.24"
livedata = "2.8.5"
material = "1.12.0"
navigation = "2.8.0" (<-- returning to 2.7.7 solves this issue)
preference = "1.2.1"
sdk_compile = "34"
sdk_target = "33"
volley = "1.2.1"
Unfortunately the project is very big and I'm unable to cleanup to create a simple sample project for replicate this error.
I hope it would be enough those info.....