## Why

phase-2d 跑通了首个 Fabric 视图（Banner，SDK 自渲染）。phase-2e 实现 **Native（原生信息流）**——**全项目最复杂**：支持**自渲染**（开发者用 RN 拼 title/icon/mainImage/cta 布局，桥把这些 RN 视图经 **viewTag** 绑定给原生 SDK 做点击/曝光）和**模板**（SDK 整体渲染）两种模式。结构为两类 `ATNative`（加载器）+ `NativeAd`（已加载实例）+ Fabric 组件 `ATNativeAdView`。本期 **Android 完整实现**（ADX 源），**iOS 仅 stub + log**。

自渲染的 viewTag 绑定，是开屏 `containerRef` 同源的"原生视图托管"机制，本期首次打通——后续若做开屏自定义 view 可复用。

## What Changes

- **L1（两类 + Fabric 组件，SPACE §4.10）**：
  - `src/nativead/ATNative.ts`（加载器）：`makeAdRequest(adRequest?)` / `getNativeAd(showConfig?): Promise<NativeAd|null>` / `checkAdStatus():Promise` / `checkValidAdCaches():Promise` / `setLocalExtra` / `setTKExtra` / `static entryAdScenario(...tkExtra?)` / `setAdListener`/`setAdMultipleLoadedListener`/`setAdSourceStatusListener`。
  - `src/nativead/NativeAd.ts`（已加载实例）：`prepare(prepareInfo)` / `renderAdContainer(containerRef, prepareInfo)` / `setNativeEventListener` / `setAdRevenueListener` / `getAdMaterial():Promise` / `getAdInfo():Promise` / `destroy`。
  - `src/nativead/ATNativeAdView.tsx`（Fabric 组件封装）：props `placementID/sceneID/isAdaptiveHeight/extraMap`。
  - `ATNativePrepareInfo` 类型（§17.4.6）：`appIcon/mainImage/title/desc/adLogo/cta/dislike`（标准元素 viewTag）+ `parent` + `elementsView`（元素数组）+ `customView` + `isAdaptiveHeight`。
- **L2 Fabric 组件 spec**：`src/specs/ATNativeAdViewNativeComponent.ts`（`codegenNativeComponent`）。命令式桥方法：`loadNativeAd/getNativeAd/prepareNativeAd/renderNativeAdContainer/checkNativeLoadStatus/getNativeValidAds/entryNativeScenario/setNativeLocalExtra/setNativeTKExtra/destroyNativeAd/getNativeAdMaterial`。
- **L3 Android**：移植 Flutter nativead 六件套（包名 `com.anythink.reactnative.nativead`）：`ATAdNativeManger→ATNativeManager`、`ATNativeHelper`、`ATNativeViewFactory/ATAndroidNativeView → ATNativeAdViewManager`（Fabric ViewManager）+ 原生 view、**`SelfRenderViewUtil`**（elementsView→原生元素绑定）、**`ViewInfo`**。viewTag → `UIManager.resolveView` 取 RN 原生 view 注册给 SDK。
- **L3 iOS（stub）**：native ViewManager + view 空实现 + 命令式 stub + NSLog。
- **常量**：`Const.ts` 补 `NativeCallback` 16 个（含 video `nativeAdDidStartPlayingVideo`/`EndPlayingVideo`/`NativeVideoProgress` + `nativeAdDidTapCloseButton`；sync-const-check 守门）。
- **事件**：经唯一 `ATReactNativeEventEmitter`（callName `NativeCall`）→ `ATAdEvents` 按 placementID 分发。
- **复用 2d Fabric 地基**：codegen `type:"all"`、深路径 shim、**容器 requestLayout 强制 measure/layout**、dp→px、ViewManager 三层 + onDropViewInstance→destroy、Package 注册。
- **Example**：自渲染 + 模板**两个入口**；`sdkConfig.ts` 填 native ADX 位（native-selfrender / native-express）。
- **错误语义**：load 失败只走 Event（`nativeAdFailToLoadAD`），禁止 `Promise.reject`；`getNativeAd` 无广告 `resolve(null)`；未 init reject `SDK_NOT_INITIALIZED`。

**本 Phase 不做**：iOS 真实自渲染；Flutter 独有非标方法；视频/下载控制裁剪到 Android NativeAd public API（P2）。

## Capabilities

### New Capabilities
- `native-ad`: Native 的 L1 两类 API（ATNative/NativeAd）+ Fabric 组件 `ATNativeAdView`、自渲染 viewTag 绑定（prepareInfo/elementsView）、模板模式、Android ViewManager（三层 + 生命周期）、统一事件（含 video/AdSource）、Example 双入口与对拍。

## Impact

- **新增**：`src/nativead/`（ATNative/NativeAd/ATNativeAdView + 类型）；`src/specs/ATNativeAdViewNativeComponent.ts`；`android/.../nativead/`（Manager/Helper/ViewManager + view + SelfRenderViewUtil + ViewInfo）；`ios/.../`（native stub）；`Const.ts` +NativeCallback；example 双入口。
- **复用（不改）**：2d Banner 的 Fabric 地基（codegen all / shim / requestLayout 修复 / dp→px / ViewManager 模式）、`ATReactNativeEventEmitter`、`ATInitManager`、`BridgeJsonMapUtil`、`RNMapUtil`、`ATAdEvents`、ADX 依赖、已对齐的 load/checkAdStatus/setLocalExtra 模式。
- **不触及**：phase-0~2d 已交付能力。
