文档章节

go 1.4支持Android的说明(译文)

itfanr
 itfanr
发布于 2014/12/11 21:11
字数 809
阅读 32
收藏 1


https://docs.google.com/document/d/1N3XyVkAP8nmWjASz8L_OjjnjVKxgeVBjIsTr5qIUcA4/edit?pli=1

摘要

我们计划为Android平台引入GO支持。我们会关注于对用GO来开发游戏提供支持。

背景

Android是为了运行APP而设计的操作系统。一个app依赖于更多的平台库和服务(比传统Unix操作系统),这意味着如果没有新的API,Android上的GO运行时的一个端口,那将不会有多大用处。

提供一个Android平台的等价的GO是难以避免的。平台是用java写的,有很多的api接口。任何用GO来封装封装这些API的尝试都会得到一个不好的结果:手动编译封装会跟不上特色,自动生成封装会导致丑陋的GO。无论哪种方法,都会很慢。

然而,在Android NDK中提供了用非常少的基于C的API写的Android app子集:游戏。编译GO for Android来提供NDK的等效的特色是可行的。

建议

在GO 1.4周期里,GOOS=android会引入到GO 仓库,和Android支持cgo一起。Dalvik/ART-loadable .so文件会用外部的Android NDK链接器来生成。

编译面板方面,我们会维护一个交叉编译器来在Linux主机上运行GO 工具,同时使用adb工具来在Android模拟器上运行测试二进制包。

我们会引入子仓库,go.mobile,它包括:

  • 绑定OPENGL OpenSL 和OpenMax

  • java->GO绑定器。给定一个Go包,这会使得让Java代码调用它,这样游戏菜单UI可以用标准sdk来编译。(因为go定义了绑定,这也使得使用同样的代码来绑定像Objective C语言成为可能)

  • Android studio编译系统集成

二进制包会在工程稳定后发布。


附原文:

Go support for Android
David Crawshaw
June 2014
Abstract
We propose to introduce Go support for the Android platform. The focus will be on supporting
games written in Go. The APIs will be those defined in the Android NDK.
Background
Android is an operating system designed for running apps. An app relies on far more platform
libraries and services than are provided by a traditional Unix operating system, which means a
direct port of the Go runtime to Android without new APIs would not be particularly useful.
Providing a Go equivalent to the Android platform is intractable. The platform is written in Java
and has a huge API surface. Any attempt to wrap these APIs in Go would give an undesirable
result: manually built wrappers would lag in features, automatically generated wrappers would
lead to ugly Go. And either way, it would be slow.
There is however, a subset of Android apps written against a much smaller C-based API
surface provided in the Android NDK: Games. It is feasible to build Go support for Android
providing the equivalent features found in the NDK.
Proposal
During the Go 1.4 cycle, GOOS=android will be introduced to the Go repository, along with cgo
support on Android (contributed by Elias Naur). Dalvik/ART-loadable .so files will be produced
using the external linker provided in the Android NDK.
For the build dashboard, we will maintain a cross-compiling builder that runs the Go tool on a
linux host and uses the adb tool to run test binaries on a stock Android device.
We will introduce a subrepository, go.mobile. It will house:
● Bindings for OpenGL, OpenSL, and OpenMAX as exported through the Android NDK.
● A Java -> Go language binding generator. Given a Go package, this will let Java code
call it, so game menu UIs can be built in the standard SDK. (As Go defines the binding, it
also makes it possible to use the same code to bind to languages like Objective C.)
● Android Studio build system integration.
Binary releases will be provided after the project has stabilized.


© 著作权归作者所有

上一篇: AVI格式简介
itfanr
粉丝 120
博文 486
码字总数 172696
作品 1
济南
程序员
私信 提问
[译] Android 生命周期备忘录 —— 第四部分:ViewModel、半透明 Activity 及启动模式

原文地址:The Android Lifecycle cheat sheet — part IV: ViewModels, Translucent Activities and Launch Modes 原文作者:Jose Alcérreca 译文出自:掘金翻译计划 本文永久链接:githu...

Android_开发者
06/26
0
0
[译] 将通用安卓音乐播放器转化为 instant 应用

原文地址:Making the UAMP sample an instant app 原文作者:Oscar Wahltinez 译文出自:掘金翻译计划 本文永久链接:github.com/xitu/gold-m… 译者:Mirosalva 校对者:Qiuk17 从 Androi...

Android_开发者
05/05
0
0
[译] Android 上一次编写,随处测试

原文地址:Write Once, Run Everywhere Tests on Android 原文作者:Jonathan Gerrish 译文出自:掘金翻译计划 本文永久链接:github.com/xitu/gold-m… 译者:Rickon 校对者:xiaxiayang 在...

Android_开发者
03/15
0
0
[译] 如何在 Google Play 应用商店中发布 PWA

原文地址:How to Get a Progressive Web App into the Google Play Store 原文作者:Mateusz Rybczonek 译文出自:掘金翻译计划 本文永久链接:github.com/xitu/gold-m… 译者:Baddyo 校对...

👊Badd
05/30
0
0
[译] Android 的多摄像头支持

原文地址:Camera Enumeration on Android 原文作者:Oscar Wahltinez 译文出自:掘金翻译计划 本文永久链接:github.com/xitu/gold-m… 译者:luoqiuyu 校对者:hanliuxin5 从 Android P 开...

Android_开发者
2018/09/12
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Rust:最小化窗口后 CPU占用率高 (winit,glutin,imgui-rust)

最近试着用 imgui-rust 绘制界面,发现窗口最小化后CPU占用会增大。 查询的资料如下: https://github.com/rust-windowing/winit/issues/783 https://github.com/ocornut/imgui/issues/1151 ...

reter
24分钟前
8
0
cloud-zuul路由网关

九、zuul路由网关 概述 1.1 能干嘛 路由、过滤 路由基本配置 路由访问映射规则 十、springCloud config分布式配置中心

榴莲黑芝麻糊
24分钟前
8
0
Circuit Breaker模式

Circuit Breaker模式会处理一些需要一定时间来重连远程服务和远端资源的错误。该模式可以提高一个应用的稳定性和弹性。 问题 在类似于云的分布式环境中,当一个应用需要执行一些访问远程资源...

mskk
37分钟前
15
0
写论文之前的准备都有哪些?干货来了!

原文链接:https://www.lwfdy.com/archives/144.html 之前跟大家谈了许多有关于初稿修改以及写作事项需要注意的问题,那么今天我们来说一说,在写之前,我们需要做哪些准备呢,为了做到下笔如...

辅导员
44分钟前
11
0
idea快捷键

Alt + Enter 引入类 Ctrl + O 查看我们继承的类或者接口中的方法,以及我们要实现的方法 Ctrl + Alt + b 查看接口实现类中方法(就是我们使用接口编程时,在调用实现类方法处直接Ctrl+鼠标左...

行者终成事
51分钟前
12
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部