Status Update
Comments
jb...@google.com <jb...@google.com> #2
1. Have you saw crash in real device or only in simulators?
2. Do you use dynamic feature for language ID?
[Deleted User] <[Deleted User]> #3
Tested on Android 12 Emulator with custom executor, but cannot repro this issue.
[Deleted User] <[Deleted User]> #4
-
Second crash in the description is from a real device. Experienced it myself on two different Xiaomi phones, plus lots of crashes from users in the Google Play console.
-
Dynamic features are not used in the application.
As a wild guess, I have downgraded build tools from 31.0.0 to 30.0.3, compileSdk from 31 to 30, and moved all work with Language ID to the service in a separate process (just to be sure that crash can kill secondary process instead of main). This combination is in beta for 2 days by now and I don't see any SIGSEGV crashes.
ap...@google.com <ap...@google.com> #5
Hmm, I feel the crash might be something related to separate/secondary process.
I also changed compileSdk and targetSDK to 31 but still cannot repro this issue.
Description
Artifact used: androidx.navigation:navigation-fragment-ktx:2.3.4
Version used: 2.3.4
Theme used: N/A
Devices/Android versions reproduced on: Any
Problem
We have the following navigation graph:
Here are declared two deep links patterns:
myapp://profiles/{userId}/
myapp://profiles/{userId}/details/
But the second deep link will never be handled because these deep links are "equal" for navigation when it tries to find the best matching deep link. In this case, NavGraph will always use first matching NavDestination (profileFragment).
For example link
myapp://profiles/u2/details/
will be handled asmyapp://profils/{userId}/
whereuserId = u2/details
.There is a workaround - remove ending slash in second pattern to make patterns tails not matching:
myapp://profiles/{userId}/
myapp://profiles/{userId}/details
It works but it is not obvious.
Purposed solution
Make arguments to not include
/
character.In resulting regexp:
^\Qmyapp://profiles/\E(.+?)\Q/\E($|(\?(.)*))
Replace:
(.+?)
With:
([^/]+?)
If this solution is right, I can create pull request on GitHub.