天天看點

用Go語言寫Android應用 (1) - 用Go寫本地應用用Go語言寫Android應用 (1) - 從看個小例子開始

首先安裝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的代碼。

繼續閱讀