From f00c3b970f1fc507f37f1470bab4baaefa734df1 Mon Sep 17 00:00:00 2001 From: iris <2+iris@noreply.localhost> Date: Tue, 1 Sep 2026 11:05:39 -0400 Subject: [PATCH] Name the button that gets past a signature mismatch The advice was "rebuild this app on this machine", which somebody can follow and still be stuck: nothing about a changed keystore moves the checkout, so the component is not stale and neither a pull nor Update runs the build. Rebuild is the one control that builds regardless, so the message says so. Co-Authored-By: Claude Opus 5 --- server/src/strip.rs | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/server/src/strip.rs b/server/src/strip.rs index 35d5e28..5d936fd 100644 --- a/server/src/strip.rs +++ b/server/src/strip.rs @@ -145,10 +145,17 @@ fn strip_debug_symbols(src_path: &Path) -> Result { let _ = std::fs::remove_file(&slim_path); let _ = std::fs::remove_file(with_suffix(&slim_path, ".idsig")); anyhow::bail!( + // Rebuild is named rather than left as "rebuild it": the + // checkout has not moved, so nothing about this makes the + // component stale and neither a pull nor Update will run the + // build. Rebuild is the one control that builds anyway, and + // without saying so the advice is one somebody can follow and + // still be stuck. "{} is signed by {}, but the debug keystore at {} signs as {} -- a stripped copy \ signed with it is a different app to Android, and the phone would refuse it with \ - \"App not installed\". Rebuild this app on this machine, or restore the debug \ - keystore it was built with.", + \"App not installed\". Press Rebuild on this project to build it again with the \ + key that is here now (a pull will not: nothing in the checkout changed), or \ + restore the debug keystore it was built with.", src_path.display(), built_by.iter().cloned().collect::>().join(", "), sdk::debug_keystore_path()?.display(),