【笔记】golang开发android app小记
golang开发android app小记Google和Oracle打过Java的官司以后就开始慢慢转kotlin了。从JVM虚拟机打官司,改成android用JVM从堆栈平衡转寄存器模式,再到语言更新kotlin,够折腾。kotlin,勉强可以接受吧,就是开发的时候各种stackoverflow/google oriented programming。最近写了不少go了,想起来以前有本书是说sk
golang开发android app小记
Google和Oracle打过Java的官司以后就开始慢慢转kotlin了。从JVM虚拟机打官司,改成android用JVM从堆栈平衡转寄存器模式,再到语言更新kotlin,够折腾。kotlin,勉强可以接受吧,就是开发的时候各种stackoverflow/google oriented programming。最近写了不少go了,想起来以前有本书是说skype的android应用是怎么用c++开发的;前些年也看到过android的ruby sdk;还有cordova和phonegap用js一套全开发;于是想着,go可以开发android app吗?琢磨着go的wasm的支持,google一下,我去,果然android已经可以用go开发了。
其实gomobile什么都封装好了,就往里写业务代码就好了,它不但可以generate android app,连ios和macosx都一并包揽了。我们按照教程做就好了:
go get golang.org/x/mobile/cmd/gomobile
go get -d golang.org/x/mobile/example/basic
# 先搞个android sdk+ndk
# export ANDROID_HOME=/path/to/sdk # (ndk=/path/to/sdk/ndk-bundle)
./bin/gomobile build -target=android golang.org/x/mobile/example/basic
弄完了,它就不停报错:
"Unexpected unclosed action in template clause"
但是我直接 go build golang.org/x/mobile/example/basic
然后 ./bin/basic
这个程序是可以跑在我的mac上的。
android build里,哪个template出问题了?版本不兼容?搜索了一下 template.New
没有几个地方,在 Execute
的地方都加个 fmt.Println
然后啥都没有打印出来;于是就从 main.go
顺藤摸瓜,在函数入口一个一个加 fmt.Println
,最后发现,这个错误是从 cmd/gomobile/env.go
里抛出来的;go list
的错误,好像网上不少人遇到了 go list
的问题,这里是 go list -e -f '{{range context.ReleaseTags}}{{if eq . "go1.14"}}{{.}}{{end}}{{end}}' runtime
报错。我只想让它pass,不求甚解。所以看了一眼,这不就是如果有 go1.14
这项把这个string输出来么,干嘛这么复杂,直接 out := "go1.14"
就好了。改完,再跑一遍build,好了,出了个apk文件。 adb install
到模拟器上,哔哔,可以运行了。虽然用OpenGL这个UI得自己画,JNI也可以调标准UI库,后面就是一点点积累go的android代码库了。
更多推荐
所有评论(0)