文章翻譯:王韜懿
發(fā)表時間:2015 年 7 月 23 日
原文作者:Chester
文章分類:移動應(yīng)用開發(fā)
如今移動開發(fā)雖然三分天下,但主要市場還是 Android 和 IOS ,但是對于一些中小型公司來說單獨開發(fā)的成本明顯比較大。2014 年蘋果推出了全新的語言 Swift ,而作為對頭的 Google 也有一門自己獨特的語言,那就是 Go 語言,Go 語言不僅能用來進行 Android 開發(fā),而且也正在適配 IOS 平臺,下面讓我們來入個門吧。
隨著 Go 1.5 的即將發(fā)布,在 Android 和 IOS 上編譯 Go 語言的代碼正在被引進。你既可以完全用 Go 語言來寫你的應(yīng)用并用 opengl 來做 UI 界面,也可以寫一個可以和原生的 Android 和 IOS 交互的 Go 類庫。這為跨平臺類庫打開了大門,這讓我激動不已。Google 為了確保用 Go 語言寫出來的 apps 不會被 apple store 拒之門外而做了很多跑腿兒活,比如Ivy 。
讓我們開始吧,首先你必須安裝一個可運行的 go 1.5. 你可以從源代碼編譯或者使用一個之前編譯好的版本。我在寫這篇博客的時候在一臺 Linux 機器上使用的是 的 go 1.5 beta2. 我注意到在 Windows 上面使用的時候在 Go 語言源代碼里面會有一些警告信息,因此如果你正在使用 Windows 開發(fā),這可能不會起作用。
一旦你要安裝 Go 語言,你可以通過下面的命令行來安裝:
go get golang.org/x/mobile/cmd/gomobile
gomobile init
Android 平臺:你需要安裝 Android sdk 并且確保你的 adb 在你的環(huán)境變量里面,并且你的設(shè)備要能夠使用 adb 調(diào)試。
IOS 平臺:很不幸的是 IOS 并不是 100% 適配,因此可能不會有作用。通常在 IOS 上編譯你需要安裝 xcode 并寫使用 OSX 系統(tǒng)。
讓我們看看可不可以編譯并且安裝一些 go 語言的代碼。Google 已經(jīng)提供了一些我們可以使用的例子 。為了簡便起見我這里只安裝 android 版本(主要原因是因為我沒有 IOS 設(shè)備)。
接下來的命令就會安裝示例應(yīng)用:
gomobile install golang.org/x/mobile/example/basic
gomobile install golang.org/x/mobile/example/audio
gomobile install golang.org/x/mobile/example/sprite
雖然看起來不多,但是我覺得這相當(dāng)酷。上面的應(yīng)用使用純 go 語言寫的,并且使用 opengl 來做渲染。目前還有一些 api 限制,但是我相信不久就會改善。
好,我們可以編譯他人的代碼,但是它在干什么?讓我們看看在這個基本的示例應(yīng)用里面發(fā)生了什么。
//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 語言寫的應(yīng)用會從 app 包里面調(diào)用主函數(shù)。在這里你可以定義應(yīng)該發(fā)生什事件,你可以在事件文檔了解更多細節(jié)。這些事件基于注冊在應(yīng)用里面的接口。
上面的代碼遍歷在事件頻道里面所有的事件。配置事件定義了屏幕的大小,繪圖事件正在繪制我們長方形的顏色。點擊事件改變了長方形的位置,生命周期事件構(gòu)造或者析構(gòu)這個基于應(yīng)用焦點的項目。
我希望我已經(jīng)激起了你的興趣,研究 Go 語言可以參考這些文章。
所有的示例都可以在這里找到 http://golang.org/x/mobile/example
在這里可以找到文檔https://godoc.org/golang.org/x/mobile
源代碼在這里 https://github.com/golang/mobile
更多IT技術(shù)干貨: wiki.jikexueyuan.com
加入極客星球翻譯團隊: http://wiki.jikexueyuan.com/project/wiki-editors-guidelines/translators.html版權(quán)聲明:
本譯文僅用于學(xué)習(xí)和交流目的。非商業(yè)轉(zhuǎn)載請注明譯者、出處,并保留文章在極客學(xué)院的完整鏈接
商業(yè)合作請聯(lián)系 wiki@jikexueyuan.com
原文地址:http://www.codingvelocity.com/2015/07/23/go-mobile-intro.html