由于很讨厌托管语言,所以这么多年一直躲着Java,所以也一直没有在Android下开发过东西。不过随着Goolge和Oracle矛盾的日益深化,这个问题似乎有解了,这不,最新的Golang 1.5已经开始支持编写编译Android原生程序了(1.4已经支持了,1.5连iOS也包括了进来,而且和1.4的代码不兼容,所以我就认为它是从1.5开始正式支持)。按捺不住冲动,一定要试一试,哪怕不能用,至少了解一下。
运行环境:BPI-M2 Android 4.4
开发环境:虚拟机 Lubuntu 14.04 x86
烧写BPI-M2的系统和安装虚拟机的Lubuntu不再啰嗦,直接从搭建环境开始。
首先下载的文件是 Golang 1.5.1 for Linux x86
没有编译,也不需要安装,直接将其解压到\usr\local下,这是官方推荐的路径,虽然我更喜欢\usr\src。
已经有了bin文件,所以编译的过程可以省略了。
在$HOME下建立一个文件夹,名字自取,用于存放后面下载的代码和编译支持文件。
同时在这个目录下的.profile文件中添加环境变量。
加了这三句话,名字不重要,只要一致就可以。保存后重启虚拟机系统。
重启之后运行go env查看是否正确,这一步不是必须的,但是之前有个手误而造成了可执行文件找不到,所以建议查看一下,包括cd $GOPATH。
Golang1.5的运行环境设置完毕,下面开始重要的部分了,
重要的部分,重要的部分,重要的部分要说三次
按照这两个路径分别建立好文件夹。这是因为golang.org被墙了,后面的东西需要从这里下载但是下不了。而github.com上还有相同的代码,只是路径不一样,这个一般都是可以上的,所以需要做个软连接。
建立好文件夹后,执行这个ln,把github.com上面的东西映射到golang.org下面,这样在编译时就不会找不到文件了。
开始下载Golang1.5 Android编译环境的项目,名字叫gomobile。刚才忘说了,go get之前要先安装git,安装都会吧,不重复了。
下载之后cd 进入图中的路径,执行命令go buile,就会生成gomobile这个可执行文件了。后面的编译都靠它了。
为方便使用,可以将它扔进$GOROOT的bin里,这样不管在什么地方都可以执行了。当然也可以再去增加一个环境变量,随意。
下面开始自动搭建编译环境,基于gomobile来完成的
执行gomobile init -v 会自动下载所有需要的东西
开始执行,连ARM NDK都包括在里面。首先下载,然后解压,全部自动完成,不需要人工干预
整个文件不是很大,根据网速快慢决定时间
完成之后就算是搭建成功了,下载的包里面有例子,进去编译一下试试
还有其他的例子,可以随意编译。编译之后会出现apk这个文件,直接到Android上安装运行,整个过程没有涉及到任何Java的东西,都是本地原生的,这是我最喜欢的一点。当然,要是需要使用Android系统标准的控件,那就没办法了,目前只能是Java。
运行效果:
Basic,那个三角可以跟着鼠标走,而且本身颜色变换。帧率显示60。
背景太乱了,看不出来了,换背景
其他的程序,显示的动画,一丁点卡顿也没有,非常流畅,都是在1920x1080下跑的。
(完)