我正在尝试使用该命令在 Windows 7 64 位中生成一个 .aar 文件,gomobile bind --target=android
它给了我标题错误。我一直在寻找,我找不到这个问题的答案。我正在尝试使用该程序在 Android Studio 中制作一个应用程序,它的第一部分如下:
package main (I changed it to "random" for the bind command to work - that's the thing to do, right?)
import (
"github.com/elazarl/goproxy"
"text/template"
"net/http"
"regexp"
"bytes"
"log"
"net"
)
错误如下:
gomobile: go build -buildmode=c-shared -o=C:\Users\\[User name]\AppData\Local\Temp\gomobile-work-101707703\android\src\main\jniLibs\armeabi-v7a\libgojni.so gobind failed: exit status 1
..\\[User name]\AppData\Local\Temp\gomobile-work-101707703\src\gobind\go_randommain.go:17:2: local import "." in non-local package
我正在遵循的指南之一是https://dzone.com/articles/gomobile-library-development-for-iosandroid,我正在做大部分事情。我从来没有听说过这种语言,所以我是一个初学者(如果这是一个愚蠢的问题,我很抱歉)。
根据我阅读的内容,这可能是因为程序中有例如“.\greetings”(与“.\”有关的东西与相对路径有关),所以我不知道为什么会这样. 有人可以帮忙吗?如果我需要提供更多数据,请告诉我,我会提供。
提前致谢!
编辑:我尝试将“package random”更改为“package thing”,错误的最后一部分将“random”更改为“thing”:
..\\[User name]\AppData\Local\Temp\gomobile-work-101707703\src\gobind\go_thingmain.go:17:2: local import "." in non-local package
我不应该尝试转换这个程序,因为它是以无法转换的方式编写的吗?或者是其他东西?
如果它有任何帮助,我在 Windows 中的用户名有一个空格,尽管在 CMD 中它显示为未完成的名称和 ~1,所以它至少在命令返回时没有空格。我不明白那些 17:2 的东西指向哪里。我知道它是一行和一列,但我不知道去哪里寻找错误,因为我什至试图转到生成的文件但我找不到它。当我复制创建的文件夹时,它只有 4 或 5 个文件,没有文件夹,所以我看不到该文件中的错误来理解这一点......希望有人知道答案或可能的答案。
编辑 2:现在我决定尝试在导入后删除所有代码,并且只在 .go 文件中显示代码中显示的内容,它给出了以下错误:
gomobile: C:\Users\[User name]\go\bin\gobind.exe -lang=go,java -outdir=C:\Users\[User name\AppData\Local\Temp\gomobile-work-847973191 . failed: exit status 1
no exported names in the package "."
no exported names in the package "."
no exported names in the package "."
no exported names in the package "."
而且我没有任何“。” 在文件中,所以我可能会认为“。” 指的是一些包,但我不知道,因为只有 4 个而不是 7 个被导入。刚才我删除了文件中的所有内容,除了第一行说它package random
给出了与上面相同的错误。有什么帮助吗?(如果我需要提供更多信息,请告诉我)我不明白是什么原因造成的,因为我在 Internet 上看到的唯一示例与文件中的相对导入有关。我的 GOPATH 有错吗?我有它的默认值%USERNAME%/go
。这是一个可执行文件。我试图通过将包更改为随机将其转换为库。我不知道它是否与此有关,或者即使我需要更改其他任何内容以将其用作库。
编辑3(太多,但我试图提供尽可能多的信息):
我试图逐个删除代码,直到第一个错误变为其他错误,程序中唯一剩下的代码是:
package thing
func ExternalIP()
使用此代码,它仍然会给出第一个错误。如果我尝试删除第一行,则会出现期待包的错误。但是,如果我尝试更改该函数的名称,甚至将 E 更改为 e,则会出现第三个错误。我不知道该函数名称有什么特殊之处,但我在整台计算机上的任何文件中都找不到“ExternalIP”名称,所以我不知道这与非本地导入有什么关系像那样。如果有帮助,我试图放入 Android Studio 的程序如下:https ://github.com/mondul/PS3-Proxy/blob/master/ps3-proxy.go (这不是我的,我打算如果我能理解如何将其转换为 .aar 文件然后在 Android Studio 上使用它,请给这样做的人很多功劳)。
编辑4:
我尝试使用 GOPATH/src/folder 中的文件 ps3-proxy.go(我要转换的文件)运行该命令,但它给出了不同的错误:
gomobile: go build -buildmode=c-shared -o=C:\Users\[User Name]\AppData\Local\Temp\gomobile-work-722000459\android\src\main\jniLibs\armeabi-v7a\libgojni.so gobind failed: exit status 2
# runtime/cgo
clang.exe: error: unknown argument: '-fno-addrsig'
我不知道这意味着什么,因为我什至无法在 Google 上使用 clang.exe 找到有关此特定错误的信息,所以我不知道我是否“解决”了主要问题但又创建了另一个问题,或者我是否应该没有把文件放在那里,然后我回到主要问题(即使我做对了,我还有其他问题,我也找不到任何关于它的问题......)。
编辑 5(很酷,只有 5 个……):
我尝试了另一个代码并在其他测试中做同样的事情,我得到了与原始程序相同的错误,所以它可能与程序无关......太棒了,现在我完全不知道该怎么做。代码如下,以防万一它可能有用:
package random
import (
"math/rand"
"time"
)
func SudoRandomNumer() int {
return rand.Intn(time.Now().Second())
}
这是一个错误吗?我想我按原样安装了所有东西(好吧,或者可能没有,或者这可能不会发生)。我已经尝试卸载并再次安装大约 3 次。它仍然不起作用。我从一个网站上获取的代码,其中包含如何做我想做的事情的示例:http: //www.codingvelocity.com/2015/08/08/go-bind-intro.html。