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
@@ -0,0 +1,31 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<!--
PacketTunnel.entitlements — PacketTunnel Extension Target Entitlements
Bundle ID: com.pangolin.pangolinVpn.PacketTunnel
申请说明:
1. com.apple.developer.networking.networkextension
→ Extension Bundle ID 须单独在 Apple 开发者后台注册并开启:
developer.apple.com → Identifiers → com.pangolin.pangolinVpn.PacketTunnel
→ Network Extensions → Packet Tunnel Provider(勾选)
2. com.apple.security.application-groups
→ 与主 App 使用相同 Groupgroup.com.pangolin.pangolinVpn)。
Extension 通过 UserDefaults(suiteName:) 写入最新 stats/status
主 App 在下次启动时读取(异常崩溃恢复场景)。
-->
<plist version="1.0">
<dict>
<!-- Network ExtensionExtension 自身提供 Packet Tunnel 能力 -->
<key>com.apple.developer.networking.networkextension</key>
<array>
<string>packet-tunnel-provider</string>
</array>
<!-- App Group:与主 App 共享 UserDefaults / 文件容器 -->
<key>com.apple.security.application-groups</key>
<array>
<string>group.com.pangolin.pangolinVpn</string>
</array>
</dict>
</plist>