修复iOS WireGuard 集成到个人项目报错问题
1、添加 Swift Package Dependenices 失败
-
想要把 WireGuard 项目集成到个人项目中,按照官方的说法直接使用
Swift Package Dependencies
,但是如果你的 Xcode
是高级版本(15以上),那么当你把这https://git.zx2c4.com/wireguard-apple
添加到Swift
package后,会发现报错,添加不了
这是因为官方的Swift Package
版本是 5.3而自身版本是 5.5 以上,如果还是一定要通过
Swift Package
来添加的话,就要把 Xcode 降级,但是我们基本不会这么做.那这个时候我们可以通过下载官方的包,然后把里面的
Package.swift
文件里面的// swift-tools-version: 5.3
,修改成5.5
,然后再通过
Swift Package
添加本地 Local 的方式把下载好的官方包给添加进去就可以
2、添加本地 local swift package 后运行报错
-
那么添加 Swift Package 后呢,直接运行是会报错的,这个时候还需要添加另外两个 Target:
1、Network Extension;2、External Build System
如下图:
这里的Directory
添加的是你本地WireGuardKitGo
这个文件夹的路径(可自行添加到对应本项目的路径,然后使用$(PROJECT_DIR)来引用)完成这一步后基本操作就完成了,然后运行项目到真机,这次发现惊喜,成功了
那么接下来就尝试一下调用相关
WireGuard
的内容,我尝试在PacketTunnelProvider
里添加private lazy var adapter: WireGuardAdapter = { return WireGuardAdapter(with: self) { logLevel, message in } }()
运行后发现报错了:
这种报错,是
Network Extension
这个 Target 没有添加到WireGuard
框架那么我们就去相应的 Target 里检查一下,确保在
Link Binary with Libraries
添加WireGuard
这个框架注:想要在哪个 Target 使用 WireGuard 内容就在哪个 Target 里添加 WireGuard 框架
添加后运行,成功了,没有报错,
到此就完成集成 WireGuard 框架到自己项目里了。
感谢各位看到最后,感觉不错希望能多支持关注一下,作者会持续更新更多分享,谢谢!
需要讨论可加V:Jun_Yeong-Huang