前言
之前把gopeed项目升级到go1.21版本后,发现gomobile编译完后,在 flutter ios 端编译会报错,如下:
1 | ld: Undefined symbols: |
然后我在go的github里找到了这个issue,但是看到这个@bcmills哥们的回复感觉太麻烦了就用了后面@dreacot老哥的解决方案,编译的时候加上-tags netgo:
1 | gomobile bind -target=ios -tags netgo |
然后就可以正常编译了,因为我自己没有ios设备,就没有测试过,按理说编译通过了应该就没问题了,然而最近 github 上好多用户都在反馈 ios 端无法正常使用,附上一个issue,看起来都是DNS解析的问题,起初以为是用户的网络问题,但是随着越来越多的用户反馈,这肯定就不是单纯的用个例问题了,于是又重新开始研究@bcmills哥们的解决方案。
添加 libresolv.tbd 库
他提到的解决方案是通过添加libresolv.tbd或者libresolv.9.tbd库来解决,但是很尴尬的是我没有mac设备,所以没办法在 xcode 里添加这个库,于是问了下无所不知的ChatGPT,看看能不能通过命令行添加这个库:

看起来好像可行,在github action中跑了下,然后顺便把生成出来的project.pbxproj文件打印出来,如果没问题的话就复制出来提交,脚本如下:
1 | gem install xcodeproj |
接着就是等待github action的结果了,结果是编译成功的,然后把IPA包发给用户测试,一切正常,问题解决,最后把更新之后的project.pbxproj文件提交到github上,至此一个没有mac设备的我就这样把这个问题解决了,哈哈,不得不说我可真是个天才(狗头保命)。


