用途:把扩展的 iOS 源码(ios/RCT<Pascal>Module.{h,m})编译成 wrap 运行时加载的扁平 <Pascal>Plugin.framework(仅设备切片),是 /build-android-binary 的 iOS 对应物。必须交付扁平 .framework,不能是 .xcframework,否则 wrap 流水线报错找不到框架。
主要能力:读取 manifest.json 与共享文档,做前置检查(macOS、Xcode 16+、React-Core 头文件、可选 CocoaPods);在 ppmplugin/staging/ios-build/ 的临时副本中搭建独立 Xcode framework 工程,不改动原始 ios/ 与 podspec;校验源码与 manifest 一致(类名、moduleName、导出方法、无参初始化);归档设备切片并复制出扁平 framework。
使用方式:先运行 /generate-ppmplugin-manifest;推荐仅用头文件的 React 方案(聚合 RN 头到 include/React,设置 HEADER_SEARCH_PATHS 与 OTHER_LDFLAGS=-undefined dynamic_lookup),失败再退回 CocoaPods。构建命令为 xcodebuild archive -project <Pascal>Plugin.xcodeproj -scheme <Pascal>Plugin -destination "generic/platform=iOS" -archivePath build/<Pascal>Plugin-device.xcarchive SKIP_INSTALL=NO BUILD_LIBRARY_FOR_DISTRIBUTION=YES,随后复制出 .framework。
限制:仅限 Mac,Linux/Windows 直接 BLOCKED;不生成 manifest、不打包 .ppmplugin、不构建 Android、不签名。已知风险是 React-Core 弱链接与 RN 版本固定(0.79.7)需与 wrap 宿主一致,弱链接标志与头搜索路径尚未在真实宿主上验证;React 符号/头文件报错通常意味着 RN 版本不匹配而非代码缺陷。framework 必须含同名 Mach-O 二进制与 Info.plist。