【笔记】golang开发android app小记

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代码库了。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值