首先安裝1.5以上版本的go語言環境,這個大家都應該有了。
然後需要通過科學上網方法去下載下傳gomobile指令:
接着需要通過gomobile init去下載下傳android ndk的部分toolchain,執行下面的指令:
可以去android網站上下載下傳一份最新的ndk以備用,将來遇上缺什麼檔案的話,就從ndk裡面複制就是了。
一切就緒了之後,先運作個例子試一試吧:
成功之後,就生成了basic.apk。
可以通過gomobile install指令安裝這個apk:
當然啦,apk都生成了,直接用adb install就是了。
basic例子的功能很簡單,紅底上畫一個綠色漸變的三角形,随着手指的點選事件,三角形的直角頂點的位置跟着一起走。
純用go寫的android代碼,與android ndk用c++寫的代碼異曲同工,都是用opengl/es的指令直接作畫的方式。
我們來看下這個不長的例子,涉及到go語言相關或者是opengl相關的不了解的不要緊,後面我們都會介紹,我們先過幾個例子找找感覺:
第一步是引用了一堆要用的包,跟app相關,event相關,opengl相關。
基本是opengl相關的幾個值,還有顔色,x和y的位置。
先向app.main中注冊我們的主函數。
下面就是一個典型的消息驅動的循環,app将事件傳給我們的主函數,我們根據事件來處理。gui系統的代碼的架構都差不多哈。
後面基本上就需要一些opengl的知識了
通過glutil.createprogram建立一個程式,opengl裡程式是将頂點着色器和片段着色器綁定在一起的實體。
onpaint的過程,是個标準的opengl繪制三角形的流程:
下面是三角形的三個頂點的坐标:
最後是我們建立頂點着色器時所使用的glsl:
我們來對照下,android用ndk來寫這種native的activity都需要做什麼吧。總的代碼比go版本的還是長不少,我們就挑個android的主函數看一下:
android例子中用的opengl比上面go的例子要簡單一些:
上面的例子,除去了opengl的知識以外,我們不需要知道任何跟android系統相關的知識。
别小看了這段小小的代碼,在gomobile的支援下,它可是跨平台的喲。
下一期,我們讨論更加激動人心的話題,如何從android的java代碼調用go的代碼。