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";