首页 > 编程知识 正文

golang开发工具,android小项目开发app

时间:2023-05-05 11:24:30 阅读:196193 作者:4687

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/gomobilego get -d golang.org/x/mobile/example/basic# 先搞个android sdk+ndk# export ANDROID_HOME=/path/to/sdk # (ndk=/path/to/sdk/ndk-bundle)./风中的大门/gomobile build -target=android golang.org/x/mobile/example/basic

弄完了,它就不停报错:

"Unexpected unclosed action in template clause"

但是我直接 go build golang.org/x/mobile/example/basic 然后 ./风中的大门/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五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。