原文https://blog.weizhe.net/?p=534 有兴趣的同学欢迎来一起玩:https://github.com/vzever/gomobileapp
go1.5beta2已经发布,正式版将在8月份发布.而早在go1.4就已发布了golang/mobile项目用以实现Android应用的开发.当前gomobile的环境部署已经相对成熟了.但项目声明必须基于go1.5,所以go1.4的同学必须要升级.因为在go1.4执行gomobile init的时候是不能通过的.
注:如果没有网络权限访问golang.org,请创建$GOPATH/src/github.com/golang的软链接为$GOPATH/src/golang.org/x,并且后续go get的时候把golang.org/x/ 替换为 github.com/golang/
第一步. 部署go1.5beta2
官方网站下载go1.5beta2的linux安装包,并按照官网部署到/usr/local. 配置/usr/local/go/bin 到$PATH中,如下写入/etc/profile 或$HOME/.profile
export PATH=$PATH:/usr/local/go/bin
然后还需要将其他golang环境变量加入$HOME/.profile
exprot GOPATH=$HOME/gocode/
export PATH=$PATH:$GOPATH/bin
第二步 部署golang/mobile
参照golang/mobile文档执行以下命令 $ go get golang.org/x/mobile/cmd/gomobile $ gomobile init -v 如果提示没有权限如下
#Building standard library for android/arm.
runtime
go install runtime: mkdir /usr/local/go/pkg/android_arm/: permission denied
gomobile: go install std for android/arm failed: exit status 1
需要授权/usr/local/go/pkg给当前用户
# chown -R myname:myname /usr/local/go/pkg
然后再次执行
$ gomobile init -v
Downloading https://dl.google.com/go/mobile/gomobile-ndk-r10e-linux-x86_64.tar.gz.
Downloading https://dl.google.com/go/mobile/gomobile-openal-soft-1.16.0.1.tar.gz.
Building standard library for android/arm.
runtime
errors
sync/atomic
...
testing/quick
net/rpc/jsonrpc
Done, build took 23s.
第三步 使用go run 在桌面测试程序
$ cd $GOPATH/src/golang.org/x/mobile/example/basic
$ go run main.go
第四步 使用gomobile直接生成apk格式Android应用.
$ cd $GOPATH/src/golang.org/x/mobile/example/basic
$ gomobile build
$ ls
main.go basic.apk
或者连接android手机,确保adb shell可以登录手机之后,直接编辑并安装APK
$ cd $GOPATH/src/golang.org/x/mobile/example/basic
$ gomobile install
最后安装到Android L
除network.apk无法启动外,basic audio和sprite都正常.甚至github.com/mmchugh/gomobile-examples的cube也运行正常.以下为截图
手机截图 basic/audio/sprite/cube
PC截图
有疑问加站长微信联系(非本文作者)

很好
大神啊!~~!牛
必须加个朋友啊。。留个联系方式吧
太棒了。我尝试过了,只有第三步go run main.go不成功,出现work.h:6:23: fatal error: GLES2/gl2.h: No such file or directory #include <GLES2/gl2.h>.
$ cd $GOPATH $ find . -name gl2.h ./pkg/gomobile/android-ndk-r10e/arm/sysroot/usr/include/GLES2/gl2.h
你确定执行 $ gomobile init -v 了吗? 下载成功了吗? Downloading https://dl.google.com/go/mobile/gomobile-ndk-r10e-linux-x86_64.tar.gz. Downloading https://dl.google.com/go/mobile/gomobile-openal-soft-1.16.0.1.tar.gz.
或者试试 # apt-get install libgles2-mesa-dev
gomobile init -v了,也自动成功了那两个。
执行了gomobile init -v,成功下载了那两个文件。但是init过程中没有出现permission denied,也就是说我的init过程没有执行mkdir /usr/local/go/pkg/android_arm/这一步。我猜可能是github.com/golang/mobile的代码更新太快了。
对cube进行go build出错,原因还是github.com/golang/mobile更新太快,package app和package event的代码已经发生变化。我尝试修改cube的代码,go build通过了,但是在手机上运行不成功,一直黑屏无响应。
上面写错了,应该是gomobile build
先用我的fork吧 github.com/vzever/gomobile-examples 两天前已经push request给原作者了
github.com/vzever/gomobileapp 我写的几个事例 可以一起玩一玩
没错,现在pkg文件从$GOROOT/pkg/调整讨$GOPATH/pkg/了,就不会出现权限问题了. //#5楼 @weizhe86 执行了gomobile init -v,成功下载了那两个文件。但是init过程中没有出现permission denied,也就是说我的init过程没有执行mkdir /usr/local/go/pkg/android_arm/这一步。我猜可能是github.com/golang/mobile的代码更新太快了。
谢谢你了,cube终于可以愉快地运行了。看了你的代码,我发现我黑屏的原因是少写了一句a.EndPaint()。
请教, go get golang.org/x/mobile/cmd/gomobile 怎么直接报错: package golang.org/x/mobile/cmd/gomobile: unrecognized import path "golang.org/x/mobile/cmd/gomobile"
自己的问题,搞定了
是什么问题?
0.0自己修改的么?
我也是在go run main.go出现同样的错误 请问如何解决
第三步go run main.go不成功,出现work.h:6:23: fatal error: GLES2/gl2.h: No such file or directory #include <GLES2/gl2.h>. 请您帮助解决
请问是如何解决的,我也遇到相同的问题
请问生成的apk多大啊?
东西 不错啊.我能运行了.是不是编译了二进制 .还是转成了JAVA的?要是能有一个浏览器就完美了。。。做几个界面。后台用GO 。。。开发既美观又高效 .
终于可以用Go开发android了,找时间一定试一下
执行 ./gomobile init -v
Installing std.
Installing std.
Installing std.
Installing std.
Done, build took 0s.
提示这些东西,没有下载,怎么解决? 我手动下载了文件,但是只要放到pkg目录下面, 执行init后,pkg下面的文件都不见了