无法在 mac 上运行 gomobile init 或版本

Mik*_*e M 3 go gomobile

我是一个围棋新手。我正在尝试在 MacOS BigSur 上安装 gomobile 进行评估,但无法完成该init步骤。

运行go version回报go version go1.17.6 darwin/amd64

按照说明进行操作,gomobile安装似乎可以正常工作(在明确添加gomobile到我的路径后),但运行initversion失败。

gomobile: go install golang.org/x/mobile/cmd/gobind failed: exit status 1
go install: version is required when current directory is not in a module
    Try 'go install golang.org/x/mobile/cmd/gobind@latest' to install the latest version
Run Code Online (Sandbox Code Playgroud)
gomobile version unknown: cannot test gomobile binary: exit status 1, no required module provides package golang.org/x/mobile/cmd/gomobile: go.mod file not found in current directory or any parent directory; see 'go help modules'
Run Code Online (Sandbox Code Playgroud)

我猜这与环境变量有关,但任何建议和/或帮助将不胜感激。

Mik*_*e M 5

我确实设法最终进行了gomobile设置,但过程很痛苦,而且官方的“实验”文档不完整且完全没有帮助。以下是在 MacOS (BigSur) 上对我有用的步骤:

\n

按照步骤从网站安装 GO

\n

安装gomobile

\n
go install golang.org/x/mobile/cmd/gomobile@latest\n
Run Code Online (Sandbox Code Playgroud)\n

安装 Xcode 命令行工具。如果已安装但未找到,您可能需要运行以下命令:

\n
xcode-select -r\n
Run Code Online (Sandbox Code Playgroud)\n

安装 Android NDK。这可以通过 Android Studio\xe2\x80\x99s Tools->SDK Manager 来完成。需要确保安装的版本受gomobile支持,因为gomobile不支持最新版本的NDK。

\n

更新 shell 以包含以下导出:

\n
export PATH=$PATH:/Users/mikem/go/bin\nexport ANDROID_HOME=/Users/mikem/Library/Android/sdk\nexport ANDROID_NDK_HOME=/Users/mikem/Library/Android/sdk/ndk/23.1.7779620\n
Run Code Online (Sandbox Code Playgroud)\n

创建工作目录

\n
mkdir myworkdir\n
Run Code Online (Sandbox Code Playgroud)\n

创建模块目录

\n
mkdir mymodule\ncd mymodule\n
Run Code Online (Sandbox Code Playgroud)\n

在该模块目录中创建一个.go文件并为其提供一些内容。请注意,包名称应与模块名称不同,否则绑定可能会抱怨找不到任何内容

\n
package mymodulelib\n\nimport "fmt"\n\nfunc SayHello() {\n        fmt.Println("Hello from mymodule")\n}\n
Run Code Online (Sandbox Code Playgroud)\n

从工作目录初始化模块

\n
go mod init mymodule\n
Run Code Online (Sandbox Code Playgroud)\n

安装 gobind - 它会抱怨你应该使用该go install方法而不是go get(已弃用),但go install不起作用(至少对我来说)

\n
go get golang.org/x/mobile/cmd/gobind\n
Run Code Online (Sandbox Code Playgroud)\n

回到模块目录,初始化然后生成iOS和android代码

\n
cd mymodule\ngomobile init\ngomobile bind -target ios\ngomobile bind -target android\n
Run Code Online (Sandbox Code Playgroud)\n