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 がありません

コードのどこか、またはおそらくインポートしたライブラリの 1 つで、従来の Linux ユーザー空間を想定していますが、Android ではそうではありません。

おそらく「GOOS=linux」が間違いの元です。

于 2012-07-13T18:09:03.937 に答える
1

AndroidはまだGoを完全にはサポートしていません。将来のある時点で、Go SDKを追加すると、これは簡単になります。しかし、今のところ、Goのソースを自分で変更したり、Androidのさまざまな環境を処理するために独自のライブラリのセットを作成したりしたくない場合を除いて、これは困難または不可能になります。

于 2012-07-14T02:10:39.143 に答える