1

我是围棋新手。我正在尝试安装 gomobile 以在 MacOS BigSur 上进行评估,但无法通过这init一步。

跑步go version回报go version go1.17.6 darwin/amd64

按照指示gomobile安装似乎可以正常工作(在明确添加gomobile到我的 PATH 之后),但正在运行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
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'

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

4

1 回答 1

2

我确实设法最终gomobile建立起来,但过程很痛苦,官方的“实验”文档不完整,根本没有帮助。以下是在 MacOS (BigSur) 上对我有用的步骤:

按照步骤从网站安装 GO

安装 gomobile

go install golang.org/x/mobile/cmd/gomobile@latest

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

xcode-select -r

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

更新 shell 以包含以下导出:

export PATH=$PATH:/Users/mikem/go/bin
export ANDROID_HOME=/Users/mikem/Library/Android/sdk
export ANDROID_NDK_HOME=/Users/mikem/Library/Android/sdk/ndk/23.1.7779620

创建工作目录

mkdir myworkdir

创建模块目录

mkdir mymodule
cd mymodule

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

package mymodulelib

import "fmt"

func SayHello() {
        fmt.Println("Hello from mymodule")
}

从工作目录,初始化模块

go mod init mymodule

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

go get golang.org/x/mobile/cmd/gobind

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

cd mymodule
gomobile init
gomobile bind -target ios
gomobile bind -target android
于 2022-01-12T15:40:12.487 回答