mobile 这个东西我也是初学,但是在过程中经历了太多的坑了,因此写一篇记录一下。
网上很多篇帖子 都把最简单的 安装方式介绍了,利用科学上网来下载
go get golang.org/x/mobile/cmd/gomobile
请尽量将代理修改为 GOPROXY https://goproxy.cn ,使用命令 go env -w GOPROXY=https://goproxy.cn
该命令需要你提前安装好 golang的sdk 本人使用的GOSDK的版本是 go1.16
之所以强调版本,是因为我之前使用的是 go1.15.15
这个版本的sdk 中缺少一些关键的文件,所以使用mobile的最低版本官网上也有介绍,minVersion 1.16。
关于怎么安装 sdk 和配置环境变量 这里不多做说明。
很多时候导致你失败的原因,都和你的环境变量离不开关系,请仔细检查你的环境变量,在goland编译器中可以查看
坑:如果你安装的时候没有选择默认路径,请一定要去环境变量中配置
如下图:
检验你的gosdk是否加入成功,进入cmd 输入命令
go env
1.主要介绍手动安装的过程 手动下载如下链接
github.com/golang/mobile
github.com/golang/mod
github.com/golang/xerrors
github.com/golang/tools
github.com/golang/sys
2.创建如下文件夹 src\golang.org\x (先创建src 在src中创建golang.org ...)
将下载好的文件如下图所示放置在文件夹内。注意目录结构!
3.打开cmd 先执行2个命令。
##将代理变为国内
go env -w GOPROXY=https://goproxy.cn (此处的代理地址可以通过go env 检查是否成功)
##(此步骤,可以不做)暂时忽略检查,待完毕之后,要执行 go env -w GO111MODULE=auto 或者是 go env -w GO111MODULE=on
go env -w GO111MODULE=off
4.开始执行手动安装。本人采取的是最笨的方法,这里大家灵活使用命令。
4.1首先将你创建的 src 文件夹,放置在你的 GOPATH 的目录之下。
4.2利用命令cd到该目录下的 如下2个文件夹(这是我的路径,你输入命令的时候按你自己的来!)此过程之中,上述所需条件如果不满足,就是报错,本人是将自己所遇到的所有错误总结之后,写的上述步骤。除此以外的请自行查找,祝你好运~
4.3.安装成功 你会得到2个可执行文件:
##查看
gomobile version
##把这个选项改回到auto
go env -w GO111MODULE=auto
4.4将生成的2个新文件放置到 你的 $gopath /go1.16\bin
目录之下
===============================================================
NDK的安装。这里也不过多赘述,利用Android studio 进入setting 在输入中搜索sdk 进入后第二个选项 就可以下载ndk。本人的ndk版本22.0.7026061
一定要进行环境变量的配置!
##用这个检验你到底配置成功与否
ndk-build
创建一个test.go文件 , 并将这个文件复制到 $GOPATH\src\Test 目录之下 (Test文件夹是我自己新创建的)这里的文件与路径的用法写法都是灵活可变的,我只把我成功的步骤展示出来
//这个的包名,会影响到你生成的 aar 或者是 jar 的名字
//这也将成为你在java代码中,静态调用方法函数的类名,详情可以去看下边在java中的调用方式
package forandroidtest
import (
"runtime"
"strconv"
"strings"
)
func TestRepeat(str string, count int) string {
return strings.Repeat(str, count)
}
func RunFuncName() string {
pc := make([]uintptr, 1)
runtime.Callers(2, pc)
f := runtime.FuncForPC(pc[0])
return f.Name()
}
func GetFuncParameter() string {
_, _, line, _ := runtime.Caller(1)
return strconv.Itoa(line) + "行"
}
我本人的做法是,将项目拷贝到了GOPATH\src\
之下,然后再执行的。
打开cmd 将路径cd 到 Test文件夹之下。此过程之中,上述所需条件如果不满足,就是报错,本人是将自己所遇到的所有错误总结之后,写的上述步骤。除此以外的请自行查找,祝你好运~
注意:下边的 Test
并不是我 在Test文件目录之下的 Test.go
这个文件,而是 Test
这个文件夹本身。
另外还需要注意的是,你执行命令时,要CD到Test
这个文件夹之下。
##你的文件夹叫什么,android 后边就写什么!如果你不是cd到你这个go工程的目录之下,请在android 加上你的路径(不过这样我个人没有成功过)
##会在当前目录下生成arr 和 jar
gomobile bind -target=android test
##生成apk
gomobile build -target=android test
把这个aar放到你android 目录工程之下
implementation files('libs/forandroidtest.aar')