惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

MongoDB | Blog
MongoDB | Blog
宝玉的分享
宝玉的分享
博客园 - 三生石上(FineUI控件)
小众软件
小众软件
罗磊的独立博客
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
S
SegmentFault 最新的问题
Last Week in AI
Last Week in AI
人人都是产品经理
人人都是产品经理
博客园 - 聂微东
博客园 - 司徒正美
博客园 - 叶小钗
T
Tailwind CSS Blog
博客园 - Franky
V
V2EX
有赞技术团队
有赞技术团队
美团技术团队
雷峰网
雷峰网
爱范儿
爱范儿
Jina AI
Jina AI
D
DataBreaches.Net
H
Help Net Security
酷 壳 – CoolShell
酷 壳 – CoolShell

Recent Commits to openclaw:main

test: merge chat side-result checks · openclaw/openclaw@ddd2c2a test: merge cron history checks · openclaw/openclaw@f7eb746 test: merge responsive navigation shell checks · openclaw/openclaw@c2e4b47 docs(changelog): add codex oauth fixes · openclaw/openclaw@628e6cd test: merge navigation routing cases · openclaw/openclaw@5d8cecb Tests: mock channel registry bundled fallback · openclaw/openclaw@2b08233 Secrets: avoid broad web search discovery for single plugin config · openclaw/openclaw@a464f59 test: merge config view browser checks · openclaw/openclaw@20cf511 fix(status): align oauth health with runtime · openclaw/openclaw@eed7116 feat: add macOS screen snapshots for monitor preview (#67954) thanks … · openclaw/openclaw@f377db1 fix: report shared auth scopes in hello-ok (#67810) thanks @BunsDev · openclaw/openclaw@0b6c39b Auto-reply: avoid eager bundled route fallback · openclaw/openclaw@3ea1bf4 Tests: narrow session binding contract setup · openclaw/openclaw@54e4e16 fix(macOS): enable undo/redo in webchat composer text input (#34962) · openclaw/openclaw@00951dc Tests: speed up channel setup promotion · openclaw/openclaw@82b529a Docs: refresh agent instructions · openclaw/openclaw@5775fe2 fix(auth): serialize OAuth refresh across agents to fix #26322 (#67876) · openclaw/openclaw@8e79080 test: allow ollama public surface boundary test · openclaw/openclaw@7d4f1a6 Docs: add test performance guardrails · openclaw/openclaw@89706d3 Tests: restore context-engine usage proof · openclaw/openclaw@e4c4f95 Tests: slim context engine runtime coverage · openclaw/openclaw@74c198f ci: retry failed custom checkouts · openclaw/openclaw@0ee5baf test: trim duplicate provider auth onboarding cases · openclaw/openclaw@1ffc02e matrix: fix sessions_spawn --thread subagent session spawning (#67643) · openclaw/openclaw@1ce2596 test: reduce auth choice fixture churn · openclaw/openclaw@857b9cd test: mock health status config boundaries · openclaw/openclaw@9d5ab4a test: mock onboard config io boundary · openclaw/openclaw@299694d test: mock legacy state plugin boundaries · openclaw/openclaw@2713089 test: mock channel install boundaries · openclaw/openclaw@b945248 test: mock doctor preview channel boundaries · openclaw/openclaw@b1a3ad4
docs: explain Android signing sync · openclaw/openclaw@22...
joshavant · 2026-06-17 · via Recent Commits to openclaw:main
Original file line numberDiff line numberDiff line change

@@ -53,6 +53,16 @@ pnpm android:version:pin -- --from-gateway

5353

pnpm android:version:pin -- --version 2026.6.5 --version-code 2026060501

5454

```

5555
56+

Release-owner signing sync:

57+
58+

```bash

59+

pnpm android:release:signing:plan

60+

MATCH_PASSWORD=<signing repo password> pnpm android:release:signing:sync:pull

61+

MATCH_PASSWORD=<signing repo password> pnpm android:release:signing:check

62+

```

63+
64+

The signing sync pulls encrypted Android upload-key assets from the shared `apps-signing` repo and materializes decrypted files under `apps/android/build/release-signing/`.

65+
5666

Generate raw Google Play screenshots:

5767
5868

```bash

@@ -64,7 +74,7 @@ pnpm android:screenshots

6474

- Play build: `openclaw-<version>-play-release.aab`

6575

- Third-party build: `openclaw-<version>-third-party-release.apk`

6676
67-

`pnpm android:bundle:release` is an alias for the same archive helper.

77+

`pnpm android:bundle:release` is an alias for the same Fastlane archive lane.

6878
6979

See `apps/android/VERSIONING.md` and `apps/android/fastlane/SETUP.md` for the release workflow.

7080
Original file line numberDiff line numberDiff line change

@@ -25,6 +25,8 @@ pnpm android:version:check

2525

pnpm android:version:sync

2626

pnpm android:version:pin -- --from-gateway

2727

pnpm android:version:pin -- --version 2026.6.5 --version-code 2026060501

28+

pnpm android:release:signing:plan

29+

MATCH_PASSWORD=<signing repo password> pnpm android:release:signing:sync:pull

2830

pnpm android:release:preflight

2931

```

3032

@@ -45,10 +47,19 @@ Recommended workflow:

4547

1. Pin Android to the intended release version.

4648

2. Run `pnpm android:version:sync`.

4749

3. Update `apps/android/CHANGELOG.md`, then run `pnpm android:version:sync` again if needed.

48-

4. Run `pnpm android:release:preflight` to validate Play auth, signing, synced versioning, and release notes.

49-

5. Run `pnpm android:screenshots` to refresh raw Google Play screenshots.

50-

6. Run `pnpm android:release:archive` to produce the signed Play AAB and third-party APK.

51-

7. Run `pnpm android:release:upload` to upload metadata, screenshots, and the Play AAB to Google Play internal testing.

52-

8. Promote to production manually in Google Play Console.

50+

4. Run `MATCH_PASSWORD=<signing repo password> pnpm android:release:signing:sync:pull` to materialize encrypted Android signing assets from `apps-signing`.

51+

5. Run `pnpm android:release:preflight` to validate Play auth, signing, synced versioning, and release notes.

52+

6. Run `pnpm android:screenshots` to refresh raw Google Play screenshots.

53+

7. Run `pnpm android:release:archive` to produce the signed Play AAB and third-party APK.

54+

8. Run `pnpm android:release:upload` to upload metadata, screenshots, and the Play AAB to Google Play internal testing.

55+

9. Promote to production manually in Google Play Console.

5356
5457

The third-party flavor is archived as a signed APK for non-Play distribution. It is not uploaded by the Play release lane.

58+
59+

## Signing model

60+
61+

`apps/android/Config/ReleaseSigning.json` pins the Android signing assets in the shared private `apps-signing` repo. The Android pipeline uses the same `MATCH_PASSWORD` release-owner secret as iOS, but the Android files are managed by `scripts/android-release-signing.mjs` instead of Fastlane `match`.

62+
63+

`sync:pull` decrypts the Play upload keystore and Gradle signing properties into `apps/android/build/release-signing/`. That directory is gitignored, and Fastlane exports the materialized values as Gradle project properties for the current release command.

64+
65+

If `MATCH_PASSWORD` is not set, the existing manual Gradle-property signing path still works: provide `OPENCLAW_ANDROID_STORE_FILE`, `OPENCLAW_ANDROID_STORE_PASSWORD`, `OPENCLAW_ANDROID_KEY_ALIAS`, and `OPENCLAW_ANDROID_KEY_PASSWORD` through your local Gradle user properties before running release tasks.

Original file line numberDiff line numberDiff line change

@@ -20,6 +20,35 @@ Optional app targeting:

2020

GOOGLE_PLAY_PACKAGE_NAME=ai.openclaw.app

2121

```

2222
23+

Android release signing uses the same private `apps-signing` repository and `MATCH_PASSWORD` secret as iOS, but with Android-specific encrypted assets. Pull the shared upload key before release validation:

24+
25+

```bash

26+

pnpm android:release:signing:plan

27+

MATCH_PASSWORD=<signing repo password> pnpm android:release:signing:sync:pull

28+

MATCH_PASSWORD=<signing repo password> pnpm android:release:signing:check

29+

```

30+
31+

The pull command materializes decrypted signing files under `apps/android/build/release-signing/`, which is gitignored. Later Fastlane release commands reload those materialized values and export them to Gradle for the current process.

32+
33+

For the first setup or rotation, provide the Play upload keystore and a local signing properties file, then push encrypted assets to `apps-signing`:

34+
35+

```bash

36+

MATCH_PASSWORD=<signing repo password> \

37+

OPENCLAW_ANDROID_UPLOAD_KEYSTORE=<path-to-upload-keystore.jks> \

38+

OPENCLAW_ANDROID_SIGNING_PROPERTIES=<path-to-android-signing.properties> \

39+

pnpm android:release:signing:sync:push

40+

```

41+
42+

The source signing properties file must contain:

43+
44+

```properties

45+

OPENCLAW_ANDROID_STORE_PASSWORD=<store-password>

46+

OPENCLAW_ANDROID_KEY_ALIAS=<upload-key-alias>

47+

OPENCLAW_ANDROID_KEY_PASSWORD=<key-password>

48+

```

49+
50+

Store the Google Play upload key, not the irreplaceable app signing key, when Play App Signing is enabled.

51+
2352

Validate auth:

2453
2554

```bash

@@ -58,13 +87,17 @@ Release rules:

5887

- `apps/android/Config/Version.properties` is generated from that source and read by Gradle.

5988

- `apps/android/CHANGELOG.md` is the Android-only changelog and release-note source.

6089

- `apps/android/fastlane/metadata/android/en-US/release_notes.txt` is generated from that changelog by `pnpm android:version:sync`.

90+

- `apps/android/Config/ReleaseSigning.json` pins the encrypted Android signing assets in the shared signing repo.

91+

- `MATCH_PASSWORD` enables Fastlane to pull encrypted Android signing assets into `apps/android/build/release-signing/` before release validation or archive builds.

6192

- Supported pinned Android versions use CalVer: `YYYY.M.D`.

6293

- `versionCode` uses `YYYYMMDDNN`, where `NN` is a two-digit build number for the pinned version.

6394

- `pnpm android:version:pin -- --from-gateway` promotes the current root gateway version into the pinned Android release version.

6495

- `pnpm android:version:pin -- --version 2026.6.5 --version-code 2026060502` increments another build on the same Android release train.

6596

- `pnpm android:version:sync` updates generated version artifacts.

6697

- `pnpm android:version:check` validates checked-in Android version artifacts.

6798

- `pnpm android:release:preflight` validates Google Play auth, Android release signing, synced versioning, release notes, and prints the package/track/version/versionCode that will be uploaded.

99+

- `pnpm android:release:signing:sync:pull` pulls encrypted Android signing assets from `apps-signing`.

100+

- `pnpm android:release:signing:sync:push` creates or refreshes encrypted Android signing assets in `apps-signing`.

68101

- `pnpm android:screenshots` builds and installs the Play debug app, launches deterministic screenshot scenes, and captures raw PNGs.

69102

- `pnpm android:release:archive` builds the signed Play AAB and third-party APK into `apps/android/build/release-artifacts/`.

70103

- `pnpm android:release:upload` uploads the Play AAB to the configured Google Play track. The default track is `internal`.