Go的Android API

我知道Go程序可以编译为Android。

在Go程序中如何使用Android特定的API,如获取GPS坐标或使用默认浏览器打开URL?

    恐怕目前几乎不可能。 在“Meet the Go Team”I / O会议中,来自Go团队的人表示,他们没有计划为Go增加Android支持。

    我们现在拥有的只是ARM架构的编译器。 不幸的是,这对于真正的Android应用程序来说几乎没有用,尽pipe这样的程序可以从Android设备上的命令行启动。

    大多数的Android框架都是用Java编写的,所以为了与它交互,你的代码应该被编译成一个* .so库文件,这个文件将会被加载并通过JNI接口调用。 目前的Go编译器(gc,不知道gccgo)是不可能的。

    也许你可以使用cgo绑定到Android NDK API,这将允许你在Go 9中创build应用程序(Android 2.3)

    UPD :现在可以使用Go的JNI,并使用golang.org/x/mobile包自动创buildjava绑定。 在Go 1.4中它仍然是实验性的,但是有计划将它包含到Go 1.5版本中。 该软件包还提供GL,audio和用户input的绑定(希望他们也可以添加iOS支持,并且有一天可以兼容Android和iOS)。 无论如何,这个软件包主要面向在Go上编写游戏,而不是使用Go作为Android上Java的替代品。

    看看我的答案从Android编程语言的Android应用程序 。 goandroid项目允许您在Go中通过NDK创buildAndroid应用程序。

    (免责声明:我是goandroid的作者)

    编辑 :正如在评论中提到的,Go 1.5增加了对纯Go的Android应用程序的官方支持,或者将Java和Go混合使用。 iOS也预计会在最后的1.5版发布。 有关更多详细信息,请参阅https://github.com/golang/mobile

    GO 1.4 doc说:“Go 1.4可以为运行Android操作系统的ARM处理器构build二进制文件,还可以构build一个.so库,使用移动子库中的支持包,可以由Android应用程序加载”

    在“golang.org/x/mobile/app”库中有软件包应用程序选项,可让您为Android(最终iOS)编写应用程序。

    第1步:使用Golang创build一个独立于平台的GUI库,使用OpenGL绘制graphics,并使用智能事件和数据绑定系统来编写应用程序。使用OpenGL的任何软件都将具有或多或less的便携性。 基本上,在Golang重写Kivy。

    第2步:创build类似于PyJNIus(也是Kivy项目)的Java类的自省/reflection包装器。

    第三步:加倍努力,因为要达到基维的水平还有很多事情要做

    第四步:利润