這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
原文地址:on Android">Go, on Android
作者:橙子InfinityGo 語言的高效一直讓我想將之用於 Android 的開發上,很多事情,單純從代碼角度考慮,用 Go來寫會方便很多。這篇文章只是一個執行個體,沒啥實質性的意思,只是開發時的一些記錄。
我不想說如何獲得 Go 的源碼或是如何編譯之,那些在網上到處可找,推薦直接參考 Go 語言官方網站(http://golang.org/),裡面許多有價值的東西。
同樣的參考官方網站所述,我們可以將 Go 環境編譯為支援 arm 的,使用該環境編譯出的程式,也可運行於Android。
那麼先編譯 Go 本身,讓它可以編譯 arm 下的應用,修改一下 .bashrc 檔案on Android" title="[轉載]Go, on Android"/>
在最後加上以下條目on Android" title="[轉載]Go, on Android"/>
PATH 取決於你的 Go 源碼下載到哪裡,不一定和我是一樣的。
然後就編譯源碼吧,很簡單的了on Android" title="[轉載]Go, on Android"/>
稍等一會就成功編譯了,編譯後會在 $GOROOT/bin 下產生一堆檔案on Android" title="[轉載]Go, on Android"/>
有這些就表示成功了,如果你以前編譯過 Go,該目錄下包含 8g,8l 等檔案的話,有可能切換為 arm編譯會失敗。這個時候可以把整個 Go 源碼刪除,再重新下載編譯。
我寫了一個簡單的更新模組,實現方法如下所示
1) 編寫 Go模組,該模組的實現很簡單,啟動時傳入目前的版本號,然後從伺服器端取回最新版本號碼比對,如果伺服器端的版本號碼較新,則返回新版本下載路徑,否則返回Null 字元串(安全起見,伺服器位址隱去部分,呵呵)on Android"/>
這邊用的編輯器是vi,背景被設為半透明了,所以後面透出個案頭背景,也許有些人會覺得這樣很不爽,不過我的習慣是把一些資料等開在後面,這樣邊 coding就可以邊看資料,不用反覆切換視窗,還是挺方便的。
圖內是完整源碼,為了在一屏內顯示完,做了一些行合并的事情(咳,屏小沒辦法。。),大家真正寫代碼的時候不要學這個哦:)
2) 編譯 Go 代碼,按以下幾個命令來,注意 arm 的編譯器是 5g,連結器是 5lon Android" title="[轉載]Go, on Android"/>
編譯完之後,會得到一個 5.out 檔案,將該檔案改名為 update,注意它並不需要尾碼名
3) 驗證功能,將 update 檔案直接放到 Android 內執行試試on Android" title="[轉載]Go, on Android"/>
此時即表示驗證成功
4) 在 apk 中使用這個檔案
實在是懶得寫了,直接參考老外的文章吧,其實很簡單的主要做法是:將 update 放到 assets目錄下,然後在程式中將其儲存到私人目錄並賦予許可權,然後執行並拿到傳回值。至於說為什麼不把這個模組做成 jni 形式,是因為目前的 Go 還不支援 jni,但是我相信不久後一定會有,畢竟這是Google 自家的東西,怎麼說都會漸漸的把對 Android 的支援給完善了。
參考資料請點此進入
好了,到此為止吧,enjoy your coding :)