其实StackOverFlow上面已经有解决方案了,可以去看
https://stackoverflow.com/questions/38959067/dns-lookup-issue-when-running-my-go-app-in-termux
本文只是进行一个总结
问题场景:
一个Go语言程序,按照 GOOS=linux GOARCH=arm64 进行编译,程序里面用到了Go的http包进行网络传输。目标是在安卓Termux终端上成功运行
系统信息:Redmi Note 8 Pro,Android 11 Pixel Experience 手机已ROOT
原因分析:
就像StackOverflow上面说的那样
Since the Linux in Android is not so “standard”. /etc/resolv.conf is not available. The app then just keep looking up host in localhost:53.
安卓上面的Linux不是很标准,不使用Linux通用的/etc/resolv.conf进行DNS解析,这导致一般的Linux程序因找不到这个文件而无法进行DNS解析,进而无法进行网络通信。
解决方案:
很简单,只需要在手机根目录的 /etc/ 文件夹下新建一个名为 resolv.conf 的文件,内容如下,一行即可
nameserver 8.8.8.8
注意:访问手机根目录需要ROOT权限,本人的手机已经ROOT了所以就直接新建即可。如果没有ROOT,建议参考下面这个Github上面的讨论尝试一下,但由于未经本人尝试,成功与否不做保证。
https://github.com/termux/termux-app/issues/869#issuecomment-433985523
|