feat: 统一 Commilitia Drop 全客户端命名与分发

This commit is contained in:
2026-07-31 22:56:10 +08:00
parent f7b0f04c9c
commit c480f0d1c2
77 changed files with 861 additions and 263 deletions
+41 -16
View File
@@ -45,23 +45,47 @@ wails := `go env GOPATH` + "/bin/wails"
desktop-dev:
cd desktop && {{wails}} dev
# 构建 macOS universal .appdarwin/arm64 + darwin/amd64)。
# 不加 -clean,让 mac/win 产物在 build/bin/ 共存;清理走 desktop-clean。
# 构建 macOS Apple Silicon .appdarwin/arm64;不支持 Intel)。
# 每次清理 build/bin:带空格的 macOS .app 若残留在 Go 模块内,会被后续跨平台
# 绑定生成误判为包路径;同一输出槽也只保留本次平台的一份客户端。
#
# ⚠️ 先手动构建前端再 `wails build -s`(跳过 wails 自带前端步骤):wails build 的
# frontend:build 在本仓库结构下不可靠(不实际重建 web/ → 嵌入旧 JS)。显式构建
# web → desktop/frontend/dist,再用 -s 让 go:embed 嵌入这份新 dist。
desktop-build-mac:
cd web && npm run build -- --outDir ../desktop/frontend/dist --emptyOutDir
cd desktop && {{wails}} build -s -platform darwin/universal
cd desktop && {{wails}} build -clean -s -platform darwin/arm64
# 正式 macOS 分发:复用钥匙串中的 Developer ID Application 证书,对 ARM64 Wails app
# 启用 hardened runtime + 时间戳签名,先公证并装订 app,再生成、签名、公证和装订 DMG。
# 公证使用与 iOS provisioning 共用的 ASC API Key;所有身份和密钥路径从 .env 读取。
desktop-dist-mac: desktop-build-mac
[ -n "$CDROP_DEVID_IDENTITY" ] && [ -n "$CDROP_ASC_KEY_PATH" ] && [ -n "$CDROP_ASC_KEY_ID" ] && [ -n "$CDROP_ASC_ISSUER_ID" ] || { echo "缺 .envCDROP_DEVID_IDENTITY / CDROP_ASC_KEY_PATH / CDROP_ASC_KEY_ID / CDROP_ASC_ISSUER_ID"; exit 1; }
[ -f "$CDROP_ASC_KEY_PATH" ]
security find-identity -v -p codesigning | rg -F "$CDROP_DEVID_IDENTITY"
codesign --force --deep --options runtime --timestamp --sign "$CDROP_DEVID_IDENTITY" 'desktop/build/bin/Commilitia Drop.app'
codesign --verify --deep --strict --verbose=2 'desktop/build/bin/Commilitia Drop.app'
rm -f 'desktop/build/bin/Commilitia Drop.app.zip' 'desktop/build/bin/Commilitia Drop.dmg'
ditto -c -k --keepParent 'desktop/build/bin/Commilitia Drop.app' 'desktop/build/bin/Commilitia Drop.app.zip'
xcrun notarytool submit 'desktop/build/bin/Commilitia Drop.app.zip' --key "$CDROP_ASC_KEY_PATH" --key-id "$CDROP_ASC_KEY_ID" --issuer "$CDROP_ASC_ISSUER_ID" --wait
xcrun stapler staple 'desktop/build/bin/Commilitia Drop.app'
xcrun stapler validate 'desktop/build/bin/Commilitia Drop.app'
bash desktop/scripts/make-dmg.sh 'desktop/build/bin/Commilitia Drop.app' 'desktop/build/bin/Commilitia Drop.dmg'
codesign --force --timestamp --sign "$CDROP_DEVID_IDENTITY" 'desktop/build/bin/Commilitia Drop.dmg'
xcrun notarytool submit 'desktop/build/bin/Commilitia Drop.dmg' --key "$CDROP_ASC_KEY_PATH" --key-id "$CDROP_ASC_KEY_ID" --issuer "$CDROP_ASC_ISSUER_ID" --wait
xcrun stapler staple 'desktop/build/bin/Commilitia Drop.dmg'
xcrun stapler validate 'desktop/build/bin/Commilitia Drop.dmg'
spctl --assess --type execute --verbose=2 'desktop/build/bin/Commilitia Drop.app'
spctl --assess --type open --context context:primary-signature --verbose=2 'desktop/build/bin/Commilitia Drop.dmg'
rm -f 'desktop/build/bin/Commilitia Drop.app.zip'
# 交叉编译 Windows amd64 .exe。macOS 原生即可——Windows 侧无 cgodarwin 的
# NSStatusBar/NSPasteboard CGO 走 build tag 排除,WebView2 是纯 Go),不需 mingw。
# 与 mac 同:先手动构建前端再 -swails 自带 frontend:build 在本仓库不可靠)。
# 产物 build/bin/desktop.exe;真测试经 RDP 到 Windows 机器跑。
# 产物 build/bin/Commilitia Drop.exe;真测试经 RDP 到 Windows 机器跑。
desktop-build-win:
cd web && npm run build -- --outDir ../desktop/frontend/dist --emptyOutDir
cd desktop && {{wails}} build -s -platform windows/amd64
cd desktop && {{wails}} build -clean -s -platform windows/amd64
# 清空 build/bin/ 产物。
desktop-clean:
@@ -106,9 +130,10 @@ mac-prep:
cd ios/CDrop && xcodebuild -project CommilitiaDrop.xcodeproj -scheme CommilitiaDropMac -sdk macosx -derivedDataPath build/DD-mac -resolvePackageDependencies
bash ios/CDrop/scripts/patch-macos-webrtc-headers.sh ios/CDrop/build/DD-mac
# macOS 原生客户端本地编译(ad-hoc 签名,无需 Apple 账号)。当前为脚手架(MacApp/ 导航骨架 +
# 菜单栏占位);引擎 / 复用视图 / 桌面功能随后续阶段并入。产物 build/DD-mac/Build/Products/Debug/
# CommilitiaDropMac.app(本地打开自测)。
# macOS 原生迁移候选的本地编译(ad-hoc 签名,无需 Apple 账号),仅供开发验证,不是正式
# 客户端或分发入口。正式 macOS 客户端仍由 desktop-build-mac 构建;只有完成功能对等、三语、
# 签名扩展与真机验收后才允许切换。候选产物位于 build/DD-mac/Build/Products/Debug/
# CommilitiaDropMac.app。
mac-build: mac-prep
cd ios/CDrop && xcodebuild -project CommilitiaDrop.xcodeproj -scheme CommilitiaDropMac -sdk macosx -destination 'platform=macOS' -derivedDataPath build/DD-mac -disableAutomaticPackageResolution build
@@ -117,17 +142,17 @@ mac-build: mac-prep
mac-test: mac-prep
cd ios/CDrop && xcodebuild test -project CommilitiaDrop.xcodeproj -scheme CommilitiaDropMac -sdk macosx -destination 'platform=macOS' -derivedDataPath build/DD-mac -disableAutomaticPackageResolution
# 真机构建 + 装机(自动 provisioning,经 ASC API Key)。前置:付费 ADPApp ID 的 App Groups /
# Push 能力(门户建好或自动建);根目录 gitignore 的 .env 配齐:CDROP_TEAM_ID / CDROP_ASC_KEY_PATH
# .p8 路径)/ CDROP_ASC_KEY_ID / CDROP_ASC_ISSUER_ID。-allowProvisioningUpdates 自动登记连接的
# 设备 + 建 profile(绕过手动 profile 的设备选择坑)。模拟器构建不需这些(base ad-hoc)。原生数据面
# 经 SPM 拉 libwebrtc,无 gomobile 预构建步骤(早先 ios-engine recipe 已随 pion-on-iOS 废弃移除)
# 用法:just ios-device <设备UDID>UDID 见 just ios-devices)。
# 真机构建 + 装机(自动 provisioning,经 ASC API Key)。必须把
# CDROP_APPLE_DEVELOPMENT_IDENTITY 设为钥匙串内既有 Apple Development 证书的 SHA-1;构建前
# 先验证该身份存在,再将其固定传给 xcodebuild,不允许以“自动签名”为由切换或新建证书。
# -allowProvisioningUpdates 只用于登记设备、更新能力与 profile。模拟器构建不需这些。
# 用法:just ios-device <设备UDID>UDID 见 just ios-devices)。全程不使用 Xcode GUI
ios-device udid:
[ -n "$CDROP_TEAM_ID" ] && [ -n "$CDROP_ASC_KEY_PATH" ] && [ -n "$CDROP_ASC_KEY_ID" ] && [ -n "$CDROP_ASC_ISSUER_ID" ] || { echo "缺 .envCDROP_TEAM_ID / CDROP_ASC_KEY_PATH / CDROP_ASC_KEY_ID / CDROP_ASC_ISSUER_ID)——见 ios/CDrop/REALDEVICE.md"; exit 1; }
[ -n "$CDROP_TEAM_ID" ] && [ -n "$CDROP_ASC_KEY_PATH" ] && [ -n "$CDROP_ASC_KEY_ID" ] && [ -n "$CDROP_ASC_ISSUER_ID" ] && [ -n "$CDROP_APPLE_DEVELOPMENT_IDENTITY" ] || { echo "缺 .envCDROP_TEAM_ID / CDROP_ASC_KEY_PATH / CDROP_ASC_KEY_ID / CDROP_ASC_ISSUER_ID / CDROP_APPLE_DEVELOPMENT_IDENTITY)——见 ios/CDrop/REALDEVICE.md"; exit 1; }
security find-identity -v -p codesigning | rg -F "$CDROP_APPLE_DEVELOPMENT_IDENTITY"
just ios-fonts
cd ios/CDrop && xcodegen generate
cd ios/CDrop && xcodebuild -project CommilitiaDrop.xcodeproj -scheme CommilitiaDrop -configuration Debug -destination "platform=iOS,id={{udid}}" -derivedDataPath build/DD-device -allowProvisioningUpdates -authenticationKeyPath "$CDROP_ASC_KEY_PATH" -authenticationKeyID "$CDROP_ASC_KEY_ID" -authenticationKeyIssuerID "$CDROP_ASC_ISSUER_ID" DEVELOPMENT_TEAM="$CDROP_TEAM_ID" CODE_SIGN_STYLE=Automatic CODE_SIGN_IDENTITY="Apple Development" build
cd ios/CDrop && xcodebuild -project CommilitiaDrop.xcodeproj -scheme CommilitiaDrop -configuration Debug -destination "platform=iOS,id={{udid}}" -derivedDataPath build/DD-device -allowProvisioningUpdates -authenticationKeyPath "$CDROP_ASC_KEY_PATH" -authenticationKeyID "$CDROP_ASC_KEY_ID" -authenticationKeyIssuerID "$CDROP_ASC_ISSUER_ID" DEVELOPMENT_TEAM="$CDROP_TEAM_ID" CODE_SIGN_STYLE=Automatic CODE_SIGN_IDENTITY="$CDROP_APPLE_DEVELOPMENT_IDENTITY" build
xcrun devicectl device install app --device {{udid}} ios/CDrop/build/DD-device/Build/Products/Debug-iphoneos/CommilitiaDrop.app
# ---- deploy plumbing ----