# RN 0.72.5 + Paper 低版本兼容 Example

与根目录 `example/`（RN 0.85 / New Arch）**独立**，UI 与功能与 `example` **对齐**（Init / 个性化开关 / 各广告位 Demo），用于对拍 **RN 0.72.x + Paper**。

## 前提

- 在**本目录**单独执行 `yarn install`（勿在仓库根目录 workspace 里装，避免 RN 被 hoist 到 0.85）
- 根目录 SDK 已 `yarn prepare` 生成 `lib/`
- **iOS**：Bridge `RCT_EXPORT_*` 已就绪，可直接测
- **Android**：SDK `android/src/oldarch/` 未落地前，`newArchEnabled=false` **编不过**

## 快速开始（iOS 真机）

```bash
# 1. 构建 SDK
cd .. && yarn prepare && cd example-legacy

# 2. 安装依赖（仅本目录，使用 link:.. 链到父 SDK）
yarn install

# 3. Pods（Paper + boost 补丁 + Xcode 兼容）
yarn pods

# 4. 启动 Metro（需 --preserve-symlinks，已写入 start 脚本）
yarn start

# 5. 真机构建 / 运行
RN_IOS_UDID=<你的UDID> yarn ios
# 或仓库根目录：yarn test:legacy-ios
```

若 `yarn ios` 提示缺少 `ios-deploy`，可用 Xcode 打开 `ios/ReactNativeSdkExampleLegacy.xcworkspace` 运行，或：

```bash
cd ios && xcodebuild -workspace ReactNativeSdkExampleLegacy.xcworkspace \
  -scheme ReactNativeSdkExampleLegacy -configuration Debug \
  -destination 'id=<UDID>' -derivedDataPath build
```

## 冒烟预期

- 页面：`SDK: UA_x.x.x`（非空）
- 日志：`[InitManager] legacy initSdk done`
- 标注：`Architecture: Paper / newArchEnabled=false`

**重要：** Metro 必须从 `example-legacy` 启动，且 **8081 不能被 `example`（RN 0.85）占用**，否则会出现：

```
React Native version mismatch. JavaScript version: 0.85.0 / Native version: 0.72.5
```

```bash
# 先停掉其它 Metro（example / 根目录）
lsof -ti :8081 | xargs kill -9 2>/dev/null || true
cd example-legacy && yarn start
```

## 已知环境坑

| 问题 | 处理 |
|------|------|
| boost pod checksum | `scripts/patch-rn72-boost.sh`（`yarn pods` 已自动调用） |
| Yarn 4 `file:..` OOM | 使用 `link:..` + 独立 `yarn.lock` |
| Metro portal 链接 | `start` 脚本带 `NODE_OPTIONS=--preserve-symlinks` |
| Invalid hook call（Banner 等） | Metro 已 `disableHierarchicalLookup` + 强制 SDK 走 `lib/module`，避免双份 React |
| Xcode 26 + RN 0.72 Yoga | Podfile `post_install` 关闭 `-Werror=deprecated-literal-operator` |
| ld_classic linker crash | Podfile / 工程已去掉 `-ld_classic` |

## Android（oldarch 完成后）

```bash
# android/gradle.properties 已默认 newArchEnabled=false
yarn android
```

详见 [`docs/LOW-RN-VERSION-TEST.md`](../docs/LOW-RN-VERSION-TEST.md)。
