Android即將支持GO語言,從游戲開始
(注* 最近nodejs***的Web框架作者TJ決定告別nodejs去寫go了,此文也許揭示了一些原因)
David Crawshaw
2014年6月
摘要
我們打算在Android平臺引入Go,重點(diǎn)是支持在Android上使用Go寫游戲. 將會使用現(xiàn)有的API接口。
背景
Android是是支承應(yīng)用程序的操作系統(tǒng)。它能比Unix系統(tǒng)提供更多的庫和服務(wù),重用現(xiàn)有接口使Go遷移到Android的過程會更加簡單。
在Android平臺讓GO實(shí)現(xiàn)與JAVA完全一樣的功能是非常困難的。這個用JAVA寫的平臺有著海量的API。任何將這些API用Go封裝都會遇到:手動封裝無法應(yīng)用***的特性,自動封裝的Go的代碼沒法看,無論如何這個過長可能會很長。
然而,安卓上用于編寫游戲所需要的基于C語言的API只是安卓API中的一個比較小的子集,所以用Go來實(shí)現(xiàn)NDK中一些等價的功能是可行的。
但是,Android應(yīng)用中有一些較少的基于C寫的API接口,他們在Android NDK中:對,就是游戲用到的這些接口。因此讓GO支持這些NDK中的特性是較為可行的。
提議
在Go1.4的開發(fā)周期中,通過設(shè)置GOOS=android,Android將可以支持go代碼了,同時也支持cgo(Elias Naur提供)。 Dalvik/ART 也將可以加載,因此會產(chǎn)生一需要連接到NDK的額外文件。
在編繹面板,我們會提供一個交叉編繹器,用來在linux上運(yùn)行Go的一些工具,即可以使用adb工作在Android設(shè)備上測試你的編繹文件。
這里有一個新的項(xiàng)目go.mobile,它會提供:
- 綁定OpenGL, OpenSL和OpenMAX 這些從NDK暴露的接口。
- JAVA到Go的綁定生成器。比如你有一個Go的庫,這玩意可以讓java代碼調(diào)用它,因此游戲菜單的UI可以在標(biāo)準(zhǔn)的SDK中創(chuàng)建。(就想Go中的綁定,這可以讓同樣的代碼去綁定其它語言,比如Objective-C)。
- 與Android Studio集成
- 在項(xiàng)目穩(wěn)定可用時,將發(fā)布發(fā)行版。