play build: signing passwords only through the child environment, never argv

This commit is contained in:
CRTkafa 2026-10-23 08:51:07 +08:00
parent 7960063e0e
commit e4ebbb825d
5 changed files with 13 additions and 12 deletions

View file

@ -1290,9 +1290,8 @@ that fails without the fix (see CONTRIBUTING.md).
upload key in `ANDROID_KEYSTORE` / `ANDROID_KEYSTORE_PASSWORD` / `ANDROID_KEY_ALIAS` / `ANDROID_KEY_PASSWORD` reached
Gradle only through `ORG_GRADLE_PROJECT_*`, which that build file does not use; the AAB came out unsigned and the
refusal came only at upload.
- **Do:** set the four variables (env or `.storebound/credentials.json`); `play build` now also passes them as
`-Pandroid.injected.signing.store.file|store.password|key.alias|key.password`. The printed command and the plan show
the passwords as `***`.
- **Do:** set the four variables (env or `.storebound/credentials.json`); `play build` now also passes `-Pandroid.injected.signing.store.file` and `.key.alias`; the
passwords go only through `ORG_GRADLE_PROJECT_android.injected.signing.*.password` in the child environment, never argv.
- **Guard:** `signingArgs` / `maskArgs` (`cli/lib/gradle.ts`); right after the build, and before `play upload` /
`play release` of a local AAB, `assertAabSigned` checks the META-INF `*.SF` + `*.RSA|DSA|EC` entries (and runs
`jarsigner -verify` when a JDK is on PATH) and fails with the fix, before any upload (`tests/build-sign.test.ts`).