Windows builds and moved credentials: play build runs gradlew.bat through cmd /c and takes C:/ keystore paths as absolute (pitfall 98); check names credential paths missing on this machine and a keystore the stored password / alias do not open (keytool) (pitfall 99); play / apple build write <out>/latest.json for CI; CI install from a git clone documented

This commit is contained in:
CRTkafa 2026-10-22 02:10:52 +08:00
parent 4fcee60ba6
commit 73d308164d
9 changed files with 95 additions and 9 deletions

View file

@ -1189,3 +1189,23 @@ that fails without the fix (see CONTRIBUTING.md).
googleapis androidpublisher client, `api.appstoreconnect.apple.com`, `altool` / `iTMSTransporter` in CI files and
scripts (not storebound's own checkout, never node_modules); `scan` rule `direct-store-api`, `check` and
`release status` warnings with file:line and the storebound command (`tests/fastlane-traces.test.ts`).
## 98. `play build` on Windows: "Executable not found in $PATH: gradlew.bat"; "C:/..." keystore "does not exist"
- **Symptom:** `storebound play build` stopped before Gradle on Windows although `android/gradlew.bat` exists; with
`ANDROID_KEYSTORE` set to an absolute `C:/...` path it said the keystore file does not exist.
- **Cause:** a bare `gradlew.bat` is searched on PATH only, never in the working folder; absolute paths were recognised
only when they started with `/`, so `C:/...` was joined onto the project folder.
- **Do:** update storebound. Until then run Gradle by hand and use a project-relative keystore path.
- **Guard:** `gradleArgs` in `cli/lib/gradle.ts` runs `cmd /c gradlew.bat` on Windows; `androidSigning` uses
`isAbsolute` (`tests/build-sign.test.ts`).
## 99. Credentials still pointed at the old computer, and the keystore password did not open the keystore
- **Symptom:** after a machine move `ANDROID_KEYSTORE`, `PLAY_SERVICE_ACCOUNT` and `ASC_P8` held the old machine's
absolute paths, and `ANDROID_KEYSTORE_PASSWORD` / `ANDROID_KEY_ALIAS` did not open the upload keystore (keytool exit 1);
`check` passed and the build failed late.
- **Do:** point each path at the file on this machine; take the password and alias that open the keystore (an
`android/keystore.properties` often holds them). Verify with `keytool -list -keystore <file> -alias <alias>`.
- **Guard:** `credentialFileIssues` in `cli/lib/credentials.ts`: `check` names every credential path that does not
exist and runs `keytool -list` with the stored password and alias (when keytool is on PATH or in JAVA_HOME), naming
the bad field (`tests/build-sign.test.ts`). `play build` / `apple build` also write `<out>/latest.json` so CI
needs no glob for the AAB / IPA.