9

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

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

4

4 回答 4

9

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

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

大多数 Android 框架都是用 Java 编写的,因此要与它交互,您的代码应编译为 *.so 库,该库将通过 JNI 接口加载和调用。当前的 Go 编译器(gc,不确定 gccgo)是不可能的。

也许您可以使用 绑定到 Android NDK API cgo,这将允许您从 API 级别 9(Android 2.3)开始在 Go 中创建应用程序

UPD:您现在可以使用 Go 中的 JNI 并使用 golang.org/x/mobile 包自动创建 java 绑定。在 Go 1.4 中,它仍处于试验阶段,但计划将其包含在 Go 1.5 版本中。该软件包还提供了 GL、音频和用户输入的绑定(希望他们也会添加 iOS 支持,并且有一天会兼容 Android 和 iOS)。无论如何,这个包主要面向用 Go 编写游戏,而不是在 Android 上使用 Go 作为 Java 的替代品。

于 2012-07-14T09:36:06.333 回答
7

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

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

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

于 2013-09-04T14:20:15.090 回答
2

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

“golang.org/x/mobile/app”库中有包应用程序选项,可让您编写适用于 Android(以及最终的 iOS)的应用程序。

于 2014-12-13T04:00:45.183 回答
1

第 1 步:使用 Golang 创建一个独立于平台的 GUI 库,该库使用 OpenGL 进行绘图,并创建一个智能事件和数据绑定系统来编写应用程序。任何使用 OpenGL 的软件都将或多或少具有可移植性。本质上,用 Golang 重写 Kivy。

第 2 步:创建基于自省/反射的包装器,以使用类似于 PyJNIus(也是 Kivy 项目)的 Java 类。

第 3 步:更加努力,因为要达到 Kivy 的水平还有很多工作要做

第 4 步:利润

于 2013-08-16T04:51:03.657 回答