[譯] 用 Go 語言來看 Android
關于本文
如今移動開發雖然三分天下,但主要市場還是 Android 和 IOS ,但是對于一些中小型公司來說單獨開發的成本明顯比較大。2014 年蘋果推出了全新的語言 Swift ,而作為對頭的 Google 也有一門自己獨特的語言,那就是 Go 語言,Go 語言不僅能用來進行 Android 開發,而且也正在適配 IOS 平臺,下面讓我們來入個門吧。
文章內容
隨著 Go 1.5 的即將發布,在 Android 和 IOS 上編譯 Go 語言的代碼正在被引進。你既可以完全用 Go 語言來寫你的應用并用 opengl 來做 UI 界面,也可以寫一個可以和原生的 Android 和 IOS 交互的 Go 類庫。這為跨平臺類庫打開了大門,這讓我激動不已。Google 為了確保用 Go 語言寫出來的 apps 不會被 apple store 拒之門外而做了很多跑腿兒活,比如 Ivy 。
入門指南
讓我們開始吧,首先你必須安裝一個可運行的 go 1.5. 你可以從 源代碼 編譯或者使用一個之前 編譯好的版本 。我在寫這篇博客的時候在一臺 Linux 機器上使用的是 的 go 1.5 beta2. 我注意到在 Windows 上面使用的時候在 Go 語言源代碼里面會有一些警告信息,因此如果你正在使用 Windows 開發,這可能不會起作用。
一旦你要安裝 Go 語言,你可以通過下面的命令行來安裝:
go get golang.org/x/mobile/cmd/gomobile
gomobile init
Android 平臺:你需要安裝 Android sdk 并且確保你的 adb 在你的環境變量里面,并且你的設備要能夠使用 adb 調試。
IOS 平臺:很不幸的是 IOS 并不是 100% 適配,因此可能不會有作用。通常在 IOS 上編譯你需要安裝 xcode 并寫使用 OSX 系統。
安裝一個示例
讓我們看看可不可以編譯并且安裝一些 go 語言的代碼。Google 已經提供了一些我們可以使用的 例子 。為了簡便起見我這里只安裝 android 版本(主要原因是因為我沒有 IOS 設備)。
接下來的命令就會安裝示例應用:
gomobile install golang.org/x/mobile/example/basic
gomobile install golang.org/x/mobile/example/audio
gomobile install golang.org/x/mobile/example/sprite
雖然看起來不多,但是我覺得這相當酷。上面的應用使用純 go 語言寫的,并且使用 opengl 來做渲染。目前還有一些 api 限制,但是我相信不久就會改善。
分析跨平臺開發的應用
好,我們可以編譯他人的代碼,但是它在干什么?讓我們看看在這個基本的示例應用里面發生了什么。
//excerpt from golang.org/x/mobile/example/basic func main() { app.Main(func(a app.App) { var c config.Event for e := range a.Events() { switch e := app.Filter(e).(type) { case lifecycle.Event: switch e.Crosses(lifecycle.StageVisible) { case lifecycle.CrossOn: onStart() case lifecycle.CrossOff: onStop() } case config.Event: c = e touchLoc = geom.Point{c.Width / 2, c.Height / 2} case paint.Event: onPaint(c) a.EndPaint() case touch.Event: touchLoc = e.Loc } } }) }
用 Go 語言寫的應用會從 app 包里面調用主函數。在這里你可以定義應該發生什事件,你可以在 事件文檔 了解更多細節。這些事件基于注冊在應用里面的接口。
上面的代碼遍歷在事件頻道里面所有的事件。配置事件定義了屏幕的大小,繪圖事件正在繪制我們長方形的顏色。點擊事件改變了長方形的位置,生命周期事件構造或者析構這個基于應用焦點的項目。
更多閱讀
我希望我已經激起了你的興趣,研究 Go 語言可以參考這些文章。
所有的示例都可以在這里找到 http://golang.org/x/mobile/example
在這里可以找到文檔 https://godoc.org/golang.org/x/mobile
源代碼在這里 https://github.com/golang/mobile
更多IT技術干貨:wiki.jikexueyuan.com
加入極客星球翻譯團隊: http://wiki.jikexueyuan.com/project/wiki-editors-guidelines/translators.html
版權聲明:
本譯文僅用于學習和交流目的。非商業轉載請注明譯者、出處,并保留文章在極客學院的完整鏈接
商業合作請聯系 wiki@jikexueyuan.com
原文地址: http://www.codingvelocity.com/2015/07/23/go-mobile-intro.html