Repository navigation
A deep link reaches an Android device whole (CHALLENGES 369) - #288
Merged
Merged
Conversation
ADB.OpenURL passed the link to adb shell unquoted, so the device's shell cut it at the first & and sent am start to the background: Morpho Match's duo link lost server= and every device played on the default port, while open reported it opened. The link goes through shellQuote; a fake adb that parses as the device's shell does is the test, and fails without the fix.
This was referenced Oct 27, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
ADB.OpenURLpassed a deep link toadb shellunquoted. The device's shell parses that line, so a query's&sentam start … -d <link up to the &>to the background and ran the rest as an assignment;amreported the intent delivered andopenreported it opened.;,|,$and a space cut or changed a link the same way. Every Android link with a second query parameter has lost it sinceopenwas written.Found by Morpho Match's two-player game: its link
morphomatch://duo?player=A&server=http://10.0.2.2:8788lostserver=, and both devices played on the app's default port with nothing on screen to say so. CHALLENGES 369.Fix: the link goes through
shellQuote, as a notification's text has since CHALLENGES 52. One path: every Android driver'sOpenURLcallsADB.OpenURL.Test: a fake adb that parses its arguments as the device's shell does and prints what
amwas given. Without the fix it was givenmorphomatch://duo?player=A, and nothing for a link holding;and$.Measured: on the Android 15 emulator and the Meta Spatial Simulator, the game's server on 8788 was reached from both, and its four duo scripts pass in both orders (mobiumdev/morpho-match, next PR).
make cigreen.