前言
之前把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
设备的我就这样把这个问题解决了,哈哈,不得不说我可真是个天才(狗头保命)。