Skip to content

scripts: one-prompt release deploy that reaches wireless-debugging phones - #1104

Merged
cryptskii merged 1 commit into
mainfrom
cryptskii/eager-darwin-1668e4
Oct 2, 2026
Merged

cryptskii merged 1 commit into
mainfrom
cryptskii/eager-darwin-1668e4

Conversation

@cryptskii

Copy link
Copy Markdown
Collaborator

scripts/fast_deploy_android_release.sh asked four questions: the keystore path, the alias, the keystore password and the key password. A wrong password only showed up when Gradle failed at packageRelease. Now:

  • One prompt. The script asks only for the keystore password. It checks the password with keytool before Gradle runs and allows three tries on a terminal.
  • Defaults. The keystore defaults to ~/dsm-release.p12. The key defaults to dsm-release, or to the keystore's only private key if there is no dsm-release. The key password defaults to the keystore password. Environment variables still override all of these.

Both deploy scripts found phones by splitting adb devices on whitespace. A wireless-debugging serial can contain a space (adb-RF8Y90PX5GN-xJARDG (2)._adb-tls-connect._tcp), so the name was cut short and the install failed with device not found. Changes to both scripts:

  • Devices are now addressed by their adb transport id (adb -t). SERIALS still selects devices with -s.
  • adb version: the Android SDK's adb goes first on PATH. A second adb version on the same server port resets the connection (protocol fault ... Connection reset by peer).
  • Install failures: in the release script, a failed install on one phone no longer stops the rest. The script lists the phones that failed and exits non-zero.

Tested with a fake adb that returns the device list from the bench Mac (two wireless serials with spaces, one unauthorized) and against real PKCS12 keystores: wrong password, right password, and a non-default alias.

🤖 Generated with Claude Code

https://claude.ai/code/session_01Y4wDTToHmJfkYYJvMKXt3u


Generated by Claude Code

…ones

fast_deploy_android_release.sh asked for the keystore path, the alias, the
keystore password and the key password, and Gradle was the first to find
out a password was wrong. It now asks once, for the keystore password, and
checks it with keytool before Gradle runs (three tries on a terminal). The
keystore defaults to ~/dsm-release.p12, the key to dsm-release or the
keystore's only private key, the key password to the keystore password.

Both deploy scripts split `adb devices` on whitespace, so a wireless-
debugging serial holding a space ("adb-XXXX (2)._adb-tls-connect._tcp")
was cut short and the install stopped at "device not found". A device is
now addressed by its adb transport id. The scripts put the Android SDK's
adb first on PATH, because a second adb version on the same server port
resets the connection. A failed install on one phone no longer stops the
others; the script names the phones it failed on and exits non-zero.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Y4wDTToHmJfkYYJvMKXt3u
@cryptskii
cryptskii merged commit 72d2610 into main Oct 2, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants