英文:
gomobile: command not found
问题
我有一些用golang编写的代码,编译成aar并通过gomobile在Android应用程序中作为库使用。在我的Windows机器上,一切都正常工作,因为我已经正确配置了一切。现在我正在尝试使用GitHub Action自动化构建过程,并且在使用ubuntu时设置它时遇到了问题。我认为我遇到的问题与在ubuntu上设置PATH有关。
这是构建项目的工作流程:
on:
push:
branches:
- main
- actions
name: "Build & Release"
jobs:
generate:
name: Generate codes
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- uses: actions/checkout@v3
- uses: actions/setup-go@v3
with:
go-version: '1.18'
- uses: actions/setup-java@v2
with:
distribution: 'zulu'
java-version: '11'
- name: Installing go server dependencies
working-directory: server
run: |
go install
- name: setup-android-tools
uses: maxim-lobanov/setup-android-tools@v1
with:
packages: ndk;19.2.5345600
- name: Build aar
working-directory: server
run: |
go get -d golang.org/x/mobile/cmd/gomobile
gomobile init
gomobile bind -v -o ../client/app/libs/server.aar -target=android ./lib
- name: Push aar to release
uses: ncipollo/release-action@v1
with:
artifacts: "${{ matrix.dir }}/client/app/libs/*aar"
tag: v1.0.${{ github.run_number }}
token: ${{ secrets.GITHUB_TOKEN }}
以下是由setup-go打印的Go环境变量:
GO111MODULE=""
GOARCH="amd64"
GOBIN=""
GOCACHE="/home/runner/.cache/go-build"
GOENV="/home/runner/.config/go/env"
GOEXE=""
GOEXPERIMENT=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOINSECURE=""
GOMODCACHE="/home/runner/go/pkg/mod"
GONOPROXY=""
GONOSUMDB=""
GOOS="linux"
GOPATH="/home/runner/go"
GOPRIVATE=""
GOPROXY="https://proxy.golang.org,direct"
GOROOT="/opt/hostedtoolcache/go/1.18.2/x64"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/opt/hostedtoolcache/go/1.18.2/x64/pkg/tool/linux_amd64"
GOVCS=""
GOVERSION="go1.18.2"
GCCGO="gccgo"
GOAMD64="v1"
AR="ar"
CC="gcc"
CXX="g++"
CGO_ENABLED="1"
GOMOD="/dev/null"
GOWORK=""
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build1913149098=/tmp/go-build -gno-record-gcc-switches"
以下是执行gomobile时出现的实际错误:
go: downloading golang.org/x/mobile v0.0.0-20220518205345-8578da9835fd
go: downloading golang.org/x/mod v0.4.2 go: downloading
golang.org/x/tools v0.1.8-0.20211022200916-316ba0b74098 go:
downloading golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1
go: upgraded golang.org/x/mobile v0.0.0-20220504144722-50dca8fc073d =>
v0.0.0-20220518205345-8578da9835fd
/home/runner/work/_temp/8ee34a1b-b28d-4781-9668-9aa41d593cce.sh: line
2: gomobile: command not found
如何成功使用GitHub Action构建aar
?任何帮助将不胜感激。
这是该项目的GitHub存储库。
英文:
I have some codes written in golang which is compiled to aar and used as library in android app via gomobile. On my windows machine everything works well as I have everything configured correctly. Now I am trying to automate the build process using GitHub action and having trouble setting it up using ubuntu. The problems I am having I believe they are associated with setting PATH which on ubuntu.
Here is my workflow for building my project
on:
push:
branches:
- main
- actions
name: "Build & Release"
jobs:
generate:
name: Generate codes
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- uses: actions/checkout@v3
- uses: actions/setup-go@v3
with:
go-version: '1.18'
- uses: actions/setup-java@v2
with:
distribution: 'zulu'
java-version: '11'
- name: Installing go server dependencies
working-directory: server
run: |
go install
- name: setup-android-tools
uses: maxim-lobanov/setup-android-tools@v1
with:
packages: ndk;19.2.5345600
- name: Build aar
working-directory: server
run: |
go get -d golang.org/x/mobile/cmd/gomobile
gomobile init
gomobile bind -v -o ../client/app/libs/server.aar -target=android ./lib
- name: Push aar to release
uses: ncipollo/release-action@v1
with:
artifacts: "${{ matrix.dir }}/client/app/libs/*aar"
tag: v1.0.${{ github.run_number }}
token: ${{ secrets.GITHUB_TOKEN }}
The following is Go ENV as printed by setup-go
GO111MODULE=""
GOARCH="amd64"
GOBIN=""
GOCACHE="/home/runner/.cache/go-build"
GOENV="/home/runner/.config/go/env"
GOEXE=""
GOEXPERIMENT=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOINSECURE=""
GOMODCACHE="/home/runner/go/pkg/mod"
GONOPROXY=""
GONOSUMDB=""
GOOS="linux"
GOPATH="/home/runner/go"
GOPRIVATE=""
GOPROXY="https://proxy.golang.org,direct"
GOROOT="/opt/hostedtoolcache/go/1.18.2/x64"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/opt/hostedtoolcache/go/1.18.2/x64/pkg/tool/linux_amd64"
GOVCS=""
GOVERSION="go1.18.2"
GCCGO="gccgo"
GOAMD64="v1"
AR="ar"
CC="gcc"
CXX="g++"
CGO_ENABLED="1"
GOMOD="/dev/null"
GOWORK=""
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build1913149098=/tmp/go-build -gno-record-gcc-switches"
And the following is the actual error I get when executing gomobile
> go: downloading golang.org/x/mobile v0.0.0-20220518205345-8578da9835fd
> go: downloading golang.org/x/mod v0.4.2 go: downloading
> golang.org/x/tools v0.1.8-0.20211022200916-316ba0b74098 go:
> downloading golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1
> go: upgraded golang.org/x/mobile v0.0.0-20220504144722-50dca8fc073d =>
> v0.0.0-20220518205345-8578da9835fd
> /home/runner/work/_temp/8ee34a1b-b28d-4781-9668-9aa41d593cce.sh: line
> 2: gomobile: command not found
How can I successifully build aar
using github action. Any help will be appreciated.
Here is GitHub repository for this project.
答案1
得分: 1
我建议在设置好Go语言环境后,使用以下步骤配置gomobile
:
- name: 安装 Gomobile
run: |
go install golang.org/x/mobile/cmd/gomobile@latest
go install golang.org/x/mobile/cmd/gobind@latest
go get golang.org/x/mobile/cmd/gobind
go get golang.org/x/mobile/cmd/gomobile
gomobile init
env:
GOPROXY: https://proxy.golang.org,direct
GO111MODULE: "on"
如果这样还不起作用,我很乐意进一步研究并在您的 GitHub 存储库中提出修复方案
英文:
I would recommend using this step to configure gomobile
once you setup Go on your runner:
- name: Install Gomobile
run: |
go install golang.org/x/mobile/cmd/gomobile@latest
go install golang.org/x/mobile/cmd/gobind@latest
go get golang.org/x/mobile/cmd/gobind
go get golang.org/x/mobile/cmd/gomobile
gomobile init
env:
GOPROXY: https://proxy.golang.org,direct
GO111MODULE: "on"
If it doesn't work out, I would be happy to look into this further and raise a fix on your GitHub repository itself
答案2
得分: 0
请从这里(https://go.dev/dl/)下载并安装go
。
打开命令提示符,输入go install golang.org/x/mobile/cmd/gomobile@latest
。
下载完成后,执行gomobile init
命令。
英文:
download & install go
from here ( https://go.dev/dl/ )
open cmd type go install golang.org/x/mobile/cmd/gomobile@latest
after download gomobile init
work.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论