[譯] 用 Go 語言來看 Android

jopen 9年前發布 | 18K 次閱讀 Android

文章翻譯: 王韜懿

發表時間:2015 年 7 月 23 日

原文作者:Chester

文章分類:移動應用開發

關于本文

如今移動開發雖然三分天下,但主要市場還是 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

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!