diff --git a/Configurations/CodeSigning.xcconfig b/Configurations/CodeSigning.xcconfig
index e71159f1..f2ebc8ea 100644
--- a/Configurations/CodeSigning.xcconfig
+++ b/Configurations/CodeSigning.xcconfig
@@ -3,10 +3,26 @@
RUNTIME_VIEWER_DEVELOPMENT_TEAM = D5Q73692VW
+// Main app (RuntimeViewerUsingAppKit, RuntimeViewerUsingUIKit, RuntimeViewerUsingVision)
RUNTIME_VIEWER_APP_DEBUG_BUNDLE_IDENTIFIER = dev.JH.RuntimeViewer
RUNTIME_VIEWER_APP_RELEASE_BUNDLE_IDENTIFIER = com.JH.RuntimeViewer
+
+// SMJobBless privileged helper (com.JH.RuntimeViewerService target)
RUNTIME_VIEWER_PRIVILEGED_HELPER_BUNDLE_IDENTIFIER = com.JH.RuntimeViewerService
+// Mac Catalyst helper app (RuntimeViewerCatalystHelper target)
+RUNTIME_VIEWER_CATALYST_HELPER_DEBUG_BUNDLE_IDENTIFIER = dev.JH.RuntimeViewerCatalystHelper
+RUNTIME_VIEWER_CATALYST_HELPER_RELEASE_BUNDLE_IDENTIFIER = com.JH.RuntimeViewerCatalystHelper
+
+// Mac Catalyst helper plugin bundle (RuntimeViewerCatalystHelperPlugin target).
+// Plugin uses one identifier across all configurations because the helper app
+// loads it by exact bundle identifier and a debug variant would silently fail
+// to load when run from Xcode against a release-built helper.
+RUNTIME_VIEWER_CATALYST_HELPER_PLUGIN_BUNDLE_IDENTIFIER = com.JH.RuntimeViewerCatalystHelperPlugin
+
+// XPC server framework (RuntimeViewerServer / RuntimeViewerMobileServer targets)
+RUNTIME_VIEWER_SERVER_BUNDLE_IDENTIFIER = com.MxIris.RuntimeViewerServer
+
RUNTIME_VIEWER_DEVELOPMENT_CERTIFICATE_REQUIREMENT = certificate leaf[subject.OU] = $(RUNTIME_VIEWER_DEVELOPMENT_TEAM) and certificate 1[field.1.2.840.113635.100.6.2.1] /* exists */
// `and` binds tighter than `or` in csreq, so the outer parens around the `or` group are load-bearing — they keep the team OU check from being bypassed on the Apple Distribution branch.
RUNTIME_VIEWER_DISTRIBUTION_CERTIFICATE_REQUIREMENT = (certificate leaf[field.1.2.840.113635.100.6.1.9] /* exists */ or (certificate 1[field.1.2.840.113635.100.6.2.6] /* exists */ and certificate leaf[field.1.2.840.113635.100.6.1.13] /* exists */)) and certificate leaf[subject.OU] = $(RUNTIME_VIEWER_DEVELOPMENT_TEAM)
diff --git a/Configurations/custom.xcconfig.example b/Configurations/custom.xcconfig.example
index 7526f6ec..fcb1b398 100644
--- a/Configurations/custom.xcconfig.example
+++ b/Configurations/custom.xcconfig.example
@@ -7,6 +7,10 @@
// RUNTIME_VIEWER_APP_DEBUG_BUNDLE_IDENTIFIER = dev.example.RuntimeViewer
// RUNTIME_VIEWER_APP_RELEASE_BUNDLE_IDENTIFIER = com.example.RuntimeViewer
// RUNTIME_VIEWER_PRIVILEGED_HELPER_BUNDLE_IDENTIFIER = com.example.RuntimeViewerService
+// RUNTIME_VIEWER_CATALYST_HELPER_DEBUG_BUNDLE_IDENTIFIER = dev.example.RuntimeViewerCatalystHelper
+// RUNTIME_VIEWER_CATALYST_HELPER_RELEASE_BUNDLE_IDENTIFIER = com.example.RuntimeViewerCatalystHelper
+// RUNTIME_VIEWER_CATALYST_HELPER_PLUGIN_BUNDLE_IDENTIFIER = com.example.RuntimeViewerCatalystHelperPlugin
+// RUNTIME_VIEWER_SERVER_BUNDLE_IDENTIFIER = com.example.RuntimeViewerServer
// Override these only if you need a fully custom SMJobBless requirement.
// RUNTIME_VIEWER_DEBUG_SM_PRIVILEGED_EXECUTABLE = identifier "$(RUNTIME_VIEWER_PRIVILEGED_HELPER_BUNDLE_IDENTIFIER)" and anchor apple generic and $(RUNTIME_VIEWER_DEVELOPMENT_CERTIFICATE_REQUIREMENT)
diff --git a/Documentations/Plans/2026-05-06-debug-arm64e-runscript-design.md b/Documentations/Plans/2026-05-06-debug-arm64e-runscript-design.md
new file mode 100644
index 00000000..88783cdb
--- /dev/null
+++ b/Documentations/Plans/2026-05-06-debug-arm64e-runscript-design.md
@@ -0,0 +1,236 @@
+# Debug arm64e RunScript 设计
+
+## 背景与动机
+
+`RuntimeViewer-Distribution.xcworkspace` 通过
+`xcshareddata/WorkspaceSettings.xcsettings` 中的
+`iOSPackagesShouldBuildARM64e=true` 强制所有 SPM 包构建 arm64e
+切片,这是发版时必备的配置。
+
+但日常开发用的 `RuntimeViewer.xcworkspace` 不能照搬这一设置,原因有二:
+
+1. 该 workspace 引用了本地兄弟仓库(`../MachOKit`、`../MachOObjCSection`、
+ `../MachOSwiftSection`、`../swift-demangling`、`../swift-semantic-string`),
+ 它们只随主仓库 SPM 走,没有为 arm64e 单独配置。
+2. 开启 arm64e 后用 Xcode GUI 编译会触发 Xcode 自身的 bug 直接失败,
+ 但 `xcodebuild` 命令行可以正常通过。
+
+因此需要一份"带本地依赖、能产出 arm64e 调试包"的入口,并通过命令行
+脚本绕开 GUI 编译失败的问题。
+
+## 目标
+
+- 提供 `RuntimeViewer-Debug.xcworkspace`:内容等于
+ `RuntimeViewer.xcworkspace`(保留本地兄弟仓库引用)+
+ `iOSPackagesShouldBuildARM64e=true`。
+- 在 `RuntimeViewerUsingAppKit.xcodeproj` 与 `RuntimeViewerServer.xcodeproj`
+ 里新增 `Debug-arm64e` build configuration,专为 RunScript.sh 服务,
+ 其他时候(GUI 编 Debug、ArchiveScript 编 Release/Distribution)完全不受影响。
+- 提供 `RunScript.sh`:用 `xcodebuild` 命令行 + `Debug-arm64e` configuration
+ 构建并启动主 app,避开 GUI bug。
+- 不引入 archive / export / notarize / appcast / upload / commit 等发版步骤
+ (这些归 `ArchiveScript.sh` 管)。
+
+## 非目标
+
+- 不替换 `ArchiveScript.sh`。
+- 不修改 `RuntimeViewer.xcworkspace` 或 `RuntimeViewer-Distribution.xcworkspace`。
+- 不为 iOS / Catalyst / 模拟器产物提供发布入口(`BuildSimulatorScript.sh`、
+ `ArchiveScript.sh` 已覆盖)。
+- 不附加 lldb attach、断点恢复等调试器集成 — 启动后用户自己用 Xcode
+ Debug → Attach to Process 即可。
+
+## 方案
+
+### 1. 新增 `RuntimeViewer-Debug.xcworkspace`
+
+目录结构:
+
+```
+RuntimeViewer-Debug.xcworkspace/
+├── contents.xcworkspacedata # 复制自 RuntimeViewer.xcworkspace
+└── xcshareddata/
+ └── WorkspaceSettings.xcsettings # 复制自 Distribution(含 arm64e 开关)
+```
+
+`contents.xcworkspacedata` 的引用列表与 `RuntimeViewer.xcworkspace`
+完全一致(含 `container:../MachOKit` 等本地兄弟仓库),不做任何裁剪。
+
+`WorkspaceSettings.xcsettings` 内容:
+
+```xml
+
+
+ IDEWorkspaceSharedSettings_AutocreateContextsIfNeeded
+
+ iOSPackagesShouldBuildARM64e
+
+
+
+```
+
+不创建 `xcuserdata` 目录(按需自动生成)。
+
+### 2. 新增 Debug-arm64e build configuration
+
+在两个 `.xcodeproj` 里都加一条与 `Debug` 平行的 `Debug-arm64e`
+configuration。它是 `Debug` 的复制,唯一差别在于以下两个 target 的
+`ENABLE_POINTER_AUTHENTICATION` 设为 `YES`:
+
+- `RuntimeViewerServer.framework` (RuntimeViewerServer.xcodeproj)
+- `dev.mxiris.runtimeviewer.service` (RuntimeViewerUsingAppKit.xcodeproj)
+
+这两个 target 是 inspect 别的 arm64e 进程的执行体;只有它们需要 arm64e
+切片,其它 target(主 app、Catalyst helper、bundle 等)保持 `EPA=NO`,
+跟 Debug 行为一致。
+
+为什么不在命令行用 `ARCHS=arm64e ONLY_ACTIVE_ARCH=NO` 强制:
+项目依赖里有大量 SwiftMacro plugin(`FrameworkToolboxMacros` /
+`MemberwiseInitMacros` / `MachOMacros` 等),它们是 build-host
+executable,`VALID_ARCHS=arm64`,不能被强制成 arm64e。命令行 ARCHS
+override 是全局的,会一并污染这些 plugin → plugin 编不出来 → 主 target
+找不到 plugin → build 整体失败。
+
+`ENABLE_POINTER_AUTHENTICATION=YES` 是 per-target build setting,
+让 Apple Silicon 上的 `ARCHS_STANDARD` 自动展开为 `arm64 arm64e`,
+不影响 macros,也不需要任何命令行 override。
+
+### 3. 新增 `RunScript.sh`
+
+模仿 `ArchiveScript.sh` 的骨架,复用其工具函数和参数解析风格。
+
+#### 默认参数
+
+| 参数 | 默认值 |
+|------|--------|
+| `WORKSPACE` | `RuntimeViewer-Debug.xcworkspace` |
+| `SCHEME` | `RuntimeViewer macOS` |
+| `CATALYST_SCHEME` | `RuntimeViewerCatalystHelper` |
+| `CONFIGURATION` | `Debug-arm64e` |
+| `BUILD_NUMBER` | `$(date +"%Y%m%d.%H.%M")` |
+| `DERIVED` | `$PROJECT_DIR/DerivedData/Debug-arm64e` |
+| `LAUNCH` | `true` |
+
+`DerivedData/Debug-arm64e` 单独成路径,避免与 Xcode GUI 的默认
+DerivedData 互相污染(GUI 那份编译失败的产物不会被命令行复用,反之亦然)。
+
+#### 命令行选项
+
+| 选项 | 行为 |
+|------|------|
+| `--workspace ` | 覆盖 workspace |
+| `--scheme ` | 覆盖主 app scheme |
+| `--catalyst-helper-scheme ` | 覆盖 Catalyst helper scheme |
+| `--configuration ` | 覆盖 configuration(默认 Debug) |
+| `--build-number ` | 覆盖 `CURRENT_PROJECT_VERSION` |
+| `--derived-data ` | 覆盖 DerivedData |
+| `--update-packages` | 编译前刷新 SPM pin(同 ArchiveScript) |
+| `--no-launch` | 编译完不自动启动 .app |
+| `--keep-derived` | 保留 DerivedData(默认就保留,仅占位以保持参数对称) |
+| `--dry-run` | 仅打印命令,不执行 |
+| `-h, --help` | 显示帮助 |
+
+不复用 ArchiveScript 的 `--update-appcast` / `--upload-to-github` /
+`--commit-push` / `--skip-notarization` / `--include-ios-simulator` 等
+发版相关选项 — 用不到。
+
+#### 复用的工具函数
+
+直接搬运 ArchiveScript.sh 中的:
+
+- `fail`、`log`:错误退出与统一前缀日志
+- `pretty`:xcbeautify 自动检测,无则透传 `cat`
+- `run`:`--dry-run` 时只 echo,不执行
+- `run_piped`:通过 `pretty` 美化输出,同时把原始 log 落到
+ `Products/Logs/-.log`,便于排查
+- `update_packages`(仅当 `--update-packages` 时调用)
+
+`LOG_DIR` 默认 `$PROJECT_DIR/Products/Logs`(与 ArchiveScript 共用)。
+不抓取 `xcdistributionlogs`(不走 exportArchive)。
+
+#### 编译流程
+
+1. 解析参数,校验 `RuntimeViewer-Debug.xcworkspace` 存在。
+2. (可选)`update_packages`。
+3. **Build Catalyst helper**(CLAUDE.md 强制要求,不提供跳过开关):
+
+ ```bash
+ xcodebuild build \
+ -workspace "$WORKSPACE" \
+ -scheme "$CATALYST_SCHEME" \
+ -configuration "$CONFIGURATION" \
+ -destination 'generic/platform=macOS,variant=Mac Catalyst' \
+ -derivedDataPath "$DERIVED" \
+ -skipPackagePluginValidation -skipMacroValidation \
+ "CURRENT_PROJECT_VERSION=$BUILD_NUMBER"
+ ```
+
+4. **Build 主 app**:
+
+ ```bash
+ xcodebuild build \
+ -workspace "$WORKSPACE" \
+ -scheme "$SCHEME" \
+ -configuration "$CONFIGURATION" \
+ -destination 'generic/platform=macOS' \
+ -derivedDataPath "$DERIVED" \
+ -skipPackagePluginValidation -skipMacroValidation \
+ "CURRENT_PROJECT_VERSION=$BUILD_NUMBER"
+ ```
+
+5. 在 `$DERIVED/Build/Products/Debug-arm64e/` 下定位 `RuntimeViewer*.app`
+ (排除 `RuntimeViewerCatalystHelper.app`),记录路径。
+6. 默认 `open "$APP_PATH"`(`--no-launch` 跳过)。
+7. log 输出主 app 路径。
+
+#### arm64e 切片的来源
+
+- workspace 层:`iOSPackagesShouldBuildARM64e=true` 让 SPM 包带 arm64e 切片
+- 工程层:`Debug-arm64e` configuration 给两个目标 target 设
+ `ENABLE_POINTER_AUTHENTICATION=YES`,使其 binary 在 Apple Silicon 上
+ 自动包含 arm64e 切片
+
+不传任何命令行 ARCHS override,避免污染 macro plugin 等 build-host 工具。
+
+## 验证与回退
+
+### 手动验证步骤
+
+1. 运行 `./RunScript.sh`(无参数)。
+2. 确认 `Products/Logs/01-build-catalyst-helper.log` 与
+ `Products/Logs/02-build-main.log` 都存在且无错误。
+3. `.app` 自动启动,菜单 → "About RuntimeViewer" 看到 build number。
+4. 终端运行(`` 为 `RuntimeViewer-Debug.app` 路径):
+
+ ```bash
+ lipo -info "/Contents/Resources/RuntimeViewerServer.framework/RuntimeViewerServer"
+ lipo -info "/Contents/Library/LaunchServices/dev.mxiris.runtimeviewer.service"
+ lipo -info "/Contents/MacOS/RuntimeViewer-Debug"
+ ```
+
+ 预期前两个输出包含 `arm64e`,第三个(主 app)**不**包含
+ `arm64e`(主 app 在 Debug-arm64e 下保持 `EPA=NO`,跟 Debug 一致)。
+5. 重跑 `./RunScript.sh --no-launch`,验证不会自动启动。
+6. 重跑 `./RunScript.sh --dry-run`,验证只打印命令。
+
+### 回退方案
+
+- 若 RunScript 出问题:删除 `RunScript.sh` 即可。
+- 若 `Debug-arm64e` configuration 有问题:在 Xcode 里 Project → Editor →
+ 删 Debug-arm64e configuration(两个 .xcodeproj 各一次)。
+- 若 Debug workspace 有问题:删除 `RuntimeViewer-Debug.xcworkspace/` 整个目录。
+- commit 拆成可单独 revert 的部分(workspace、configuration、脚本各自一个 commit)。
+
+## 风险
+
+- **Xcode GUI bug 依旧存在**:用户若直接在 Xcode 里 ⌘B 这个 Debug
+ workspace 仍会失败(`iOSPackagesShouldBuildARM64e=true` 在 GUI 下触发
+ Xcode bug)。脚本只解决命令行编译,不解决 GUI 编译。
+- **DerivedData 体积**:`Debug-arm64e` 与 GUI DerivedData 并存可能多
+ 占几 GB 磁盘。可接受,必要时手动删除。
+- **arm64e 调试器**:arm64e 在非 Apple 内部环境下需要启动
+ `boot-args` 加 `-arm64e_preview_abi`。这是已有约束,本设计不解决。
+- **新 configuration 的维护成本**:将来给项目加新 target 时,要记得给
+ `Debug-arm64e` 也建对应的 build configuration block,否则该 target 在
+ RunScript 跑时会回落到 project-level default 行为。Xcode 加 target 的
+ GUI 流程会自动处理,手写 .pbxproj 才需要注意。
diff --git a/Documentations/Plans/2026-05-06-debug-arm64e-runscript-plan.md b/Documentations/Plans/2026-05-06-debug-arm64e-runscript-plan.md
new file mode 100644
index 00000000..bd1c0263
--- /dev/null
+++ b/Documentations/Plans/2026-05-06-debug-arm64e-runscript-plan.md
@@ -0,0 +1,553 @@
+# Debug arm64e RunScript 实现计划
+
+> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking.
+
+**Goal:** 新增 `RuntimeViewer-Debug.xcworkspace`、`Debug-arm64e` build configuration、`RunScript.sh`,通过命令行 xcodebuild 编译并启动只在两个目标 target 带 arm64e 切片的 Debug 版本主 app,绕开 Xcode GUI 在 arm64e 模式下的编译 bug。
+
+**Architecture:** 复制 `RuntimeViewer.xcworkspace` 的本地依赖工作区,叠加 `iOSPackagesShouldBuildARM64e=true`;在 `RuntimeViewerUsingAppKit.xcodeproj` 与 `RuntimeViewerServer.xcodeproj` 里增加 `Debug-arm64e` configuration(基于 Debug,仅给 `RuntimeViewerServer.framework` 和 `dev.mxiris.runtimeviewer.service` 两个 target 设 `EPA=YES`);脚本骨架与工具函数模仿 `ArchiveScript.sh`,去除发版步骤,使用 `-configuration Debug-arm64e` 让需要 arm64e 切片的 target 自然拿到该切片;不传命令行 ARCHS override 以避免污染 SwiftMacro plugin 等 build-host 工具。
+
+**Tech Stack:** bash, xcodebuild, xcbeautify(可选)
+
+**参考文档:** `Documentations/Plans/2026-05-06-debug-arm64e-runscript-design.md`
+
+---
+
+## File Structure
+
+| 类型 | 路径 | 责任 |
+|------|------|------|
+| 创建 | `RuntimeViewer-Debug.xcworkspace/contents.xcworkspacedata` | 工作区文件引用列表(与 `RuntimeViewer.xcworkspace` 一致,含本地兄弟仓库) |
+| 创建 | `RuntimeViewer-Debug.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings` | `iOSPackagesShouldBuildARM64e=true` 等 workspace 级开关 |
+| 修改 | `RuntimeViewerUsingAppKit/RuntimeViewerUsingAppKit.xcodeproj/project.pbxproj` | 给所有 target + project 增加 `Debug-arm64e` build configuration(dev.mxiris.runtimeviewer.service 设 `EPA=YES`,其余沿用 Debug) |
+| 修改 | `RuntimeViewerServer/RuntimeViewerServer.xcodeproj/project.pbxproj` | 给 RuntimeViewerServer/RuntimeViewerMobileServer + project 增加 `Debug-arm64e`(RuntimeViewerServer 设 `EPA=YES`) |
+| 创建 | `RunScript.sh` | 命令行 `Debug-arm64e` 配置构建 / 启动入口 |
+
+---
+
+## Task 1: 新建 RuntimeViewer-Debug.xcworkspace
+
+**Files:**
+- Create: `RuntimeViewer-Debug.xcworkspace/contents.xcworkspacedata`
+- Create: `RuntimeViewer-Debug.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings`
+
+- [ ] **Step 1: 创建 `contents.xcworkspacedata`**
+
+写入与 `RuntimeViewer.xcworkspace/contents.xcworkspacedata` **完全一致**的内容(保留所有 `container:..` 本地兄弟仓库引用):
+
+```xml
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+- [ ] **Step 2: 创建 `WorkspaceSettings.xcsettings`**
+
+写入与 `RuntimeViewer-Distribution.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings` **完全一致**的内容:
+
+```xml
+
+
+
+
+ IDEWorkspaceSharedSettings_AutocreateContextsIfNeeded
+
+ iOSPackagesShouldBuildARM64e
+
+
+
+```
+
+注意 plist 内部缩进使用 tab(与 Distribution 原文一致),不要替换成空格。
+
+- [ ] **Step 3: 验证 workspace 文件 xcodebuild 可识别**
+
+运行:
+
+```bash
+xcodebuild -workspace RuntimeViewer-Debug.xcworkspace -list 2>&1 | head -40
+```
+
+预期:列出 schemes(含 `RuntimeViewer macOS`、`RuntimeViewerCatalystHelper`),无 `xcodebuild: error` 行。
+
+- [ ] **Step 4: Commit**
+
+```bash
+git add RuntimeViewer-Debug.xcworkspace/contents.xcworkspacedata \
+ RuntimeViewer-Debug.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
+git commit -m "$(cat <<'EOF'
+feat(debug-arm64e-runscript): add RuntimeViewer-Debug workspace with arm64e flag
+
+Mirrors RuntimeViewer.xcworkspace (with local sibling repo references for
+MachOKit/MachOObjCSection/MachOSwiftSection/swift-demangling/swift-semantic-string)
+and adds iOSPackagesShouldBuildARM64e=true so xcodebuild produces arm64e
+SPM slices. The Xcode GUI compile bug under this flag is bypassed by the
+upcoming RunScript.sh, which drives xcodebuild from the command line.
+EOF
+)"
+```
+
+---
+
+## Task 2: RunScript.sh 骨架(头部、默认参数、工具函数、参数解析)
+
+**Files:**
+- Create: `RunScript.sh`
+
+- [ ] **Step 1: 写脚本头与默认参数**
+
+新建 `RunScript.sh`,写入:
+
+```bash
+#!/usr/bin/env bash
+# RunScript.sh — Build and launch a Debug + arm64e RuntimeViewer using
+# xcodebuild from the command line. The Xcode GUI fails to compile under
+# iOSPackagesShouldBuildARM64e=true; this script bypasses that bug.
+#
+# Usage:
+# ./RunScript.sh # build + launch
+# ./RunScript.sh --no-launch # build only
+# ./RunScript.sh --update-packages # refresh SPM pins first
+# ./RunScript.sh --dry-run # print commands without running
+# ./RunScript.sh --help
+#
+# All distribution-related flags (notarize, appcast, GitHub upload, commit)
+# are intentionally absent — see ArchiveScript.sh for those.
+set -euo pipefail
+
+PROJECT_DIR="$(cd "$(dirname "$0")" && pwd)"
+cd "$PROJECT_DIR"
+
+# Defaults
+WORKSPACE="RuntimeViewer-Debug.xcworkspace"
+SCHEME="RuntimeViewer macOS"
+CATALYST_SCHEME="RuntimeViewerCatalystHelper"
+CONFIGURATION="Debug-arm64e"
+BUILD_NUMBER="$(date +"%Y%m%d.%H.%M")"
+DERIVED_DATA="$PROJECT_DIR/DerivedData/Debug-arm64e"
+
+UPDATE_PACKAGES=false
+LAUNCH=true
+DRY_RUN=false
+```
+
+- [ ] **Step 2: 写工具函数(fail / log / pretty / run / run_piped)**
+
+继续追加:
+
+```bash
+fail() { echo "error: $*" >&2; exit 1; }
+log() { echo "[RunScript] $*"; }
+
+# Pipe xcodebuild output through xcbeautify when it is installed; otherwise
+# fall back to cat so that runs do not depend on the tool.
+pretty() {
+ if command -v xcbeautify >/dev/null 2>&1; then
+ xcbeautify
+ else
+ cat
+ fi
+}
+
+run() {
+ if $DRY_RUN; then
+ printf '+ '; printf '%q ' "$@"; echo
+ else
+ "$@"
+ fi
+}
+
+# Run a command with its stdout+stderr piped through pretty(). The raw
+# output is also tee'd to $LOG_DIR so devs can recover the full xcodebuild
+# log when xcbeautify drops error lines. `set -o pipefail` ensures a
+# failure in the leading command still propagates.
+run_piped() {
+ if $DRY_RUN; then
+ printf '+ '; printf '%q ' "$@"; printf '| tee | pretty\n'
+ return 0
+ fi
+ mkdir -p "$LOG_DIR"
+ XCODEBUILD_LOG_INDEX=$((XCODEBUILD_LOG_INDEX + 1))
+ local slug="${XCODEBUILD_LOG_NAME:-step}"
+ local log_path
+ log_path="$LOG_DIR/$(printf '%02d' "$XCODEBUILD_LOG_INDEX")-${slug}.log"
+ log "Raw xcodebuild log: $log_path"
+ "$@" 2>&1 | tee "$log_path" | pretty
+}
+```
+
+- [ ] **Step 3: 写参数解析**
+
+继续追加:
+
+```bash
+while [[ $# -gt 0 ]]; do
+ case "$1" in
+ --workspace) WORKSPACE="$2"; shift 2;;
+ --scheme) SCHEME="$2"; shift 2;;
+ --catalyst-helper-scheme) CATALYST_SCHEME="$2"; shift 2;;
+ --configuration) CONFIGURATION="$2"; shift 2;;
+ --build-number) BUILD_NUMBER="$2"; shift 2;;
+ --derived-data) DERIVED_DATA="$2"; shift 2;;
+ --update-packages) UPDATE_PACKAGES=true; shift;;
+ --no-launch) LAUNCH=false; shift;;
+ --dry-run) DRY_RUN=true; shift;;
+ -h|--help) sed -n '2,15p' "$0" | sed 's/^# *//'; exit 0;;
+ *) fail "unknown argument: $1";;
+ esac
+done
+
+[[ -d "$WORKSPACE" ]] || fail "workspace not found: $WORKSPACE"
+
+log "workspace=$WORKSPACE scheme=$SCHEME configuration=$CONFIGURATION build=$BUILD_NUMBER"
+log "derived_data=$DERIVED_DATA update_packages=$UPDATE_PACKAGES launch=$LAUNCH"
+```
+
+- [ ] **Step 4: 写 LOG_DIR 与计数器**
+
+继续追加:
+
+```bash
+LOG_DIR="${LOG_DIR:-$PROJECT_DIR/Products/Logs}"
+XCODEBUILD_LOG_INDEX=0
+
+mkdir -p "$LOG_DIR"
+log "xcodebuild logs: $LOG_DIR"
+```
+
+- [ ] **Step 5: 加可执行权限**
+
+```bash
+chmod +x RunScript.sh
+```
+
+- [ ] **Step 6: 验证 `--help` 与未知参数**
+
+运行:
+
+```bash
+./RunScript.sh --help
+```
+
+预期:打印 `RunScript.sh — Build and launch ...` 等 usage 行(来自头部注释 line 2–15)。
+
+运行:
+
+```bash
+./RunScript.sh --bogus 2>&1 || true
+```
+
+预期:stderr 输出 `error: unknown argument: --bogus`,退出码非 0。
+
+- [ ] **Step 7: 验证 bash 语法**
+
+```bash
+bash -n RunScript.sh
+```
+
+预期:无输出(语法 OK)。
+
+- [ ] **Step 8: Commit**
+
+```bash
+git add RunScript.sh
+git commit -m "$(cat <<'EOF'
+feat(debug-arm64e-runscript): scaffold RunScript.sh with arg parsing
+
+Adds the bash skeleton: shebang, defaults (Debug + arm64e workspace,
+DerivedData/Debug-arm64e), helper functions (fail/log/pretty/run/run_piped)
+modeled after ArchiveScript.sh, argument parsing, and workspace existence
+check. Build and launch logic land in the next commit.
+EOF
+)"
+```
+
+---
+
+## Task 3: RunScript.sh 编译流程与 launch
+
+**Files:**
+- Modify: `RunScript.sh`(在参数解析与 LOG_DIR 之后追加)
+
+- [ ] **Step 1: 写 `update_packages` 函数**
+
+在 `LOG_DIR=...; mkdir -p "$LOG_DIR"; log "xcodebuild logs: ..."` 后追加:
+
+```bash
+update_packages() {
+ log "Updating Swift package dependencies"
+ run swift package update --package-path "$PROJECT_DIR/RuntimeViewerCore"
+ run swift package update --package-path "$PROJECT_DIR/RuntimeViewerPackages"
+
+ local workspace_path="$WORKSPACE"
+ if [[ "$workspace_path" != /* ]]; then
+ workspace_path="$PROJECT_DIR/$workspace_path"
+ fi
+
+ local workspace_package_resolved="$workspace_path/xcshareddata/swiftpm/Package.resolved"
+ log "Refreshing workspace package pins"
+ run rm -f "$workspace_package_resolved"
+
+ XCODEBUILD_LOG_NAME="resolve-catalyst-helper-packages" run_piped xcodebuild -resolvePackageDependencies \
+ -workspace "$WORKSPACE" \
+ -scheme "$CATALYST_SCHEME" \
+ -skipPackagePluginValidation -skipMacroValidation
+
+ XCODEBUILD_LOG_NAME="resolve-main-packages" run_piped xcodebuild -resolvePackageDependencies \
+ -workspace "$WORKSPACE" \
+ -scheme "$SCHEME" \
+ -skipPackagePluginValidation -skipMacroValidation
+}
+
+if $UPDATE_PACKAGES; then
+ update_packages
+fi
+```
+
+- [ ] **Step 2: 写 build Catalyst helper 步骤**
+
+继续追加:
+
+```bash
+log "Building Catalyst helper"
+XCODEBUILD_LOG_NAME="build-catalyst-helper" run_piped xcodebuild build \
+ -workspace "$WORKSPACE" \
+ -scheme "$CATALYST_SCHEME" \
+ -configuration "$CONFIGURATION" \
+ -destination 'generic/platform=macOS,variant=Mac Catalyst' \
+ -derivedDataPath "$DERIVED_DATA" \
+ -skipPackagePluginValidation -skipMacroValidation \
+ "CURRENT_PROJECT_VERSION=$BUILD_NUMBER"
+```
+
+- [ ] **Step 3: 写 build 主 app + 定位 .app**
+
+继续追加:
+
+```bash
+log "Building main app"
+XCODEBUILD_LOG_NAME="build-main" run_piped xcodebuild build \
+ -workspace "$WORKSPACE" \
+ -scheme "$SCHEME" \
+ -configuration "$CONFIGURATION" \
+ -destination 'generic/platform=macOS' \
+ -derivedDataPath "$DERIVED_DATA" \
+ -skipPackagePluginValidation -skipMacroValidation \
+ "CURRENT_PROJECT_VERSION=$BUILD_NUMBER"
+
+PRODUCTS_DIR="$DERIVED_DATA/Build/Products/$CONFIGURATION"
+APP_PATH=""
+if [[ -d "$PRODUCTS_DIR" ]]; then
+ APP_PATH=$(find "$PRODUCTS_DIR" -maxdepth 1 -type d -name 'RuntimeViewer*.app' \
+ -not -name 'RuntimeViewerCatalystHelper.app' | head -1)
+fi
+if $DRY_RUN; then
+ APP_PATH="${APP_PATH:-}"
+else
+ [[ -n "$APP_PATH" && -d "$APP_PATH" ]] || fail "expected built *.app under $PRODUCTS_DIR"
+fi
+```
+
+注:`$DRY_RUN` 时 `find` 命中不到(脚本只 echo 了 xcodebuild 命令、并未真编译),所以单独处理;让 dry-run 也能跑到末尾的 launch / log 段。
+
+- [ ] **Step 4: 写 launch + 末尾 log 输出**
+
+继续追加:
+
+```bash
+if $LAUNCH; then
+ log "Launching $APP_PATH"
+ run open "$APP_PATH"
+else
+ log "Launch skipped (--no-launch)"
+fi
+
+log "Done. Outputs:"
+log " app: $APP_PATH"
+log " derived_data: $DERIVED_DATA"
+```
+
+- [ ] **Step 5: bash 语法检查**
+
+```bash
+bash -n RunScript.sh
+```
+
+预期:无输出。
+
+- [ ] **Step 6: 干跑验证命令拼接**
+
+```bash
+./RunScript.sh --dry-run 2>&1 | tee /tmp/runscript-dryrun.log
+```
+
+预期 `/tmp/runscript-dryrun.log` 中能看到(顺序、参数应一致):
+
+1. `[RunScript] workspace=RuntimeViewer-Debug.xcworkspace scheme=RuntimeViewer macOS configuration=Debug build=...`
+2. `[RunScript] Building Catalyst helper (arm64e)`
+3. `+ xcodebuild build -workspace RuntimeViewer-Debug.xcworkspace -scheme RuntimeViewerCatalystHelper -configuration Debug -destination generic/platform=macOS,variant=Mac\ Catalyst -derivedDataPath .../DerivedData/Debug-arm64e -skipPackagePluginValidation -skipMacroValidation ARCHS=arm64e ONLY_ACTIVE_ARCH=NO CURRENT_PROJECT_VERSION=...`
+4. `[RunScript] Building main app (arm64e)`
+5. `+ xcodebuild build -workspace RuntimeViewer-Debug.xcworkspace -scheme RuntimeViewer\ macOS -configuration Debug -destination generic/platform=macOS -derivedDataPath .../DerivedData/Debug-arm64e -skipPackagePluginValidation -skipMacroValidation ARCHS=arm64e ONLY_ACTIVE_ARCH=NO CURRENT_PROJECT_VERSION=...`
+6. `[RunScript] Launching `
+7. `+ open `
+8. `[RunScript] Done. Outputs:`
+
+确认每条 xcodebuild 命令都包含 `ARCHS=arm64e ONLY_ACTIVE_ARCH=NO`,主 app destination 是 `generic/platform=macOS`,Catalyst helper 是 `generic/platform=macOS,variant=Mac Catalyst`。
+
+- [ ] **Step 7: 干跑 `--no-launch`**
+
+```bash
+./RunScript.sh --no-launch --dry-run 2>&1 | grep -E '(Launching|Launch skipped)'
+```
+
+预期:输出 `[RunScript] Launch skipped (--no-launch)`,不出现 `Launching`。
+
+- [ ] **Step 8: Commit**
+
+```bash
+git add RunScript.sh
+git commit -m "$(cat <<'EOF'
+feat(debug-arm64e-runscript): build Catalyst helper, main app, launch
+
+Implements the build pipeline: optional update_packages, the Catalyst
+helper build (Mac Catalyst destination), the main macOS app build
+(generic/platform=macOS), .app discovery, and default launch via open.
+Both xcodebuild invocations pass ARCHS=arm64e ONLY_ACTIVE_ARCH=NO so the
+binary is forced to a pure arm64e slice. --no-launch and --dry-run are
+honored.
+EOF
+)"
+```
+
+---
+
+## Task 4: 端到端真实编译与 arm64e 验证(manual,不产生 commit)
+
+**Files:** 无需修改(仅验证 Task 1–3 的产物是否真能跑通)
+
+- [ ] **Step 1: 真实编译,不启动**
+
+```bash
+./RunScript.sh --no-launch
+```
+
+预期:
+
+- 终端打印 `Building Catalyst helper (arm64e)` → `Building main app (arm64e)` → `Launch skipped`
+- `Products/Logs/01-build-catalyst-helper.log` 与 `Products/Logs/02-build-main.log` 存在
+- 退出码 0
+
+如果失败,先看 `Products/Logs/-*.log` 的尾部错误。最常见的失败:
+
+- `iOSPackagesShouldBuildARM64e` 未生效(确认 Task 1 Step 2 的 plist 写对了)
+- 本地兄弟仓库不存在(确认 `../MachOKit` 等仓库都在)
+
+- [ ] **Step 2: 用 lipo 验证关键二进制的切片**
+
+```bash
+APP_PATH=$(find DerivedData/Debug-arm64e/Build/Products/Debug-arm64e \
+ -maxdepth 1 -type d -name 'RuntimeViewer*.app' \
+ -not -name 'RuntimeViewerCatalystHelper.app' | head -1)
+
+# 主 app(EPA=NO,预期 arm64-only,不含 arm64e)
+lipo -info "$APP_PATH/Contents/MacOS/RuntimeViewer-Debug"
+
+# RuntimeViewerServer.framework(EPA=YES,预期含 arm64e)
+lipo -info "$APP_PATH/Contents/Resources/RuntimeViewerServer.framework/RuntimeViewerServer"
+
+# dev.mxiris.runtimeviewer.service(EPA=YES,预期含 arm64e)
+lipo -info "$APP_PATH/Contents/Library/LaunchServices/dev.mxiris.runtimeviewer.service"
+```
+
+预期输出:
+
+```
+... RuntimeViewer-Debug are: x86_64 arm64
+... RuntimeViewerServer are: x86_64 arm64 arm64e
+... dev.mxiris.runtimeviewer.service are: x86_64 arm64 arm64e
+```
+
+主 app **不应**含 `arm64e`(因为它在 Debug-arm64e 下保持 EPA=NO)。
+后两者**必须**含 `arm64e`,否则说明 Debug-arm64e configuration 在该
+target 上的 `ENABLE_POINTER_AUTHENTICATION=YES` 设置丢失,回到工程
+build settings 检查。
+
+- [ ] **Step 3: 真实启动**
+
+```bash
+./RunScript.sh
+```
+
+预期:编译完成后 `RuntimeViewer.app` 启动。如果系统启动失败,提示用户检查 `csrutil` / `boot-args` 是否启用 arm64e preview ABI(这是 arm64e 调试的已知前置条件,与本任务无关)。
+
+- [ ] **Step 4: 干净状态确认**
+
+```bash
+git status
+```
+
+预期:tracking tree 干净(Task 1 / 2 / 3 的产物均已 commit);可能有未 track 的 `DerivedData/` 与 `Products/Logs/`,这两者都已经在 `.gitignore`(验证:`git check-ignore DerivedData/Debug-arm64e Products/Logs` 应输出两条匹配)。
+
+如果 `git check-ignore` 没有匹配 `Products/Logs`(说明仓库的 `.gitignore` 不覆盖该路径,因为 ArchiveScript.sh 也写到这个路径,所以理论上应该已经忽略了——若没有,提示用户在后续单独 PR 处理 `.gitignore`,本计划不引入该改动)。
+
+---
+
+## Self-Review
+
+**Spec coverage:**
+- ✅ 新 workspace 复制本地依赖 + arm64e flag → Task 1
+- ✅ RunScript.sh 默认参数(workspace / scheme / configuration / DERIVED / LAUNCH 等)→ Task 2 Step 1
+- ✅ fail/log/pretty/run/run_piped 工具函数 → Task 2 Step 2
+- ✅ 命令行选项 `--update-packages` / `--no-launch` / `--dry-run` / `--help` 等 → Task 2 Step 3
+- ✅ Catalyst helper 不可跳过 → Task 3 Step 2(无 `--skip-catalyst-helper` 开关)
+- ✅ 主 app build → Task 3 Step 3
+- ✅ 编译完默认 `open .app` → Task 3 Step 4
+- ✅ arm64e 切片只落到目标 target(RuntimeViewerServer.framework、dev.mxiris.runtimeviewer.service)→ 由 `Debug-arm64e` configuration 的 `ENABLE_POINTER_AUTHENTICATION=YES` 提供(前置 Setup,已 commit),脚本不传任何 ARCHS override
+- ✅ Workspace 层 arm64e(`iOSPackagesShouldBuildARM64e=true`)→ Task 1 Step 2
+- ✅ DerivedData 独立路径 → Task 2 Step 1
+- ✅ lipo 验证 arm64e → Task 4 Step 2
+- ✅ 不引入 archive / export / notarize / appcast / upload / commit-push → 三个 Task 中均无相关代码
+
+**Placeholder scan:** 全部代码块均为完整可粘贴内容;无 TBD/TODO;测试 / 验证步骤都给了实际命令与期望输出。
+
+**Type / 命名一致性:** 变量名 `WORKSPACE` / `SCHEME` / `CATALYST_SCHEME` / `CONFIGURATION` / `BUILD_NUMBER` / `DERIVED_DATA` / `UPDATE_PACKAGES` / `LAUNCH` / `DRY_RUN` / `LOG_DIR` / `XCODEBUILD_LOG_INDEX` / `XCODEBUILD_LOG_NAME` 在 Task 2 / Task 3 之间引用一致;函数名 `fail` / `log` / `pretty` / `run` / `run_piped` / `update_packages` 一致。
+
+**Commit 边界:** workspace、Debug-arm64e configuration、脚本骨架、编译流程各自独立 commit,可单独 revert,互不依赖对方未 commit 的代码。
+
+无需修改,进入 handoff。
diff --git a/RunScript.sh b/RunScript.sh
new file mode 100755
index 00000000..2058d667
--- /dev/null
+++ b/RunScript.sh
@@ -0,0 +1,172 @@
+#!/usr/bin/env bash
+# RunScript.sh — Build and launch RuntimeViewer with the Debug-arm64e
+# configuration via xcodebuild. The Debug-arm64e configuration adds an
+# arm64e slice only to the targets that need to inspect arm64e processes
+# (RuntimeViewerServer.framework, dev.mxiris.runtimeviewer.service); the
+# main app stays arm64-only just like Debug. The Xcode GUI fails to
+# compile under iOSPackagesShouldBuildARM64e=true, so xcodebuild from the
+# command line is the only working path.
+#
+# Usage:
+# ./RunScript.sh # build + launch
+# ./RunScript.sh --no-launch # build only
+# ./RunScript.sh --update-packages # refresh SPM pins first
+# ./RunScript.sh --dry-run # print commands without running
+# ./RunScript.sh --help
+#
+# All distribution-related flags (notarize, appcast, GitHub upload, commit)
+# are intentionally absent — see ArchiveScript.sh for those.
+set -euo pipefail
+
+PROJECT_DIR="$(cd "$(dirname "$0")" && pwd)"
+cd "$PROJECT_DIR"
+
+# Defaults
+WORKSPACE="RuntimeViewer-Debug.xcworkspace"
+SCHEME="RuntimeViewer macOS"
+CATALYST_SCHEME="RuntimeViewerCatalystHelper"
+CONFIGURATION="Debug-arm64e"
+BUILD_NUMBER="$(date +"%Y%m%d.%H.%M")"
+DERIVED_DATA="$PROJECT_DIR/DerivedData/Debug-arm64e"
+
+UPDATE_PACKAGES=false
+LAUNCH=true
+DRY_RUN=false
+
+fail() { echo "error: $*" >&2; exit 1; }
+log() { echo "[RunScript] $*"; }
+
+# Pipe xcodebuild output through xcbeautify when it is installed; otherwise
+# fall back to cat so that runs do not depend on the tool.
+pretty() {
+ if command -v xcbeautify >/dev/null 2>&1; then
+ xcbeautify
+ else
+ cat
+ fi
+}
+
+run() {
+ if $DRY_RUN; then
+ printf '+ '; printf '%q ' "$@"; echo
+ else
+ "$@"
+ fi
+}
+
+# Run a command with its stdout+stderr piped through pretty(). The raw
+# output is also tee'd to $LOG_DIR so devs can recover the full xcodebuild
+# log when xcbeautify drops error lines. `set -o pipefail` ensures a
+# failure in the leading command still propagates.
+run_piped() {
+ if $DRY_RUN; then
+ printf '+ '; printf '%q ' "$@"; printf '| tee | pretty\n'
+ return 0
+ fi
+ mkdir -p "$LOG_DIR"
+ XCODEBUILD_LOG_INDEX=$((XCODEBUILD_LOG_INDEX + 1))
+ local slug="${XCODEBUILD_LOG_NAME:-step}"
+ local log_path
+ log_path="$LOG_DIR/$(printf '%02d' "$XCODEBUILD_LOG_INDEX")-${slug}.log"
+ log "Raw xcodebuild log: $log_path"
+ "$@" 2>&1 | tee "$log_path" | pretty
+}
+
+while [[ $# -gt 0 ]]; do
+ case "$1" in
+ --workspace) WORKSPACE="$2"; shift 2;;
+ --scheme) SCHEME="$2"; shift 2;;
+ --catalyst-helper-scheme) CATALYST_SCHEME="$2"; shift 2;;
+ --configuration) CONFIGURATION="$2"; shift 2;;
+ --build-number) BUILD_NUMBER="$2"; shift 2;;
+ --derived-data) DERIVED_DATA="$2"; shift 2;;
+ --update-packages) UPDATE_PACKAGES=true; shift;;
+ --no-launch) LAUNCH=false; shift;;
+ --dry-run) DRY_RUN=true; shift;;
+ -h|--help) sed -n '2,18p' "$0" | sed 's/^# *//'; exit 0;;
+ *) fail "unknown argument: $1";;
+ esac
+done
+
+[[ -d "$WORKSPACE" ]] || fail "workspace not found: $WORKSPACE"
+
+log "workspace=$WORKSPACE scheme=$SCHEME configuration=$CONFIGURATION build=$BUILD_NUMBER"
+log "derived_data=$DERIVED_DATA update_packages=$UPDATE_PACKAGES launch=$LAUNCH"
+
+LOG_DIR="${LOG_DIR:-$PROJECT_DIR/Products/Logs}"
+XCODEBUILD_LOG_INDEX=0
+
+mkdir -p "$LOG_DIR"
+log "xcodebuild logs: $LOG_DIR"
+
+update_packages() {
+ log "Updating Swift package dependencies"
+ run swift package update --package-path "$PROJECT_DIR/RuntimeViewerCore"
+ run swift package update --package-path "$PROJECT_DIR/RuntimeViewerPackages"
+
+ local workspace_path="$WORKSPACE"
+ if [[ "$workspace_path" != /* ]]; then
+ workspace_path="$PROJECT_DIR/$workspace_path"
+ fi
+
+ local workspace_package_resolved="$workspace_path/xcshareddata/swiftpm/Package.resolved"
+ log "Refreshing workspace package pins"
+ run rm -f "$workspace_package_resolved"
+
+ XCODEBUILD_LOG_NAME="resolve-catalyst-helper-packages" run_piped xcodebuild -resolvePackageDependencies \
+ -workspace "$WORKSPACE" \
+ -scheme "$CATALYST_SCHEME" \
+ -skipPackagePluginValidation -skipMacroValidation
+
+ XCODEBUILD_LOG_NAME="resolve-main-packages" run_piped xcodebuild -resolvePackageDependencies \
+ -workspace "$WORKSPACE" \
+ -scheme "$SCHEME" \
+ -skipPackagePluginValidation -skipMacroValidation
+}
+
+if $UPDATE_PACKAGES; then
+ update_packages
+fi
+
+log "Building Catalyst helper"
+XCODEBUILD_LOG_NAME="build-catalyst-helper" run_piped xcodebuild build \
+ -workspace "$WORKSPACE" \
+ -scheme "$CATALYST_SCHEME" \
+ -configuration "$CONFIGURATION" \
+ -destination 'generic/platform=macOS,variant=Mac Catalyst' \
+ -derivedDataPath "$DERIVED_DATA" \
+ -skipPackagePluginValidation -skipMacroValidation \
+ "CURRENT_PROJECT_VERSION=$BUILD_NUMBER"
+
+log "Building main app"
+XCODEBUILD_LOG_NAME="build-main" run_piped xcodebuild build \
+ -workspace "$WORKSPACE" \
+ -scheme "$SCHEME" \
+ -configuration "$CONFIGURATION" \
+ -destination 'generic/platform=macOS' \
+ -derivedDataPath "$DERIVED_DATA" \
+ -skipPackagePluginValidation -skipMacroValidation \
+ "CURRENT_PROJECT_VERSION=$BUILD_NUMBER"
+
+PRODUCTS_DIR="$DERIVED_DATA/Build/Products/$CONFIGURATION"
+APP_PATH=""
+if [[ -d "$PRODUCTS_DIR" ]]; then
+ APP_PATH=$(find "$PRODUCTS_DIR" -maxdepth 1 -type d -name 'RuntimeViewer*.app' \
+ -not -name 'RuntimeViewerCatalystHelper.app' | head -1)
+fi
+if $DRY_RUN; then
+ APP_PATH="${APP_PATH:-}"
+else
+ [[ -n "$APP_PATH" && -d "$APP_PATH" ]] || fail "expected built *.app under $PRODUCTS_DIR"
+fi
+
+if $LAUNCH; then
+ log "Launching $APP_PATH"
+ run open "$APP_PATH"
+else
+ log "Launch skipped (--no-launch)"
+fi
+
+log "Done. Outputs:"
+log " app: $APP_PATH"
+log " derived_data: $DERIVED_DATA"
diff --git a/RuntimeViewer-Debug.xcworkspace/contents.xcworkspacedata b/RuntimeViewer-Debug.xcworkspace/contents.xcworkspacedata
new file mode 100644
index 00000000..9ac23d7e
--- /dev/null
+++ b/RuntimeViewer-Debug.xcworkspace/contents.xcworkspacedata
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/RuntimeViewer-Debug.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/RuntimeViewer-Debug.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
new file mode 100644
index 00000000..228eedc2
--- /dev/null
+++ b/RuntimeViewer-Debug.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
@@ -0,0 +1,10 @@
+
+
+
+
+ IDEWorkspaceSharedSettings_AutocreateContextsIfNeeded
+
+ iOSPackagesShouldBuildARM64e
+
+
+
diff --git a/RuntimeViewer-Debug.xcworkspace/xcshareddata/swiftpm/Package.resolved b/RuntimeViewer-Debug.xcworkspace/xcshareddata/swiftpm/Package.resolved
new file mode 100644
index 00000000..78f632df
--- /dev/null
+++ b/RuntimeViewer-Debug.xcworkspace/xcshareddata/swiftpm/Package.resolved
@@ -0,0 +1,707 @@
+{
+ "pins" : [
+ {
+ "identity" : "associatedobject",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/p-x9/AssociatedObject",
+ "state" : {
+ "revision" : "f358e1ccf6761b9d1d53136022a65c601cdc4da3",
+ "version" : "0.15.0"
+ }
+ },
+ {
+ "identity" : "asynchrone",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/MxIris-Library-Forks/Asynchrone",
+ "state" : {
+ "revision" : "b2e5d13c9741de58a62dbc40aefa9653c33c83ce",
+ "version" : "0.23.0-fork.1"
+ }
+ },
+ {
+ "identity" : "binarycodable",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/christophhagen/BinaryCodable",
+ "state" : {
+ "revision" : "c2ef4834bf038a998c36301d910a8525de5e12b1",
+ "version" : "3.2.0"
+ }
+ },
+ {
+ "identity" : "cocoacoordinator",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/Mx-Iris/CocoaCoordinator",
+ "state" : {
+ "revision" : "8756b37cfc91918a6d92ba92125dd6f45e5a8aae",
+ "version" : "0.4.1"
+ }
+ },
+ {
+ "identity" : "combine-schedulers",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/pointfreeco/combine-schedulers",
+ "state" : {
+ "revision" : "dcccb979a2183b8df3334237e3dc1ae2b4116a86",
+ "version" : "1.2.0"
+ }
+ },
+ {
+ "identity" : "differencekit",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/ra1028/DifferenceKit",
+ "state" : {
+ "revision" : "073b9671ce2b9b5b96398611427a1f929927e428",
+ "version" : "1.3.0"
+ }
+ },
+ {
+ "identity" : "dsfappearancemanager",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/dagronf/DSFAppearanceManager",
+ "state" : {
+ "revision" : "e9add5fdf05fe50950d105c77963b7373ddb5ad4",
+ "version" : "3.5.1"
+ }
+ },
+ {
+ "identity" : "dsfquickactionbar",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/MxIris-macOS-Library-Forks/DSFQuickActionBar",
+ "state" : {
+ "revision" : "ae07ffcd50bedd418b46d096f4785f7c3bc96e3e",
+ "version" : "6.2.102"
+ }
+ },
+ {
+ "identity" : "enumkit",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/gringoireDM/EnumKit.git",
+ "state" : {
+ "revision" : "ae639dfac5c7116abb64c5f62124915f627140e4",
+ "version" : "1.1.3"
+ }
+ },
+ {
+ "identity" : "filter-ui",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/MxIris-macOS-Library-Forks/filter-ui",
+ "state" : {
+ "revision" : "0d7d6d0fe5e478d7a70f6b1b014998b96e2b171e",
+ "version" : "0.1.2"
+ }
+ },
+ {
+ "identity" : "frameworktoolbox",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/Mx-Iris/FrameworkToolbox",
+ "state" : {
+ "revision" : "22f92afb2520417e60a464a6a5abb88621c2b43d",
+ "version" : "0.5.3"
+ }
+ },
+ {
+ "identity" : "fuzzy-search",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/MxIris-Library-Forks/fuzzy-search",
+ "state" : {
+ "revision" : "1a88d6807a174ebb90e2a04e2071944e006847ef",
+ "version" : "0.1.0"
+ }
+ },
+ {
+ "identity" : "ide-icons",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/MxIris-Library-Forks/ide-icons",
+ "state" : {
+ "revision" : "d262688aecaf1cdab961b2a504566ae5f71c29d1",
+ "version" : "0.1.3"
+ }
+ },
+ {
+ "identity" : "ifrit",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/ukushu/Ifrit",
+ "state" : {
+ "revision" : "9b9556e14cee24ad16b19d0eb099283cf79a7d94",
+ "version" : "3.0.0"
+ }
+ },
+ {
+ "identity" : "keyboardshortcuts",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/sindresorhus/KeyboardShortcuts",
+ "state" : {
+ "revision" : "1aef85578fdd4f9eaeeb8d53b7b4fc31bf08fe27",
+ "version" : "2.4.0"
+ }
+ },
+ {
+ "identity" : "kingfisher",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/onevcat/Kingfisher",
+ "state" : {
+ "revision" : "cf8be20d07654570554c8a8a4952bc8a5766a8b0",
+ "version" : "8.9.0"
+ }
+ },
+ {
+ "identity" : "lateresponders",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/MxIris-Library-Forks/LateResponders",
+ "state" : {
+ "revision" : "0ac1dcad81858b6e532f5a0d8590fb9fb71a1024",
+ "version" : "1.1.0"
+ }
+ },
+ {
+ "identity" : "launchservicesprivate",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/MxIris-Reverse-Engineering/LaunchServicesPrivate",
+ "state" : {
+ "revision" : "ee6dbcf2f13176c005337b37ba88431d40458a2b",
+ "version" : "0.1.0"
+ }
+ },
+ {
+ "identity" : "machinjector",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/MxIris-Reverse-Engineering/MachInjector",
+ "state" : {
+ "revision" : "9badd94674dbcb9291458421e25a70971733a08f",
+ "version" : "0.2.0"
+ }
+ },
+ {
+ "identity" : "metacodable",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/SwiftyLab/MetaCodable",
+ "state" : {
+ "revision" : "c2a6cc907e2f95463ba8f2b55432bd2aee8a4bfd",
+ "version" : "1.6.0"
+ }
+ },
+ {
+ "identity" : "nsattributedstringbuilder",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/MxIris-Library-Forks/NSAttributedStringBuilder",
+ "state" : {
+ "revision" : "d0d35f858a556b7f7f6ad2da7d7a8b469a72fb5c",
+ "version" : "0.4.2"
+ }
+ },
+ {
+ "identity" : "objectarchivekit",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/p-x9/ObjectArchiveKit.git",
+ "state" : {
+ "revision" : "96d782a576273b73b277b577943a2a25b00b919e",
+ "version" : "0.5.0"
+ }
+ },
+ {
+ "identity" : "openuxkit",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/OpenUXKit/OpenUXKit",
+ "state" : {
+ "branch" : "main",
+ "revision" : "a8d89523afd0aa9e06e81ee9b7748eb288ff2630"
+ }
+ },
+ {
+ "identity" : "rainbow",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/onevcat/Rainbow",
+ "state" : {
+ "revision" : "cdf146ae671b2624917648b61c908d1244b98ca1",
+ "version" : "4.2.1"
+ }
+ },
+ {
+ "identity" : "rearrange",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/ChimeHQ/Rearrange.git",
+ "state" : {
+ "revision" : "4de8be41dba304192e87dc0a11e0aa39e72aa2e8",
+ "version" : "2.1.1"
+ }
+ },
+ {
+ "identity" : "runningapplicationkit",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/Mx-Iris/RunningApplicationKit",
+ "state" : {
+ "revision" : "5ff991e2b32445cebce2514fbc428594dfa092cd",
+ "version" : "0.3.2"
+ }
+ },
+ {
+ "identity" : "rxappkit",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/Mx-Iris/RxAppKit",
+ "state" : {
+ "revision" : "e4ea5c272acdc4f1c220bcc0a44d79cebf1ed98b",
+ "version" : "0.3.1"
+ }
+ },
+ {
+ "identity" : "rxcombine",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/CombineCommunity/RxCombine",
+ "state" : {
+ "revision" : "19474c2ac9fde613bba8513bf98990e1aa9831cd",
+ "version" : "2.0.1"
+ }
+ },
+ {
+ "identity" : "rxconcurrency",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/TrGiLong/RxConcurrency",
+ "state" : {
+ "revision" : "dadb16c54bd42ca83c08f3d80f61fbfca93a585c",
+ "version" : "0.1.1"
+ }
+ },
+ {
+ "identity" : "rxenumkit",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/gringoireDM/RxEnumKit",
+ "state" : {
+ "revision" : "a7572f7bcc69e458f74730098be97279a1b8c80f",
+ "version" : "2.0.0"
+ }
+ },
+ {
+ "identity" : "rxswift",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/ReactiveX/RxSwift",
+ "state" : {
+ "revision" : "132aea4f236ccadc51590b38af0357a331d51fa2",
+ "version" : "6.10.2"
+ }
+ },
+ {
+ "identity" : "rxswiftplus",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/Mx-Iris/RxSwiftPlus",
+ "state" : {
+ "revision" : "d40a7d551b58ce3006eaabcaa3721b99db72ea78",
+ "version" : "0.2.3"
+ }
+ },
+ {
+ "identity" : "rxuikit",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/Mx-Iris/RxUIKit",
+ "state" : {
+ "revision" : "f4397315d83edf4f9390dbe96e212c892577c7eb",
+ "version" : "0.1.1"
+ }
+ },
+ {
+ "identity" : "semaphore",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/MxIris-Library-Forks/Semaphore",
+ "state" : {
+ "revision" : "2543679282aa6f6c8ecf2138acd613ed20790bc2",
+ "version" : "0.1.0"
+ }
+ },
+ {
+ "identity" : "sfsymbols",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/Mx-Iris/SFSymbols",
+ "state" : {
+ "revision" : "98c7f4a22419d8034a058a8bfaec7cba4e53dcca",
+ "version" : "0.2.0"
+ }
+ },
+ {
+ "identity" : "snapkit",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/SnapKit/SnapKit",
+ "state" : {
+ "revision" : "2842e6e84e82eb9a8dac0100ca90d9444b0307f4",
+ "version" : "5.7.1"
+ }
+ },
+ {
+ "identity" : "sourcekitd",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/Mx-Iris/SourceKitD",
+ "state" : {
+ "revision" : "47ddc958a3962f9bb0fe08de1c8f39723e472228",
+ "version" : "0.1.0"
+ }
+ },
+ {
+ "identity" : "sparkle",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/sparkle-project/Sparkle",
+ "state" : {
+ "revision" : "066e75a8b3e99962685d6a90cdd5293ebffd9261",
+ "version" : "2.9.1"
+ }
+ },
+ {
+ "identity" : "swift-apinotes",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/MxIris-DeveloperTool/swift-apinotes",
+ "state" : {
+ "revision" : "2fe208c1824f053c04778c5dad2a6fe93d8ab3bf",
+ "version" : "0.1.0"
+ }
+ },
+ {
+ "identity" : "swift-argument-parser",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/apple/swift-argument-parser",
+ "state" : {
+ "revision" : "626b5b7b2f45e1b0b1c6f4a309296d1d21d7311b",
+ "version" : "1.7.1"
+ }
+ },
+ {
+ "identity" : "swift-asn1",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/apple/swift-asn1.git",
+ "state" : {
+ "revision" : "eb50cbd14606a9161cbc5d452f18797c90ef0bab",
+ "version" : "1.7.0"
+ }
+ },
+ {
+ "identity" : "swift-async-algorithms",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/apple/swift-async-algorithms",
+ "state" : {
+ "revision" : "9d349bcc328ac3c31ce40e746b5882742a0d1272",
+ "version" : "1.1.3"
+ }
+ },
+ {
+ "identity" : "swift-atomics",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/apple/swift-atomics.git",
+ "state" : {
+ "revision" : "b601256eab081c0f92f059e12818ac1d4f178ff7",
+ "version" : "1.3.0"
+ }
+ },
+ {
+ "identity" : "swift-binary-parse-support",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/p-x9/swift-binary-parse-support.git",
+ "state" : {
+ "revision" : "5fb96b503672ea4752eded6b4e301fd87214b03b",
+ "version" : "0.2.1"
+ }
+ },
+ {
+ "identity" : "swift-case-paths",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/pointfreeco/swift-case-paths",
+ "state" : {
+ "revision" : "206cbce3882b4de9aee19ce62ac5b7306cadd45b",
+ "version" : "1.7.3"
+ }
+ },
+ {
+ "identity" : "swift-certificates",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/apple/swift-certificates.git",
+ "state" : {
+ "revision" : "bde8ca32a096825dfce37467137c903418c1893d",
+ "version" : "1.19.1"
+ }
+ },
+ {
+ "identity" : "swift-clang",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/MxIris-DeveloperTool/swift-clang",
+ "state" : {
+ "revision" : "f92a834ed33249612d9ef30a41d8254d32a7602a",
+ "version" : "0.2.0"
+ }
+ },
+ {
+ "identity" : "swift-clocks",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/pointfreeco/swift-clocks",
+ "state" : {
+ "revision" : "cc46202b53476d64e824e0b6612da09d84ffde8e",
+ "version" : "1.0.6"
+ }
+ },
+ {
+ "identity" : "swift-collections",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/apple/swift-collections",
+ "state" : {
+ "revision" : "6675bc0ff86e61436e615df6fc5174e043e57924",
+ "version" : "1.4.1"
+ }
+ },
+ {
+ "identity" : "swift-concurrency-extras",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/pointfreeco/swift-concurrency-extras",
+ "state" : {
+ "revision" : "5a3825302b1a0d744183200915a47b508c828e6f",
+ "version" : "1.3.2"
+ }
+ },
+ {
+ "identity" : "swift-confidential",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/MxIris-Library-Forks/swift-confidential.git",
+ "state" : {
+ "revision" : "0e3e84cc18ffb4b39c4e51d9deacc3007e5fc67b",
+ "version" : "0.5.100"
+ }
+ },
+ {
+ "identity" : "swift-crypto",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/apple/swift-crypto.git",
+ "state" : {
+ "revision" : "95ba0316a9b733e92bb6b071255ff46263bbe7dc",
+ "version" : "3.15.1"
+ }
+ },
+ {
+ "identity" : "swift-custom-dump",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/pointfreeco/swift-custom-dump",
+ "state" : {
+ "revision" : "06c57924455064182d6b217f06ebc05d00cb2990",
+ "version" : "1.5.0"
+ }
+ },
+ {
+ "identity" : "swift-dependencies",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/pointfreeco/swift-dependencies",
+ "state" : {
+ "revision" : "706feb7858a7f6c242879d137b8ee30926aa5b26",
+ "version" : "1.12.0"
+ }
+ },
+ {
+ "identity" : "swift-dyld-private",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/MxIris-Reverse-Engineering/swift-dyld-private",
+ "state" : {
+ "revision" : "2f5ce94df9b1356d3c75793a659bf22f35bc8699",
+ "version" : "1.2.0"
+ }
+ },
+ {
+ "identity" : "swift-fileio",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/p-x9/swift-fileio.git",
+ "state" : {
+ "revision" : "d589ff3966f9f064574780f527449a946736b989",
+ "version" : "0.13.0"
+ }
+ },
+ {
+ "identity" : "swift-fileio-extra",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/p-x9/swift-fileio-extra.git",
+ "state" : {
+ "revision" : "8d83506dd4dff737807d90dbf2264096ed98c7a7",
+ "version" : "0.2.2"
+ }
+ },
+ {
+ "identity" : "swift-literal-type-inference",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/p-x9/swift-literal-type-inference.git",
+ "state" : {
+ "revision" : "a67dc0c90511f0b036de8ee51ecba9243d1a5ec0",
+ "version" : "0.6.0"
+ }
+ },
+ {
+ "identity" : "swift-log",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/apple/swift-log.git",
+ "state" : {
+ "revision" : "5073617dac96330a486245e4c0179cb0a6fd2256",
+ "version" : "1.12.0"
+ }
+ },
+ {
+ "identity" : "swift-memberwise-init-macro",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/gohanlon/swift-memberwise-init-macro",
+ "state" : {
+ "revision" : "d0fb82bb6638051524214fb54524bfcd876735a1",
+ "version" : "0.6.0"
+ }
+ },
+ {
+ "identity" : "swift-mobile-gestalt",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/p-x9/swift-mobile-gestalt",
+ "state" : {
+ "revision" : "aa9e0a9dde0be80f395a77888851e4afdd6f4252",
+ "version" : "0.4.0"
+ }
+ },
+ {
+ "identity" : "swift-navigation",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/pointfreeco/swift-navigation",
+ "state" : {
+ "revision" : "32f35241b8be0719c4c7f00eb27713b1cadb6248",
+ "version" : "2.8.0"
+ }
+ },
+ {
+ "identity" : "swift-nio",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/apple/swift-nio.git",
+ "state" : {
+ "revision" : "f71c8d2a5e74a2c6d11a0fbe324774b5d6084237",
+ "version" : "2.99.0"
+ }
+ },
+ {
+ "identity" : "swift-objc-dump",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/MxIris-Reverse-Engineering/swift-objc-dump.git",
+ "state" : {
+ "revision" : "4206040acd64db453c5c28c1539b98fa5befa8fc",
+ "version" : "0.8.100"
+ }
+ },
+ {
+ "identity" : "swift-object-association",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/p-x9/swift-object-association.git",
+ "state" : {
+ "revision" : "93806cfecae1f198c894ed5585b93aff0e2d1f5a",
+ "version" : "0.5.0"
+ }
+ },
+ {
+ "identity" : "swift-perception",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/pointfreeco/swift-perception",
+ "state" : {
+ "revision" : "25ac73741c3436605d61eceb5207e896973918e7",
+ "version" : "2.0.10"
+ }
+ },
+ {
+ "identity" : "swift-snapshot-testing",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/pointfreeco/swift-snapshot-testing",
+ "state" : {
+ "revision" : "ad5e3190cc63dc288f28546f9c6827efc1e9d495",
+ "version" : "1.19.2"
+ }
+ },
+ {
+ "identity" : "swift-system",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/apple/swift-system.git",
+ "state" : {
+ "revision" : "7c6ad0fc39d0763e0b699210e4124afd5041c5df",
+ "version" : "1.6.4"
+ }
+ },
+ {
+ "identity" : "swiftmcp",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/Cocoanetics/SwiftMCP",
+ "state" : {
+ "revision" : "c96b2412b16fca49156d6914b18568dc07fe978e",
+ "version" : "1.4.4"
+ }
+ },
+ {
+ "identity" : "swiftui-introspect",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/siteline/swiftui-introspect",
+ "state" : {
+ "revision" : "26986a57e31c813f98262ddb62d4b07d40008535",
+ "version" : "26.0.1"
+ }
+ },
+ {
+ "identity" : "swiftyxpc",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/MxIris-macOS-Library-Forks/SwiftyXPC",
+ "state" : {
+ "revision" : "d56672e7939ae929e94d4ea66da3fc527a69724e",
+ "version" : "0.5.100"
+ }
+ },
+ {
+ "identity" : "systemhud",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/Mx-Iris/SystemHUD",
+ "state" : {
+ "revision" : "42d259b5d2b3d5cb4ce14281ce86f010034ff36c",
+ "version" : "0.1.0"
+ }
+ },
+ {
+ "identity" : "uifoundation",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/Mx-Iris/UIFoundation",
+ "state" : {
+ "revision" : "d7c490fd668e26ccf82e1776ce77c32e4ca8f3e3",
+ "version" : "0.5.1"
+ }
+ },
+ {
+ "identity" : "uxkitcoordinator",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/OpenUXKit/UXKitCoordinator",
+ "state" : {
+ "branch" : "main",
+ "revision" : "6e103a7628d8c8108a3b5d6dabafb61ee6fffb09"
+ }
+ },
+ {
+ "identity" : "version",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/mxcl/Version",
+ "state" : {
+ "revision" : "3043fcd2a50375db76d89ff206a612471833d1c2",
+ "version" : "2.2.1"
+ }
+ },
+ {
+ "identity" : "xcoordinator",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/MxIris-Library-Forks/XCoordinator",
+ "state" : {
+ "revision" : "1d35f8bf10b9cf0ab49736493d2d8b6c27fc63c0",
+ "version" : "3.0.0-beta.1"
+ }
+ },
+ {
+ "identity" : "xctest-dynamic-overlay",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/pointfreeco/xctest-dynamic-overlay",
+ "state" : {
+ "revision" : "dfd70507def84cb5fb821278448a262c6ff2bbad",
+ "version" : "1.9.0"
+ }
+ },
+ {
+ "identity" : "yams",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/jpsim/Yams",
+ "state" : {
+ "revision" : "deaf82e867fa2cbd3cd865978b079bfcf384ac28",
+ "version" : "6.2.1"
+ }
+ }
+ ],
+ "version" : 2
+}
diff --git a/RuntimeViewerCore/Package.resolved b/RuntimeViewerCore/Package.resolved
index bd17ab26..6ce8246a 100644
--- a/RuntimeViewerCore/Package.resolved
+++ b/RuntimeViewerCore/Package.resolved
@@ -1,5 +1,5 @@
{
- "originHash" : "5ad1b0fb0dd0d521378f9ffe9ff750c89174776b069fe779b0c543437379ee6a",
+ "originHash" : "a3dd8fcc311882d02a960d48c289a156d4e6905b90262ad225bc4c3c8ced6b64",
"pins" : [
{
"identity" : "associatedobject",
@@ -127,6 +127,15 @@
"version" : "0.1.0"
}
},
+ {
+ "identity" : "sparkle",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/sparkle-project/Sparkle",
+ "state" : {
+ "revision" : "066e75a8b3e99962685d6a90cdd5293ebffd9261",
+ "version" : "2.9.1"
+ }
+ },
{
"identity" : "swift-apinotes",
"kind" : "remoteSourceControl",
diff --git a/RuntimeViewerServer/RuntimeViewerServer.xcodeproj/project.pbxproj b/RuntimeViewerServer/RuntimeViewerServer.xcodeproj/project.pbxproj
index b2f08838..6cf02246 100644
--- a/RuntimeViewerServer/RuntimeViewerServer.xcodeproj/project.pbxproj
+++ b/RuntimeViewerServer/RuntimeViewerServer.xcodeproj/project.pbxproj
@@ -312,7 +312,7 @@
MARKETING_VERSION = 1.0;
MODULE_VERIFIER_SUPPORTED_LANGUAGES = "objective-c objective-c++";
MODULE_VERIFIER_SUPPORTED_LANGUAGE_STANDARDS = "gnu17 gnu++20";
- PRODUCT_BUNDLE_IDENTIFIER = com.MxIris.RuntimeViewerServer;
+ PRODUCT_BUNDLE_IDENTIFIER = "$(RUNTIME_VIEWER_SERVER_BUNDLE_IDENTIFIER)";
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
SDKROOT = auto;
SKIP_INSTALL = NO;
@@ -368,7 +368,7 @@
MARKETING_VERSION = 1.0;
MODULE_VERIFIER_SUPPORTED_LANGUAGES = "objective-c objective-c++";
MODULE_VERIFIER_SUPPORTED_LANGUAGE_STANDARDS = "gnu17 gnu++20";
- PRODUCT_BUNDLE_IDENTIFIER = com.MxIris.RuntimeViewerServer;
+ PRODUCT_BUNDLE_IDENTIFIER = "$(RUNTIME_VIEWER_SERVER_BUNDLE_IDENTIFIER)";
PRODUCT_NAME = RuntimeViewerServer;
SDKROOT = auto;
SKIP_INSTALL = NO;
@@ -554,7 +554,7 @@
MARKETING_VERSION = 1.0;
MODULE_VERIFIER_SUPPORTED_LANGUAGES = "objective-c objective-c++";
MODULE_VERIFIER_SUPPORTED_LANGUAGE_STANDARDS = "gnu17 gnu++20";
- PRODUCT_BUNDLE_IDENTIFIER = com.MxIris.RuntimeViewerServer;
+ PRODUCT_BUNDLE_IDENTIFIER = "$(RUNTIME_VIEWER_SERVER_BUNDLE_IDENTIFIER)";
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
SDKROOT = auto;
SKIP_INSTALL = YES;
@@ -611,7 +611,7 @@
MARKETING_VERSION = 1.0;
MODULE_VERIFIER_SUPPORTED_LANGUAGES = "objective-c objective-c++";
MODULE_VERIFIER_SUPPORTED_LANGUAGE_STANDARDS = "gnu17 gnu++20";
- PRODUCT_BUNDLE_IDENTIFIER = com.MxIris.RuntimeViewerServer;
+ PRODUCT_BUNDLE_IDENTIFIER = "$(RUNTIME_VIEWER_SERVER_BUNDLE_IDENTIFIER)";
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
SDKROOT = auto;
SKIP_INSTALL = YES;
@@ -667,7 +667,7 @@
MARKETING_VERSION = 1.0;
MODULE_VERIFIER_SUPPORTED_LANGUAGES = "objective-c objective-c++";
MODULE_VERIFIER_SUPPORTED_LANGUAGE_STANDARDS = "gnu17 gnu++20";
- PRODUCT_BUNDLE_IDENTIFIER = com.MxIris.RuntimeViewerServer;
+ PRODUCT_BUNDLE_IDENTIFIER = "$(RUNTIME_VIEWER_SERVER_BUNDLE_IDENTIFIER)";
PRODUCT_NAME = RuntimeViewerServer;
SDKROOT = auto;
SKIP_INSTALL = NO;
@@ -723,7 +723,7 @@
MARKETING_VERSION = 1.0;
MODULE_VERIFIER_SUPPORTED_LANGUAGES = "objective-c objective-c++";
MODULE_VERIFIER_SUPPORTED_LANGUAGE_STANDARDS = "gnu17 gnu++20";
- PRODUCT_BUNDLE_IDENTIFIER = com.MxIris.RuntimeViewerServer;
+ PRODUCT_BUNDLE_IDENTIFIER = "$(RUNTIME_VIEWER_SERVER_BUNDLE_IDENTIFIER)";
PRODUCT_NAME = RuntimeViewerServer;
SDKROOT = auto;
SKIP_INSTALL = NO;
@@ -746,6 +746,185 @@
};
name = Release;
};
+ E9958CDE2FAB79270073036F /* Debug-arm64e */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = E978F92B2F1C9900004C09B4 /* CodeSigning.xcconfig */;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ COMPILATION_CACHE_ENABLE_CACHING = YES;
+ COPY_PHASE_STRIP = NO;
+ CURRENT_PROJECT_VERSION = 1;
+ DEAD_CODE_STRIPPING = YES;
+ DEBUG_INFORMATION_FORMAT = dwarf;
+ DEVELOPMENT_TEAM = D5Q73692VW;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ ENABLE_TESTABILITY = YES;
+ ENABLE_USER_SCRIPT_SANDBOXING = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu17;
+ GCC_DYNAMIC_NO_PIC = NO;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_OPTIMIZATION_LEVEL = 0;
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ "DEBUG=1",
+ "$(inherited)",
+ );
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ LOCALIZATION_PREFERS_STRING_CATALOGS = YES;
+ MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
+ MTL_FAST_MATH = YES;
+ ONLY_ACTIVE_ARCH = YES;
+ SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG $(inherited)";
+ SWIFT_ENABLE_EXPLICIT_MODULES = YES;
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ VERSIONING_SYSTEM = "apple-generic";
+ VERSION_INFO_PREFIX = "";
+ };
+ name = "Debug-arm64e";
+ };
+ E9958CDF2FAB79270073036F /* Debug-arm64e */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES;
+ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
+ BUILD_LIBRARY_FOR_DISTRIBUTION = YES;
+ CODE_SIGN_IDENTITY = "";
+ CODE_SIGN_STYLE = Automatic;
+ CURRENT_PROJECT_VERSION = 1;
+ DEAD_CODE_STRIPPING = YES;
+ DEVELOPMENT_TEAM = D5Q73692VW;
+ DYLIB_COMPATIBILITY_VERSION = 1;
+ DYLIB_CURRENT_VERSION = 1;
+ DYLIB_INSTALL_NAME_BASE = "@rpath";
+ ENABLE_MODULE_VERIFIER = YES;
+ ENABLE_POINTER_AUTHENTICATION = YES;
+ GENERATE_INFOPLIST_FILE = YES;
+ INFOPLIST_KEY_NSHumanReadableCopyright = "";
+ INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
+ IPHONEOS_DEPLOYMENT_TARGET = 13.0;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "@loader_path/Frameworks",
+ "@executable_path/Frameworks",
+ );
+ "LD_RUNPATH_SEARCH_PATHS[sdk=macosx*]" = (
+ "@loader_path/Frameworks",
+ "@executable_path/../Frameworks",
+ );
+ MACOSX_DEPLOYMENT_TARGET = 12.0;
+ MARKETING_VERSION = 1.0;
+ MODULE_VERIFIER_SUPPORTED_LANGUAGES = "objective-c objective-c++";
+ MODULE_VERIFIER_SUPPORTED_LANGUAGE_STANDARDS = "gnu17 gnu++20";
+ PRODUCT_BUNDLE_IDENTIFIER = "$(RUNTIME_VIEWER_SERVER_BUNDLE_IDENTIFIER)";
+ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
+ SDKROOT = auto;
+ SKIP_INSTALL = YES;
+ STRING_CATALOG_GENERATE_SYMBOLS = YES;
+ SUPPORTED_PLATFORMS = macosx;
+ SUPPORTS_MACCATALYST = NO;
+ SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;
+ SUPPORTS_XR_DESIGNED_FOR_IPHONE_IPAD = NO;
+ SWIFT_APPROACHABLE_CONCURRENCY = YES;
+ SWIFT_EMIT_LOC_STRINGS = YES;
+ SWIFT_INSTALL_MODULE = YES;
+ SWIFT_INSTALL_OBJC_HEADER = NO;
+ SWIFT_UPCOMING_FEATURE_INTERNAL_IMPORTS_BY_DEFAULT = YES;
+ SWIFT_UPCOMING_FEATURE_MEMBER_IMPORT_VISIBILITY = YES;
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = 6;
+ TVOS_DEPLOYMENT_TARGET = 13.0;
+ WATCHOS_DEPLOYMENT_TARGET = 6.0;
+ XROS_DEPLOYMENT_TARGET = 1.0;
+ };
+ name = "Debug-arm64e";
+ };
+ E9958CE02FAB79270073036F /* Debug-arm64e */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES;
+ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
+ BUILD_LIBRARY_FOR_DISTRIBUTION = YES;
+ CODE_SIGN_IDENTITY = "";
+ CODE_SIGN_STYLE = Automatic;
+ CURRENT_PROJECT_VERSION = 1;
+ DEAD_CODE_STRIPPING = YES;
+ DEVELOPMENT_TEAM = D5Q73692VW;
+ DYLIB_COMPATIBILITY_VERSION = 1;
+ DYLIB_CURRENT_VERSION = 1;
+ DYLIB_INSTALL_NAME_BASE = "@rpath";
+ ENABLE_MODULE_VERIFIER = YES;
+ ENABLE_POINTER_AUTHENTICATION = NO;
+ GENERATE_INFOPLIST_FILE = YES;
+ INFOPLIST_KEY_NSHumanReadableCopyright = "";
+ INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
+ IPHONEOS_DEPLOYMENT_TARGET = 15.0;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "@loader_path/Frameworks",
+ "@executable_path/Frameworks",
+ );
+ "LD_RUNPATH_SEARCH_PATHS[sdk=macosx*]" = (
+ "@loader_path/Frameworks",
+ "@executable_path/../Frameworks",
+ );
+ MACOSX_DEPLOYMENT_TARGET = 10.15;
+ MARKETING_VERSION = 1.0;
+ MODULE_VERIFIER_SUPPORTED_LANGUAGES = "objective-c objective-c++";
+ MODULE_VERIFIER_SUPPORTED_LANGUAGE_STANDARDS = "gnu17 gnu++20";
+ PRODUCT_BUNDLE_IDENTIFIER = "$(RUNTIME_VIEWER_SERVER_BUNDLE_IDENTIFIER)";
+ PRODUCT_NAME = RuntimeViewerServer;
+ SDKROOT = auto;
+ SKIP_INSTALL = NO;
+ STRING_CATALOG_GENERATE_SYMBOLS = YES;
+ SUPPORTED_PLATFORMS = "appletvos appletvsimulator iphoneos iphonesimulator watchos watchsimulator xros xrsimulator";
+ SUPPORTS_MACCATALYST = YES;
+ SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = YES;
+ SUPPORTS_XR_DESIGNED_FOR_IPHONE_IPAD = YES;
+ SWIFT_APPROACHABLE_CONCURRENCY = YES;
+ SWIFT_EMIT_LOC_STRINGS = YES;
+ SWIFT_INSTALL_MODULE = YES;
+ SWIFT_INSTALL_OBJC_HEADER = NO;
+ SWIFT_UPCOMING_FEATURE_INTERNAL_IMPORTS_BY_DEFAULT = YES;
+ SWIFT_UPCOMING_FEATURE_MEMBER_IMPORT_VISIBILITY = YES;
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2,3,4,6,7";
+ TVOS_DEPLOYMENT_TARGET = 15.0;
+ WATCHOS_DEPLOYMENT_TARGET = 8.0;
+ XROS_DEPLOYMENT_TARGET = 1.0;
+ };
+ name = "Debug-arm64e";
+ };
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
@@ -753,6 +932,7 @@
isa = XCConfigurationList;
buildConfigurations = (
E978F91E2F1BBB38004C09B4 /* Debug */,
+ E9958CDE2FAB79270073036F /* Debug-arm64e */,
E978F91F2F1BBB38004C09B4 /* Release */,
E9321B2A2F34A40A00665281 /* Distribution */,
);
@@ -763,6 +943,7 @@
isa = XCConfigurationList;
buildConfigurations = (
E978F9212F1BBB38004C09B4 /* Debug */,
+ E9958CDF2FAB79270073036F /* Debug-arm64e */,
E978F9222F1BBB38004C09B4 /* Release */,
E9321B2B2F34A40A00665281 /* Distribution */,
);
@@ -773,6 +954,7 @@
isa = XCConfigurationList;
buildConfigurations = (
E994E2942F323A51009DD28A /* Debug */,
+ E9958CE02FAB79270073036F /* Debug-arm64e */,
E994E2952F323A51009DD28A /* Release */,
E9321B2C2F34A40A00665281 /* Distribution */,
);
diff --git a/RuntimeViewerServer/RuntimeViewerServer.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/RuntimeViewerServer/RuntimeViewerServer.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved
index 2734bbd4..6a2691c7 100644
--- a/RuntimeViewerServer/RuntimeViewerServer.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved
+++ b/RuntimeViewerServer/RuntimeViewerServer.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved
@@ -1,5 +1,5 @@
{
- "originHash" : "4c3e0906e927f33f5bd77523accb02234763b24266c29fc48b6121f20c7f1384",
+ "originHash" : "e4f1df62199655c17e3bf907570c9fbcd6911d7e528fabba81e47335e19ad3f9",
"pins" : [
{
"identity" : "associatedobject",
@@ -38,30 +38,48 @@
}
},
{
- "identity" : "dyldprivate",
+ "identity" : "frameworktoolbox",
"kind" : "remoteSourceControl",
- "location" : "https://github.com/MxIris-Reverse-Engineering/DyldPrivate",
+ "location" : "https://github.com/Mx-Iris/FrameworkToolbox.git",
"state" : {
- "branch" : "main",
- "revision" : "3b4d596b702d7c8f589d0babe42c7387e5d24dbc"
+ "revision" : "22f92afb2520417e60a464a6a5abb88621c2b43d",
+ "version" : "0.5.3"
}
},
{
- "identity" : "frameworktoolbox",
+ "identity" : "launchservicesprivate",
"kind" : "remoteSourceControl",
- "location" : "https://github.com/Mx-Iris/FrameworkToolbox.git",
+ "location" : "https://github.com/MxIris-Reverse-Engineering/LaunchServicesPrivate",
"state" : {
- "branch" : "main",
- "revision" : "b0f1043d407fa10b8af42e0dc9c11ff2363b3632"
+ "revision" : "ee6dbcf2f13176c005337b37ba88431d40458a2b",
+ "version" : "0.1.0"
}
},
{
- "identity" : "launchservicesprivate",
+ "identity" : "machokit",
"kind" : "remoteSourceControl",
- "location" : "https://github.com/MxIris-Reverse-Engineering/LaunchServicesPrivate",
+ "location" : "https://github.com/MxIris-Reverse-Engineering/MachOKit.git",
"state" : {
- "branch" : "main",
- "revision" : "ee6dbcf2f13176c005337b37ba88431d40458a2b"
+ "revision" : "d6d8fc4fe355c31a25eeda4b87d9e8a959d6784a",
+ "version" : "0.49.102"
+ }
+ },
+ {
+ "identity" : "machoobjcsection",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/MxIris-Reverse-Engineering/MachOObjCSection.git",
+ "state" : {
+ "revision" : "38661a32c597281ece378fd8edde3dc6bdb39a7a",
+ "version" : "0.7.100"
+ }
+ },
+ {
+ "identity" : "machoswiftsection",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/MxIris-Reverse-Engineering/MachOSwiftSection",
+ "state" : {
+ "revision" : "8ef8bdc2e9391f1291fa9d94ed67f12253b1ae49",
+ "version" : "0.11.0"
}
},
{
@@ -73,6 +91,15 @@
"version" : "1.6.0"
}
},
+ {
+ "identity" : "objectarchivekit",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/p-x9/ObjectArchiveKit.git",
+ "state" : {
+ "revision" : "96d782a576273b73b277b577943a2a25b00b919e",
+ "version" : "0.5.0"
+ }
+ },
{
"identity" : "rainbow",
"kind" : "remoteSourceControl",
@@ -87,8 +114,8 @@
"kind" : "remoteSourceControl",
"location" : "https://github.com/MxIris-Library-Forks/Semaphore",
"state" : {
- "branch" : "main",
- "revision" : "e6a244dec033ed1033878d5da5911a3ba2489701"
+ "revision" : "2543679282aa6f6c8ecf2138acd613ed20790bc2",
+ "version" : "0.1.0"
}
},
{
@@ -96,17 +123,17 @@
"kind" : "remoteSourceControl",
"location" : "https://github.com/Mx-Iris/SourceKitD",
"state" : {
- "branch" : "main",
- "revision" : "47ddc958a3962f9bb0fe08de1c8f39723e472228"
+ "revision" : "47ddc958a3962f9bb0fe08de1c8f39723e472228",
+ "version" : "0.1.0"
}
},
{
"identity" : "swift-apinotes",
"kind" : "remoteSourceControl",
- "location" : "https://github.com/MxIris-DeveloperTool-Forks/swift-apinotes",
+ "location" : "https://github.com/MxIris-DeveloperTool/swift-apinotes",
"state" : {
- "branch" : "main",
- "revision" : "2fe208c1824f053c04778c5dad2a6fe93d8ab3bf"
+ "revision" : "2fe208c1824f053c04778c5dad2a6fe93d8ab3bf",
+ "version" : "0.1.0"
}
},
{
@@ -118,6 +145,15 @@
"version" : "1.7.0"
}
},
+ {
+ "identity" : "swift-asn1",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/apple/swift-asn1.git",
+ "state" : {
+ "revision" : "eb50cbd14606a9161cbc5d452f18797c90ef0bab",
+ "version" : "1.7.0"
+ }
+ },
{
"identity" : "swift-async-algorithms",
"kind" : "remoteSourceControl",
@@ -127,13 +163,22 @@
"version" : "1.1.1"
}
},
+ {
+ "identity" : "swift-binary-parse-support",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/p-x9/swift-binary-parse-support.git",
+ "state" : {
+ "revision" : "5fb96b503672ea4752eded6b4e301fd87214b03b",
+ "version" : "0.2.1"
+ }
+ },
{
"identity" : "swift-clang",
"kind" : "remoteSourceControl",
- "location" : "https://github.com/MxIris-DeveloperTool-Forks/swift-clang",
+ "location" : "https://github.com/MxIris-DeveloperTool/swift-clang",
"state" : {
- "revision" : "3944b95e4458e1a1e52efcdd5ea1518fcb90a9a6",
- "version" : "0.1.0"
+ "revision" : "f92a834ed33249612d9ef30a41d8254d32a7602a",
+ "version" : "0.2.0"
}
},
{
@@ -163,6 +208,33 @@
"version" : "1.3.2"
}
},
+ {
+ "identity" : "swift-confidential",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/MxIris-Library-Forks/swift-confidential.git",
+ "state" : {
+ "revision" : "0e3e84cc18ffb4b39c4e51d9deacc3007e5fc67b",
+ "version" : "0.5.100"
+ }
+ },
+ {
+ "identity" : "swift-crypto",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/apple/swift-crypto.git",
+ "state" : {
+ "revision" : "95ba0316a9b733e92bb6b071255ff46263bbe7dc",
+ "version" : "3.15.1"
+ }
+ },
+ {
+ "identity" : "swift-demangling",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/MxIris-Reverse-Engineering/swift-demangling",
+ "state" : {
+ "revision" : "b1c84b6b76e41d83d4a8b3d107ce19fd7fe2d135",
+ "version" : "0.3.0"
+ }
+ },
{
"identity" : "swift-dependencies",
"kind" : "remoteSourceControl",
@@ -172,6 +244,15 @@
"version" : "1.10.1"
}
},
+ {
+ "identity" : "swift-dyld-private",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/MxIris-Reverse-Engineering/swift-dyld-private",
+ "state" : {
+ "revision" : "2f5ce94df9b1356d3c75793a659bf22f35bc8699",
+ "version" : "1.2.0"
+ }
+ },
{
"identity" : "swift-fileio",
"kind" : "remoteSourceControl",
@@ -182,21 +263,21 @@
}
},
{
- "identity" : "swift-literal-type-inference",
+ "identity" : "swift-fileio-extra",
"kind" : "remoteSourceControl",
- "location" : "https://github.com/p-x9/swift-literal-type-inference.git",
+ "location" : "https://github.com/p-x9/swift-fileio-extra.git",
"state" : {
- "revision" : "898d4a8c5920a3a47d70a43e76d708697e14cd72",
- "version" : "0.5.0"
+ "revision" : "8d83506dd4dff737807d90dbf2264096ed98c7a7",
+ "version" : "0.2.2"
}
},
{
- "identity" : "swift-log",
+ "identity" : "swift-literal-type-inference",
"kind" : "remoteSourceControl",
- "location" : "https://github.com/apple/swift-log.git",
+ "location" : "https://github.com/p-x9/swift-literal-type-inference.git",
"state" : {
- "revision" : "2778fd4e5a12a8aaa30a3ee8285f4ce54c5f3181",
- "version" : "1.9.1"
+ "revision" : "898d4a8c5920a3a47d70a43e76d708697e14cd72",
+ "version" : "0.5.0"
}
},
{
@@ -208,6 +289,24 @@
"version" : "0.5.3-fork.1"
}
},
+ {
+ "identity" : "swift-mobile-gestalt",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/p-x9/swift-mobile-gestalt",
+ "state" : {
+ "revision" : "aa9e0a9dde0be80f395a77888851e4afdd6f4252",
+ "version" : "0.4.0"
+ }
+ },
+ {
+ "identity" : "swift-objc-dump",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/MxIris-Reverse-Engineering/swift-objc-dump.git",
+ "state" : {
+ "revision" : "4206040acd64db453c5c28c1539b98fa5befa8fc",
+ "version" : "0.8.100"
+ }
+ },
{
"identity" : "swift-object-association",
"kind" : "remoteSourceControl",
@@ -217,6 +316,15 @@
"version" : "0.5.0"
}
},
+ {
+ "identity" : "swift-semantic-string",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/MxIris-Reverse-Engineering/swift-semantic-string",
+ "state" : {
+ "revision" : "1c3438861ea6dbba0856ab02071d683914468e82",
+ "version" : "0.1.1"
+ }
+ },
{
"identity" : "swift-syntax",
"kind" : "remoteSourceControl",
@@ -231,8 +339,8 @@
"kind" : "remoteSourceControl",
"location" : "https://github.com/MxIris-macOS-Library-Forks/SwiftyXPC",
"state" : {
- "branch" : "main",
- "revision" : "d56672e7939ae929e94d4ea66da3fc527a69724e"
+ "revision" : "d56672e7939ae929e94d4ea66da3fc527a69724e",
+ "version" : "0.5.100"
}
},
{
diff --git a/RuntimeViewerUsingAppKit/RuntimeViewerUsingAppKit.xcodeproj/project.pbxproj b/RuntimeViewerUsingAppKit/RuntimeViewerUsingAppKit.xcodeproj/project.pbxproj
index ec743ce6..31b7c9c9 100644
--- a/RuntimeViewerUsingAppKit/RuntimeViewerUsingAppKit.xcodeproj/project.pbxproj
+++ b/RuntimeViewerUsingAppKit/RuntimeViewerUsingAppKit.xcodeproj/project.pbxproj
@@ -1326,7 +1326,7 @@
);
MARKETING_VERSION = 2.0.1;
ONLY_ACTIVE_ARCH = NO;
- PRODUCT_BUNDLE_IDENTIFIER = dev.JH.RuntimeViewerCatalystHelper;
+ PRODUCT_BUNDLE_IDENTIFIER = "$(RUNTIME_VIEWER_CATALYST_HELPER_DEBUG_BUNDLE_IDENTIFIER)";
PRODUCT_NAME = "$(TARGET_NAME)";
SDKROOT = iphoneos;
SKIP_INSTALL = NO;
@@ -1372,7 +1372,7 @@
);
MARKETING_VERSION = 2.0.1;
ONLY_ACTIVE_ARCH = NO;
- PRODUCT_BUNDLE_IDENTIFIER = com.JH.RuntimeViewerCatalystHelper;
+ PRODUCT_BUNDLE_IDENTIFIER = "$(RUNTIME_VIEWER_CATALYST_HELPER_RELEASE_BUNDLE_IDENTIFIER)";
PRODUCT_NAME = "$(TARGET_NAME)";
SDKROOT = iphoneos;
SKIP_INSTALL = NO;
@@ -1387,6 +1387,254 @@
};
name = Release;
};
+ E9958CD62FAB79100073036F /* Debug-arm64e configuration for PBXProject "RuntimeViewerUsingAppKit" */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = E9F2E9B92ED3BD3E001DCC3E /* CodeSigning.xcconfig */;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ COMPILATION_CACHE_ENABLE_CACHING = YES;
+ COPY_PHASE_STRIP = NO;
+ DEAD_CODE_STRIPPING = YES;
+ DEBUG_INFORMATION_FORMAT = dwarf;
+ DEVELOPMENT_TEAM = D5Q73692VW;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ ENABLE_TESTABILITY = YES;
+ ENABLE_USER_SCRIPT_SANDBOXING = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu17;
+ GCC_DYNAMIC_NO_PIC = NO;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_OPTIMIZATION_LEVEL = 0;
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ "DEBUG=1",
+ "$(inherited)",
+ );
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ LOCALIZATION_PREFERS_STRING_CATALOGS = YES;
+ MACOSX_DEPLOYMENT_TARGET = 11.0;
+ MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
+ MTL_FAST_MATH = YES;
+ ONLY_ACTIVE_ARCH = YES;
+ SDKROOT = macosx;
+ SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG $(inherited)";
+ SWIFT_ENABLE_EXPLICIT_MODULES = YES;
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ };
+ name = "Debug-arm64e";
+ };
+ E9958CD72FAB79100073036F /* Debug-arm64e configuration for PBXNativeTarget "RuntimeViewerUsingAppKit" */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = E95CDA672DAA970300D97B03 /* Debug.xcconfig */;
+ buildSettings = {
+ ALLOW_TARGET_PLATFORM_SPECIALIZATION = NO;
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
+ ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = NO;
+ AUTOMATION_APPLE_EVENTS = NO;
+ CLANG_ENABLE_MODULES = YES;
+ CODE_SIGN_ENTITLEMENTS = RuntimeViewerUsingAppKit/RuntimeViewerUsingAppKit.entitlements;
+ CODE_SIGN_STYLE = Automatic;
+ COMBINE_HIDPI_IMAGES = YES;
+ CURRENT_PROJECT_VERSION = 1;
+ DEAD_CODE_STRIPPING = YES;
+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+ ENABLE_HARDENED_RUNTIME = YES;
+ ENABLE_POINTER_AUTHENTICATION = NO;
+ ENABLE_RESOURCE_ACCESS_AUDIO_INPUT = NO;
+ ENABLE_RESOURCE_ACCESS_CALENDARS = NO;
+ ENABLE_RESOURCE_ACCESS_CAMERA = NO;
+ ENABLE_RESOURCE_ACCESS_CONTACTS = NO;
+ ENABLE_RESOURCE_ACCESS_LOCATION = NO;
+ ENABLE_RESOURCE_ACCESS_PHOTO_LIBRARY = NO;
+ ENABLE_USER_SCRIPT_SANDBOXING = NO;
+ EXCLUDED_SOURCE_FILE_NAMES = (
+ com.mxiris.runtimeviewer.service.plist,
+ com.mxiris.runtimeviewer.service,
+ );
+ FUSE_BUILD_SCRIPT_PHASES = NO;
+ GENERATE_INFOPLIST_FILE = YES;
+ INFOPLIST_FILE = RuntimeViewerUsingAppKit/Info.plist;
+ INFOPLIST_KEY_CFBundleDisplayName = RuntimeViewer;
+ INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.developer-tools";
+ INFOPLIST_KEY_NSHumanReadableCopyright = "";
+ INFOPLIST_KEY_NSLocalNetworkUsageDescription = "RuntimeViewer requires local network permissions to use the Bonjour discovery service";
+ INFOPLIST_KEY_NSMainNibFile = MainMenu;
+ INFOPLIST_KEY_NSPrincipalClass = NSApplication;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/../Frameworks",
+ );
+ MACOSX_DEPLOYMENT_TARGET = 15.0;
+ MARKETING_VERSION = 2.0.1;
+ ONLY_ACTIVE_ARCH = YES;
+ PRODUCT_BUNDLE_IDENTIFIER = "$(RUNTIME_VIEWER_APP_DEBUG_BUNDLE_IDENTIFIER)";
+ PRODUCT_NAME = "RuntimeViewer-Debug";
+ RUNTIME_EXCEPTION_ALLOW_DYLD_ENVIRONMENT_VARIABLES = NO;
+ RUNTIME_EXCEPTION_ALLOW_JIT = NO;
+ RUNTIME_EXCEPTION_ALLOW_UNSIGNED_EXECUTABLE_MEMORY = NO;
+ RUNTIME_EXCEPTION_DEBUGGING_TOOL = YES;
+ RUNTIME_EXCEPTION_DISABLE_EXECUTABLE_PAGE_PROTECTION = NO;
+ RUNTIME_EXCEPTION_DISABLE_LIBRARY_VALIDATION = YES;
+ SWIFT_EMIT_LOC_STRINGS = YES;
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ SWIFT_VERSION = 5.0;
+ };
+ name = "Debug-arm64e";
+ };
+ E9958CD82FAB79100073036F /* Debug-arm64e configuration for PBXNativeTarget "RuntimeViewerCatalystHelper" */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALLOW_TARGET_PLATFORM_SPECIALIZATION = NO;
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
+ BUILD_LIBRARY_FOR_DISTRIBUTION = NO;
+ CODE_SIGN_ENTITLEMENTS = RuntimeViewerCatalystHelper/RuntimeViewerCatalystHelper.entitlements;
+ CODE_SIGN_IDENTITY = "Apple Development";
+ "CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development";
+ CODE_SIGN_STYLE = Automatic;
+ CURRENT_PROJECT_VERSION = 1;
+ DERIVE_MACCATALYST_PRODUCT_BUNDLE_IDENTIFIER = NO;
+ ENABLE_HARDENED_RUNTIME = YES;
+ ENABLE_POINTER_AUTHENTICATION = NO;
+ ENABLE_USER_SCRIPT_SANDBOXING = NO;
+ GENERATE_INFOPLIST_FILE = YES;
+ INFOPLIST_FILE = RuntimeViewerCatalystHelper/Info.plist;
+ INFOPLIST_KEY_LSBackgroundOnly = YES;
+ INFOPLIST_KEY_LSUIElement = YES;
+ INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
+ INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen;
+ INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
+ INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
+ IPHONEOS_DEPLOYMENT_TARGET = 18.0;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ );
+ MARKETING_VERSION = 2.0.1;
+ ONLY_ACTIVE_ARCH = NO;
+ PRODUCT_BUNDLE_IDENTIFIER = "$(RUNTIME_VIEWER_CATALYST_HELPER_DEBUG_BUNDLE_IDENTIFIER)";
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SDKROOT = iphoneos;
+ SKIP_INSTALL = NO;
+ SUPPORTED_PLATFORMS = "iphonesimulator iphoneos";
+ SUPPORTS_MACCATALYST = YES;
+ SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;
+ SUPPORTS_XR_DESIGNED_FOR_IPHONE_IPAD = NO;
+ SWIFT_EMIT_LOC_STRINGS = YES;
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2,6";
+ };
+ name = "Debug-arm64e";
+ };
+ E9958CD92FAB79100073036F /* Debug-arm64e configuration for PBXNativeTarget "RuntimeViewerCatalystHelperPlugin" */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ CODE_SIGN_STYLE = Automatic;
+ COMBINE_HIDPI_IMAGES = YES;
+ CURRENT_PROJECT_VERSION = 1;
+ DEAD_CODE_STRIPPING = YES;
+ ENABLE_HARDENED_RUNTIME = YES;
+ ENABLE_POINTER_AUTHENTICATION = NO;
+ GENERATE_INFOPLIST_FILE = YES;
+ INFOPLIST_KEY_NSHumanReadableCopyright = "";
+ INFOPLIST_KEY_NSPrincipalClass = AppKitPluginImpl;
+ INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Bundles";
+ MACOSX_DEPLOYMENT_TARGET = 15.0;
+ MARKETING_VERSION = 2.0.1;
+ ONLY_ACTIVE_ARCH = NO;
+ PRODUCT_BUNDLE_IDENTIFIER = "$(RUNTIME_VIEWER_CATALYST_HELPER_PLUGIN_BUNDLE_IDENTIFIER)";
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SKIP_INSTALL = YES;
+ SWIFT_EMIT_LOC_STRINGS = YES;
+ SWIFT_VERSION = 5.0;
+ WRAPPER_EXTENSION = bundle;
+ };
+ name = "Debug-arm64e";
+ };
+ E9958CDA2FAB79100073036F /* Debug-arm64e configuration for PBXNativeTarget "com.JH.RuntimeViewerService" */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = E95CDA652DAA6FA300D97B03 /* Debug.xcconfig */;
+ buildSettings = {
+ CODE_SIGN_STYLE = Automatic;
+ CREATE_INFOPLIST_SECTION_IN_BINARY = YES;
+ DEAD_CODE_STRIPPING = YES;
+ ENABLE_HARDENED_RUNTIME = YES;
+ ENABLE_POINTER_AUTHENTICATION = YES;
+ INFOPLIST_FILE = "$(SRCROOT)/$(TARGETNAME)/Info.plist";
+ MACOSX_DEPLOYMENT_TARGET = 15.0;
+ ONLY_ACTIVE_ARCH = NO;
+ PRODUCT_BUNDLE_IDENTIFIER = "$(RUNTIME_VIEWER_PRIVILEGED_HELPER_BUNDLE_IDENTIFIER)";
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SKIP_INSTALL = YES;
+ SWIFT_VERSION = 5.0;
+ };
+ name = "Debug-arm64e";
+ };
+ E9958CDB2FAB79100073036F /* Debug-arm64e configuration for PBXNativeTarget "dev.mxiris.runtimeviewer.service" */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ CODE_SIGN_STYLE = Automatic;
+ DEVELOPMENT_TEAM = D5Q73692VW;
+ ENABLE_HARDENED_RUNTIME = YES;
+ ENABLE_POINTER_AUTHENTICATION = YES;
+ MACOSX_DEPLOYMENT_TARGET = 15.0;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SKIP_INSTALL = YES;
+ SWIFT_APPROACHABLE_CONCURRENCY = YES;
+ SWIFT_UPCOMING_FEATURE_MEMBER_IMPORT_VISIBILITY = YES;
+ SWIFT_VERSION = 5.0;
+ };
+ name = "Debug-arm64e";
+ };
+ E9958CDC2FAB79100073036F /* Debug-arm64e configuration for PBXNativeTarget "com.mxiris.runtimeviewer.service" */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ CODE_SIGN_STYLE = Automatic;
+ DEVELOPMENT_TEAM = D5Q73692VW;
+ ENABLE_HARDENED_RUNTIME = YES;
+ ENABLE_POINTER_AUTHENTICATION = NO;
+ MACOSX_DEPLOYMENT_TARGET = 15.0;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SKIP_INSTALL = YES;
+ SWIFT_APPROACHABLE_CONCURRENCY = YES;
+ SWIFT_UPCOMING_FEATURE_MEMBER_IMPORT_VISIBILITY = YES;
+ SWIFT_VERSION = 5.0;
+ };
+ name = "Debug-arm64e";
+ };
E9A9CCE52F5D880400A10DD3 /* Debug configuration for PBXNativeTarget "dev.mxiris.runtimeviewer.service" */ = {
isa = XCBuildConfiguration;
buildSettings = {
@@ -1437,7 +1685,7 @@
MACOSX_DEPLOYMENT_TARGET = 15.0;
MARKETING_VERSION = 2.0.1;
ONLY_ACTIVE_ARCH = NO;
- PRODUCT_BUNDLE_IDENTIFIER = com.JH.RuntimeViewerCatalystHelperPlugin;
+ PRODUCT_BUNDLE_IDENTIFIER = "$(RUNTIME_VIEWER_CATALYST_HELPER_PLUGIN_BUNDLE_IDENTIFIER)";
PRODUCT_NAME = "$(TARGET_NAME)";
SKIP_INSTALL = YES;
SWIFT_EMIT_LOC_STRINGS = YES;
@@ -1463,7 +1711,7 @@
MACOSX_DEPLOYMENT_TARGET = 15.0;
MARKETING_VERSION = 2.0.1;
ONLY_ACTIVE_ARCH = NO;
- PRODUCT_BUNDLE_IDENTIFIER = com.JH.RuntimeViewerCatalystHelperPlugin;
+ PRODUCT_BUNDLE_IDENTIFIER = "$(RUNTIME_VIEWER_CATALYST_HELPER_PLUGIN_BUNDLE_IDENTIFIER)";
PRODUCT_NAME = "$(TARGET_NAME)";
SKIP_INSTALL = YES;
SWIFT_EMIT_LOC_STRINGS = YES;
@@ -1550,6 +1798,7 @@
isa = XCConfigurationList;
buildConfigurations = (
E9432FED2C0D614A00362862 /* Debug configuration for PBXProject "RuntimeViewerUsingAppKit" */,
+ E9958CD62FAB79100073036F /* Debug-arm64e configuration for PBXProject "RuntimeViewerUsingAppKit" */,
E9432FEE2C0D614A00362862 /* Release configuration for PBXProject "RuntimeViewerUsingAppKit" */,
);
defaultConfigurationName = Release;
@@ -1558,6 +1807,7 @@
isa = XCConfigurationList;
buildConfigurations = (
E9432FF02C0D614A00362862 /* Debug configuration for PBXNativeTarget "RuntimeViewerUsingAppKit" */,
+ E9958CD72FAB79100073036F /* Debug-arm64e configuration for PBXNativeTarget "RuntimeViewerUsingAppKit" */,
E9432FF12C0D614A00362862 /* Release configuration for PBXNativeTarget "RuntimeViewerUsingAppKit" */,
);
defaultConfigurationName = Release;
@@ -1566,6 +1816,7 @@
isa = XCConfigurationList;
buildConfigurations = (
E947C3782C2A4D0500296B2E /* Debug configuration for PBXNativeTarget "RuntimeViewerCatalystHelper" */,
+ E9958CD82FAB79100073036F /* Debug-arm64e configuration for PBXNativeTarget "RuntimeViewerCatalystHelper" */,
E947C3792C2A4D0500296B2E /* Release configuration for PBXNativeTarget "RuntimeViewerCatalystHelper" */,
);
defaultConfigurationName = Release;
@@ -1574,6 +1825,7 @@
isa = XCConfigurationList;
buildConfigurations = (
E9A9CCE52F5D880400A10DD3 /* Debug configuration for PBXNativeTarget "dev.mxiris.runtimeviewer.service" */,
+ E9958CDB2FAB79100073036F /* Debug-arm64e configuration for PBXNativeTarget "dev.mxiris.runtimeviewer.service" */,
E9A9CCE62F5D880400A10DD3 /* Release configuration for PBXNativeTarget "dev.mxiris.runtimeviewer.service" */,
);
defaultConfigurationName = Release;
@@ -1582,6 +1834,7 @@
isa = XCConfigurationList;
buildConfigurations = (
E9E900DE2C2CF9A500FADDCC /* Debug configuration for PBXNativeTarget "RuntimeViewerCatalystHelperPlugin" */,
+ E9958CD92FAB79100073036F /* Debug-arm64e configuration for PBXNativeTarget "RuntimeViewerCatalystHelperPlugin" */,
E9E900DF2C2CF9A500FADDCC /* Release configuration for PBXNativeTarget "RuntimeViewerCatalystHelperPlugin" */,
);
defaultConfigurationName = Release;
@@ -1590,6 +1843,7 @@
isa = XCConfigurationList;
buildConfigurations = (
E9E900ED2C2D0D5B00FADDCC /* Debug configuration for PBXNativeTarget "com.JH.RuntimeViewerService" */,
+ E9958CDA2FAB79100073036F /* Debug-arm64e configuration for PBXNativeTarget "com.JH.RuntimeViewerService" */,
E9E900EE2C2D0D5B00FADDCC /* Release configuration for PBXNativeTarget "com.JH.RuntimeViewerService" */,
);
defaultConfigurationName = Release;
@@ -1598,6 +1852,7 @@
isa = XCConfigurationList;
buildConfigurations = (
E9EC5BCA2F1CBDBA00859091 /* Debug configuration for PBXNativeTarget "com.mxiris.runtimeviewer.service" */,
+ E9958CDC2FAB79100073036F /* Debug-arm64e configuration for PBXNativeTarget "com.mxiris.runtimeviewer.service" */,
E9EC5BCB2F1CBDBA00859091 /* Release configuration for PBXNativeTarget "com.mxiris.runtimeviewer.service" */,
);
defaultConfigurationName = Release;
diff --git a/RuntimeViewerUsingAppKit/RuntimeViewerUsingAppKit/Info.plist b/RuntimeViewerUsingAppKit/RuntimeViewerUsingAppKit/Info.plist
index f37046b1..0eaffa51 100644
--- a/RuntimeViewerUsingAppKit/RuntimeViewerUsingAppKit/Info.plist
+++ b/RuntimeViewerUsingAppKit/RuntimeViewerUsingAppKit/Info.plist
@@ -28,14 +28,14 @@
com.JH.RuntimeViewerService
$(SMPrivilegedExecutable)
+ SUAllowsAutomaticUpdates
+
+ SUEnableAutomaticChecks
+
SUFeedURL
https://mxiris-reverse-engineering.github.io/RuntimeViewer/appcast.xml
SUPublicEDKey
$(SPARKLE_PUBLIC_ED_KEY)
- SUEnableAutomaticChecks
-
- SUAllowsAutomaticUpdates
-
UTImportedTypeDeclarations
diff --git a/RuntimeViewerUsingUIKit/RuntimeViewerUsingUIKit.xcodeproj/project.pbxproj b/RuntimeViewerUsingUIKit/RuntimeViewerUsingUIKit.xcodeproj/project.pbxproj
index f1617cb6..fdb43680 100644
--- a/RuntimeViewerUsingUIKit/RuntimeViewerUsingUIKit.xcodeproj/project.pbxproj
+++ b/RuntimeViewerUsingUIKit/RuntimeViewerUsingUIKit.xcodeproj/project.pbxproj
@@ -474,7 +474,7 @@
"@executable_path/Frameworks",
);
MARKETING_VERSION = 2.0.0;
- PRODUCT_BUNDLE_IDENTIFIER = dev.JH.RuntimeViewer;
+ PRODUCT_BUNDLE_IDENTIFIER = "$(RUNTIME_VIEWER_APP_DEBUG_BUNDLE_IDENTIFIER)";
PRODUCT_NAME = RuntimeViewer;
SDKROOT = xros;
SUPPORTED_PLATFORMS = "xros xrsimulator";
@@ -504,7 +504,7 @@
"@executable_path/Frameworks",
);
MARKETING_VERSION = 2.0.0;
- PRODUCT_BUNDLE_IDENTIFIER = com.JH.RuntimeViewer;
+ PRODUCT_BUNDLE_IDENTIFIER = "$(RUNTIME_VIEWER_APP_RELEASE_BUNDLE_IDENTIFIER)";
PRODUCT_NAME = RuntimeViewer;
SDKROOT = xros;
SUPPORTED_PLATFORMS = "xros xrsimulator";
@@ -675,7 +675,7 @@
"@executable_path/Frameworks",
);
MARKETING_VERSION = 2.0.0;
- PRODUCT_BUNDLE_IDENTIFIER = dev.JH.RuntimeViewer;
+ PRODUCT_BUNDLE_IDENTIFIER = "$(RUNTIME_VIEWER_APP_DEBUG_BUNDLE_IDENTIFIER)";
PRODUCT_NAME = RuntimeViewer;
SDKROOT = iphoneos;
SUPPORTED_PLATFORMS = "appletvos appletvsimulator iphoneos iphonesimulator";
@@ -717,7 +717,7 @@
"@executable_path/Frameworks",
);
MARKETING_VERSION = 2.0.0;
- PRODUCT_BUNDLE_IDENTIFIER = com.JH.RuntimeViewer;
+ PRODUCT_BUNDLE_IDENTIFIER = "$(RUNTIME_VIEWER_APP_RELEASE_BUNDLE_IDENTIFIER)";
PRODUCT_NAME = RuntimeViewer;
SDKROOT = iphoneos;
SUPPORTED_PLATFORMS = "appletvos appletvsimulator iphoneos iphonesimulator";