1

我的程序在 android 终端中无法访问互联网,但在 linux 中工作正常。(wget(busybox)在 android 终端中与互联网正常工作)

package main

import (
    "io"
    "io/ioutil"
    "net/http"
)

func Url(url string)(string, io.ReadCloser, http.Header, error){
    var c = http.Client{}
    inf, err := c.Get(url)
    if err == nil {
        data,_ := ioutil.ReadAll(inf.Body)
        return string(data), inf.Body, inf.Header, err
    }
    return "", nil, nil, err
}

func main() {
    print("test internet... ")
    c,_,_,err := Url("http://ifconfig.me/ip")
    if err == nil {
        println("\n ip:", c)
    }else{
        println("error")
    }
}

编译:

go build main.go    # linux
CGO_ENABLED=0 GOOS=linux GOARCH=arm go build $(bin).go    # android
4

2 回答 2

2

Android 没有 /etc/resolv.conf

在您的代码中的某处,或者更可能是您导入的那些库之一,您假设一个传统的 linux 用户空间,而在 Android 上并非如此。

也许“GOOS=linux”是错误的根源。

于 2012-07-13T18:09:03.937 回答
1

Android 还没有完全支持 Go。如果将来某个时候他们添加一个 Go sdk,这将更容易。但就目前而言,除非您想自己修改 Go 的源代码或编写自己的一组库来处理 Android 的不同环境,否则这将很难甚至是不可能的。

于 2012-07-14T02:10:39.143 回答