YwxMobileApp-iOS/scripts/use-sdk.sh
徐勤民 8b2796709b feat: YwxMobileApp-iOS 初始提交
三 Flavor(Shijiaobao / Clinical / Yiwangxin)iOS 项目

架构
- Shared/   全部共用层:AppHomeView、WebMessageHandler(JSBridge)、DevUrlSettings
- *Flavor/  各 flavor 入口:AppConfig、*App(@main)、AppDelegate(Yiwangxin 含 Push)
- project.yml + xcodegen 管理项目结构

SDK 集成
- 引用 Gitea SPM 包(branch: main,SNAPSHOT 开发模式)
- sdk.properties 追踪当前 SDK_REF,scripts/use-sdk.sh 支持 main/local/x.y.z 一键切换
- 含各 flavor xuqm/*.xuqmconfig 配置文件

JSBridge 协议
- window.webkit.messageHandlers.SZYX_APP.postMessage(json)
- 回调 window.SZYX_YWX_WebViewBridge.onMessage(json)
- 实现 setTitle/getDeviceInfo/login/setUserInfo/getAppVersion/checkUpdate
         setStorage/getStorage/removeStorage/clearStorage/setOrientation/apiError

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-29 11:29:49 +08:00

73 行
3.0 KiB
Bash
可执行文件

此文件含有模棱两可的 Unicode 字符

此文件含有可能会与其他字符混淆的 Unicode 字符。 如果您是想特意这样的,可以安全地忽略该警告。 使用 Escape 按钮显示他们。

#!/usr/bin/env bash
# 切换 iOS SDK 引用方式,更新 sdk.properties 和 project.yml,然后重新生成 Xcode 项目
#
# 用法:
# ./scripts/use-sdk.sh main # SNAPSHOT: 使用 main 分支(最新代码)
# ./scripts/use-sdk.sh 1.0.2 # Release: 使用指定 tag
# ./scripts/use-sdk.sh local # 本地调试: 使用本地 SDK 源码路径
#
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_DIR="$(dirname "$SCRIPT_DIR")"
GITEA_URL="https://xuqinmin.com/xuqmGroup/XuqmGroup-iOSSDK.git"
LOCAL_PATH="../../../XuqmGroup/XuqmGroup-iOSSDK"
usage() {
echo "Usage: $0 <main|local|x.y.z>"
echo " main — SNAPSHOT,引用 main 分支(开发期默认)"
echo " local — 本地 SDK 源码路径SDK 开发调试,不要提交此状态)"
echo " x.y.z — 正式版本 tag如 1.0.2"
exit 1
}
[[ $# -eq 1 ]] || usage
REF="$1"
cd "$PROJECT_DIR"
# ── 更新 sdk.properties ───────────────────────────────────────────────────────
sed -i '' "s/^SDK_REF=.*/SDK_REF=${REF}/" sdk.properties
echo "[use-sdk] sdk.properties → SDK_REF=${REF}"
# ── 生成 project.yml 的包引用块 ───────────────────────────────────────────────
if [[ "$REF" == "local" ]]; then
PKG_BLOCK="packages:\n XuqmGroupSDK:\n path: ${LOCAL_PATH}"
echo "[use-sdk] 模式: 本地路径 (${LOCAL_PATH})"
elif [[ "$REF" == "main" ]]; then
PKG_BLOCK="packages:\n XuqmGroupSDK:\n url: ${GITEA_URL}\n branch: main"
echo "[use-sdk] 模式: SNAPSHOT (branch: main)"
else
PKG_BLOCK="packages:\n XuqmGroupSDK:\n url: ${GITEA_URL}\n from: \"${REF}\""
echo "[use-sdk] 模式: Release (from: ${REF})"
fi
# ── 替换 project.yml 中的 packages 块 ────────────────────────────────────────
# 用 Python 替换 packages: 到下一个顶层 key 之间的内容
python3 - "$PKG_BLOCK" <<'PYEOF'
import sys, re
pkg_block = sys.argv[1]
with open('project.yml', 'r') as f:
content = f.read()
# Replace from 'packages:' up to (but not including) the next top-level key
new_content = re.sub(
r'^packages:.*?(?=^\w)',
pkg_block.replace('\\n', '\n') + '\n\n',
content,
flags=re.MULTILINE | re.DOTALL
)
with open('project.yml', 'w') as f:
f.write(new_content)
print("[use-sdk] project.yml 已更新")
PYEOF
# ── 重新生成 Xcode 项目 ───────────────────────────────────────────────────────
if command -v xcodegen &>/dev/null; then
xcodegen generate
echo "[use-sdk] xcodegen generate 完成"
else
echo "[use-sdk] 警告: xcodegen 未安装,请手动运行 xcodegen generate"
fi