merge: iOS 端 PoC M3 + entitlement 申请 [tsk_F5r4Kt9m_wQU]

解决合并冲突(原任务 tsk_nsobbj_rJdy0 分支 maestro/tsk_nsobbj_rJdy0):
两分支修改文件集合无重叠,手动 apply iOS PoC commit (e129f09)。

变更内容:
- client/ios/PacketTunnel/PacketTunnelProvider.swift:完整 M3 实现
  (startTunnel/stopTunnel/handleAppMessage/LibboxPlatformInterface)
- client/ios/PacketTunnel/MemoryMonitor.swift:新增 NE 进程内存打点
- client/ios/PacketTunnel/PacketTunnel.entitlements:NE + App Group 权限
- client/ios/Runner/Runner.entitlements:主 App NE + App Group 权限
- client/ios/Runner/VpnManager.swift:红线词修复 + App Group 缓存 + NEVPNStatus 订阅
- client/ios/Runner/Info.plist:NSVPNUsageDescription 红线词修复
- client/ios/PacketTunnel/Info.plist:CFBundleDisplayName 红线词修复
- client/ios/Runner.xcodeproj/project.pbxproj:
  CODE_SIGN_ENTITLEMENTS 添加到全部 build config;MemoryMonitor 加入 Sources
- app/kernel/build-ios.sh:M3 内存裁剪决策记录
- doc/ne-entitlement-申请指引.md:新增 NE entitlement 申请完整指引

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
wangjia
2026-06-13 20:14:32 +08:00
parent 628440b3f9
commit 7a1715bd09
10 changed files with 889 additions and 41 deletions
+23
View File
@@ -55,6 +55,29 @@ BUILD_TAGS="with_quic,with_utls,with_clash_api,with_gvisor"
# BUILD_TAGS="${BUILD_TAGS},with_ech"
# BUILD_TAGS="${BUILD_TAGS},with_wireguard"
# ── M3 内存裁剪决策记录(tsk_nsobbj_rJdy0)────────────────────────────────────
# NE 进程内存上限实测(MemoryMonitor 打点):
# 初始 build tagswith_quic,with_utls,with_clash_api,with_gvisor):
# 预估 RSS~20-25 MB(含 Go runtime ~8MB + gVisor ~4MB + QUIC ~5MB + uTLS ~2MB + 基础~6MB
# 旧设备(≤ A9)15MB 上限下会触顶;新设备(≥ A12)50MB 上限下可运行
#
# 若真机测试出现 "NEProvider memory limit exceeded" / jetsam 杀进程,按以下顺序裁减:
# Step 1: 去掉 with_gvisor → 改用系统 TUN 网络栈;减约 2-4 MB
# 取消注释下一行:
# BUILD_TAGS="with_quic,with_utls,with_clash_api"
# Step 2: 去掉 with_grpc → 若不需要 gRPC 入站;减约 4 MB
# 取消注释下一行:
# BUILD_TAGS="with_quic,with_utls,with_clash_api" # 已无 gvisor,此行等效
# Step 3: 去掉 with_quic → 仅在放弃 Hysteria2/QUIC 协议时考虑;减约 3 MB
# 取消注释下一行:
# BUILD_TAGS="with_utls,with_clash_api"
#
# 裁减后执行: ./build-ios.sh --force 重出 XCFramework,然后在 Xcode 中
# 重新拖入 dist/ios/Libbox.xcframework(或更新 SPM/Pods 引用)。
# 在此注释中记录最终选定的 build tags 及峰值 RSS(由 MemoryMonitor 汇报)。
#
# 当前状态:等待真机 10min 压测结果(MemoryMonitor 每 10s 打点)。
# ── 幂等检查 ─────────────────────────────────────────────────────────────────
if [[ "${FORCE}" == false && -d "${OUT_XCFW}" ]]; then
printf '✓ %s 已存在,跳过构建(传 --force 强制重建)\n' "${OUT_XCFW}"