導航:首頁 > 操作系統 > androidgo語言環境搭建

androidgo語言環境搭建

發布時間:2022-12-18 04:59:46

『壹』 如何配置go語言集成開發環境 vim

1、編譯vimgdb

下載vimgdb73和vim73
mkdir -p ./tmp
cd tmp
tar zxvf ../vim-7.3.tar.gz
unzip ../vimgdb-for-vim7.3-master.zip
mv vimgdb-for-vim7.3-master vimgdb-for-vim7.3
patch -p0 < vimgdb-for-vim7.3/vim73.patch
cd vim73

安裝依賴
sudo apt-get install build-essential
sudo apt-get build-dep vim-gtk
sudo apt-get install libncurses5-dev

安裝
// 這里直接執行make的操作
make
sudo make install

安裝vimgdb runtime
cd ../vimgdb-for-vim7.3
cp vimgdb_runtime ~/.vim/bundle

打開vim
:helptags ~/.vim/bundle/vimgdb_runtime/doc " 生成doc文件

添加配置.vimrc
" vimgdb插件
run macros/gdb_mappings.vim

在vim中執行gdb時,報 「Unable to read from GDB pseudo tty」 的錯誤,因為沒有安裝 gdb ,所以安裝gdb
sudo apt-get install gdb

2、安裝vundle

set up vundle
$ git clone https://github.com/gmarik/vundle.git ~/.vim/bundle/vundle

Configure Plugins

在.vimrc文件的開頭添加下面的內容,有些不是必須的,可以注掉
set nocompatible " be iMproved, required
filetype off " required

" set the runtime path to include Vundle and initialize
set rtp+=~/.vim/bundle/vundle/
call vundle#rc()
" alternatively, pass a path where Vundle should install plugins
"let path = '~/some/path/here'
"call vundle#rc(path)

" let Vundle manage Vundle, required
Plugin 'gmarik/vundle'

" The following are examples of different formats supported.
" Keep Plugin commands between here and filetype plugin indent on.
" scripts on GitHub repos
Plugin 'tpope/vim-fugitive'
Plugin 'Lokaltog/vim-easymotion'
Plugin 'tpope/vim-rails.git'
" The sparkup vim script is in a subdirectory of this repo called vim.
" Pass the path to set the runtimepath properly.
Plugin 'rstacruz/sparkup', {'rtp': 'vim/'}
" scripts from http://vim-scripts.org/vim/scripts.html
Plugin 'L9'
Plugin 'FuzzyFinder'
" scripts not on GitHub
Plugin 'git://git.wincent.com/command-t.git'
" git repos on your local machine (i.e. when working on your own plugin)
Plugin 'file:///home/gmarik/path/to/plugin'
" ...

filetype plugin indent on " required
" To ignore plugin indent changes, instead use:
"filetype plugin on
"
" Brief help
" : PluginList - list configured plugins
" : PluginInstall(!) - install (update) plugins
" : PluginSearch(!) foo - search (or refresh cache first) for foo
" : PluginClean(!) - confirm (or auto-approve) removal of unused plugins
"
" see :h vundle for more details or wiki for FAQ
" NOTE: comments after Plugin commands are not allowed.
" Put your stuff after this line

Install Plugins

Launch vim and run
: PluginInstall

vim +PluginInstall +qall

3、官方vim-lang插件

Config vim file .vimrc,Add content bellow in bottom of the file
" 官方的插件
" Some linux distributions set filetype in /etc/vimrc.
" Clear filetype flags before changing runtimepath to force Vim to
" reload them.
filetype off
filetype plugin indent off
set runtimepath+=$GOROOT/misc/vim
filetype plugin indent on
syntax on
autocmd FileType go autocmd BufWritePre Fmt

4、代碼補全的插件gocode

配置go的環境變數,比如我的配置,GOPATH變數是必須要配置的,PATH中必須把GOPATH的bin也添加進去,否則沒有自動提示,會提示找不到模式
export GOROOT=/usr/local/go
export GOPATH=/data/app/gopath
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin

Set up gocode

Then you need to get the appropriate version of the gocode, for 6g/8g/5g compiler you can do this:
go get -u github.com/nsf/gocode (-u flag for "update")

Configure vim in .vimrc file
Plugin 'nsf/gocode', {'rtp': 'vim/'}

Install Plugins

Launch vim and run
: PluginInstall

vim +PluginInstall +qall

寫一個helloword程序,輸入fmt後按<C-x><C-o>如果能看到函數的聲明展示出來,說明安裝是正確的。

4、代碼跳轉提示godef

Set up godef
go get -v code.google.com/p/rog-go/exp/cmd/godef
go install -v code.google.com/p/rog-go/exp/cmd/godef

git clone https://github.com/dgryski/vim-godef ~/.vim/bundle/vim-godef

Configure vim in .vimrc file
Bundle 'dgryski/vim-godef'

Install Plugins

Launch vim and run
: PluginInstall

vim +PluginInstall +qall

5、代碼結構提示gotags

Set up gotags
go get -u github.com/jstemmer/gotags

Put the following configuration in your vimrc:
Bundle 'majutsushi/tagbar'
nmap :TagbarToggle
let g:tagbar_type_go = {
\ 'ctagstype' : 'go',
\ 'kinds' : [
\ 'p:package',
\ 'i:imports:1',
\ 'c:constants',
\ 'v:variables',
\ 't:types',
\ 'n:interfaces',
\ 'w:fields',
\ 'e:embedded',
\ 'm:methods',
\ 'r:constructor',
\ 'f:functions'
\ ],
\ 'sro' : '.',
\ 'kind2scope' : {
\ 't' : 'ctype',
\ 'n' : 'ntype'
\ },
\ 'scope2kind' : {
\ 'ctype' : 't',
\ 'ntype' : 'n'
\ },
\ 'ctagsbin' : 'gotags',
\ 'ctagsargs' : '-sort -silent'
\ }

命令模式下按在右邊就會顯示當前文件下的函數名,結構體名等等,游標放到相應的tag上,按回車可以快速跳到程序中的相應位置。

再次按會關閉tag窗口。

PS:本地的.vimrc的配置
" 插件管理器 vundle
set nocompatible " be iMproved, required
filetype off " required

" set the runtime path to include Vundle and initialize
set rtp+=~/.vim/bundle/vundle/
call vundle#rc()
" alternatively, pass a path where Vundle should install plugins
"let path = '~/some/path/here'
"call vundle#rc(path)

" let Vundle manage Vundle, required
Plugin 'gmarik/vundle'

" The following are examples of different formats supported.
" Keep Plugin commands between here and filetype plugin indent on.
" scripts on GitHub repos
" Plugin 'tpope/vim-fugitive'
" Plugin 'Lokaltog/vim-easymotion'
" Plugin 'tpope/vim-rails.git'
" The sparkup vim script is in a subdirectory of this repo called vim.
" Pass the path to set the runtimepath properly.
" Plugin 'rstacruz/sparkup', {'rtp': 'vim/'}
" scripts from http://vim-scripts.org/vim/scripts.html
" Plugin 'L9'
" Plugin 'FuzzyFinder'
" scripts not on GitHub
" Plugin 'git://git.wincent.com/command-t.git'
" git repos on your local machine (i.e. when working on your own plugin)
" Plugin 'file:///home/gmarik/path/to/plugin'
" ...
"
filetype plugin indent on " required
" To ignore plugin indent changes, instead use:
" filetype plugin on
"
" Brief help
" : PluginList - list configured plugins
" : PluginInstall(!) - install (update) plugins
" : PluginSearch(!) foo - search (or refresh cache first) for foo
" : PluginClean(!) - confirm (or auto-approve) removal of unused plugins
"
" see :h vundle for more details or wiki for FAQ
" NOTE: comments after Plugin commands are not allowed.
" Put your stuff after this line

syntax on

" ********************************************************************

" 這里省略了其它不相關的插件

" vimgdb插件
run macros/gdb_mappings.vim

" 官方的插件
" Some Linux distributions set filetype in /etc/vimrc.
" Clear filetype flags before changing runtimepath to force Vim to
" reload them.
filetype off
filetype plugin indent off
set runtimepath+=$GOROOT/misc/vim
filetype plugin indent on
syntax on
autocmd FileType go autocmd BufWritePre <buffer> Fmt

" 代碼補全的插件
Bundle 'Blackrush/vim-gocode'

" 代碼跳轉提示
Bundle 'dgryski/vim-godef'

" 代碼結構提示
Bundle 'majutsushi/tagbar'
nmap <F8> :TagbarToggle<CR>
let g:tagbar_type_go = {
\ 'ctagstype' : 'go',
\ 'kinds' : [
\ 'p:package',
\ 'i:imports:1',
\ 'c:constants',
\ 'v:variables',
\ 't:types',
\ 'n:interfaces',
\ 'w:fields',
\ 'e:embedded',
\ 'm:methods',
\ 'r:constructor',
\ 'f:functions'
\ ],
\ 'sro' : '.',
\ 'kind2scope' : {
\ 't' : 'ctype',
\ 'n' : 'ntype'
\ },
\ 'scope2kind' : {
\ 'ctype' : 't',
\ 'ntype' : 'n'
\ },
\ 'ctagsbin' : 'gotags',
\ 'ctagsargs' : '-sort -silent'
\ }

『貳』 如何配置go語言開發環境

1、下載go的zip文件。並且一定要把文件解壓到c:\go目錄下。
2、配置windows的高級環境變數。包括:GOROOT、GOOS、GOBIN、GOARCH。並且在path變數裡面把c:\go\bin加入。以便可以在命令行直接運行go命令。
舉例:我的機器:
GOPATH= c:\go;c:\go\src;F:\workspace\goSample01;
GOBIN=c:\go\bin;F:\workspace\goSample01\bin;
其中,c:\go是go的安裝路徑;
F:\workspace\goSample01是我寫的go語言項目的工程目錄;
F:\workspace\goSample01\bin是go語言項目的工程目錄下的可執行文件路徑;

3、在完成環境變數配置後,打開一個命令行窗口,直接輸入go,然後回車,看看是否出現go的幫助信息。如果出現,那麼go的基本環境就OK了。
注意:這個基本環境不包含開發工具,也不能直接編譯帶C代碼的go程序。
4、(可選)為了支持Import遠程包,最好裝個gomingw。下載地址:http://code.google.com/p/gomingw/downloads/list。如果下的是壓縮包,請把它解壓到C盤。例如,C:\gowin-env。裡面有個Console.bat是以後使用go get的環境。舉例:有個文件a.go,裡面import(
"fmt"
"github.com/astaxie/beedb"
_ "github.com/ziutek/mymysql/godrv"
為了編譯該a.go文件,需要啟動Console.bat,然後在該命令行窗口,進入c:\go\src目錄下,執行go getgithub.com/astaxie/beedb
Go get github.com/ziutek/mymysql/godrv .
Go會自動下載該遠程包並編譯和安裝這些包。
配置goclipse(可選)
(如果不喜歡eclipse開發工具,請跳過這個配置。)
1、下載並安裝goclipse插件。Goclipse是go語言for eclipse的插件,下載地址:http://code.google.com/p/goclipse/
2、啟動eclipse並創建go項目。然後寫個最簡單的helloworld.go文件,並運行。代碼如下:
packagemainimport"fmt"func main(){ fmt.Printf("hello, world")}
配置gocode(可選)
如果不需要go語法輔助和eclipse裡面的(按ALT+/)彈出go語言自動輔助功能,請跳過這個配置。
1、下載gocode的zip文件,解壓後放在go的bin目錄下。
2、下載並安裝Git軟體。並且在path裡面配置git的執行路徑。例如c:\git\bin
3、在命令行執行:go build .\gocode。如果一切正常,那麼將會編譯生成一個gocode.exe文件在go的bin目錄下。如果編譯失敗,那麼就轉第4步。
4、如果第3步直接編譯gocode源文件成功,那就直接到第5步。否則,就需要通過git下載gocode源文件,然後再編譯。在命令行執行:go get -u github.com/nsf/gocode 。就會生成gocode.exe文件。
5、在goclipse插件裡面指定gocode的路徑。就可以在elcipse裡面調用gocode來幫助寫編碼了。
從開發工具這塊看,go語言還不夠成熟,開發工具都還不完善,有待改進。
下載go-tour教程源代碼(可選)
Google有個在線運行go語言的教程(http://tour.golang.org/#2),很不錯。支持在web上直接運行大部分的go程序,想了解這個教程的源代碼的朋友可以通過以下方式獲取。如果沒興趣,可以跳過這個步驟。

『叄』 如何Golang開發android應用

如何Golang開發Android應用:

一丶准備

1.一台Linux 64的機器

2.一個帶有AndroidStudioIDE的開發機器

因為環境配置實在復雜,所以引入的docker。

docker pull codeskyblue/docker-goandroid
docker run --rm -ti codeskyblue/docker-goandroid bash

cd example; echo "view example projects
docker起來之後,什麼就都配置好了,NDK,java,GO的環境變數了,等等,並且還預裝了vim,gradle,tmux,git,syncthing,svn


二丶代碼


1.寫代碼之前,先約定下目錄結構

go的代碼都放在src/golib下,編譯使用make.bash編譯腳本,看下這個文件樹

.
|-- app.iml
|-- build.gradle
|-- libs/armeabi-v7a # go編譯生成的so文件
| `-- libgojni.so
|-- main.go_tmpl # 一個模板文件,先不用管它
|-- make.bash # 編譯腳本,用來生成.so和Java代碼
`-- src
|-- golib
| |-- hi
| | |-- go_hi&#1438;&#1438;&#1438; # 自動生成的代碼
| | | `-- go_hi.go
| | `-- hi.go # 需要編寫的代碼
| `-- main.go
`-- main
|-- AndroidManifest.xml
|-- java
| |-- go # 自動生成的代碼
| | |-- Go.java
| | |-- Seq.java
| | `-- hi
| | `-- Hi.java
| `-- me/shengxiang/gohello # 主要的邏輯代碼
| `-- MainActivity.java&#1438;&#1438;&#1438;
`-- res
2.寫了一個例子

git clone

3.編譯下,試試行不行(就算不行問題應該也不大,因為大問題都被消滅了)

cd GoHello/app
./make.bash
../gradlew build

4.一切順利的話在build/outputs/apk下應該可以看到app-debug.apk這個文件。

編譯好的放到qiniu上了,可以點擊下載看看

下面可以嘗試改改

打開hi.go這個文件

hi.go的內容,比較簡單,寫Go代碼主要就是這部分

// Package hi provides a function for saying hello.
package hi

import "fmt"

func Hello(name string) {
fmt.Printf("Hello, %s! ", name)
return "(Go)World"
}
5.文件末尾添加下面這行代碼

func Welcome(name string) string {
return fmt.Sprintf("Welcome %s to the go world", name)
}

使用./make.bash重新編譯下

6.打開MainActivity.java修改下OnClickListener事件

button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String message = Hi.Welcome("yourname");
Toast.makeText(MainActivity.this, message, Toast.LENGTH_LONG).show();
}
});

編譯運行下,把生成的apk安裝到手機上試試。

『肆』 ubuntu下怎麼配置go語言開發環境

具體步驟:

1、去官網下載go1.1.2的tarball,一般下載到tem目錄

2、打開終端cd /usr/local, tar -zxvf go1.1.2.linux-386.tar.gz

源碼文件解壓縮到/usr/local目錄,如果解壓到其他目錄,需要自己設置GOROOT

3、安裝gcc工具,因為golang有些功能是使用c寫

sudo apt-get install bison gawk gcc libc6-dev make

4、$ cd go/src,$ ./all.bash

運行bash腳本,如果運行正常會獲得你的操作系統和cpu信息,自動編譯安裝

5、將export PATH=$PATH:/usr/local/go/bin 寫入$HOME/.profile

最後進行測試輸入go version 會顯示go1.1.2 linux/386

『伍』 「測試開發全棧化-Go」(1) Go語言基本了解

作為一個測試,作為一個測試開發, 全棧化+管理 是我們未來的發展方向。已經掌握了Java、Python、HTML的你,是不是也想了解下最近異常火爆的Go語言呢?來吧,讓我們一起了解下。

Go 是一個開源的編程語言 ,它能讓構造簡單、可靠且高效的軟體變得容易。

Go是從2007年末由Robert Griesemer, Rob Pike, Ken Thompson主持開發,後來還加入了Ian Lance Taylor, Russ Cox等人,並最終於2009年11月開源,在2012年早些時候發布了Go 1穩定版本。現在Go的開發已經是完全開放的,並且擁有一個活躍的社區。這三個人都是計算機界的大神,有的參與了C語言的編寫,有的還是數學大神,有的還獲得了計算機最高榮譽-圖靈獎。


接下來說說 Go語言的特色 :

簡潔、快速、安全

並行、有趣、開源

內存管理、數組安全、編譯迅速


Go語言的用途 :

Go 語言被設計成一門應用於搭載 Web 伺服器,存儲集群或類似用途的巨型中央伺服器的系統編程語言。

對於高性能分布式系統領域而言,Go 語言無疑比大多數其它語言有著更高的開發效率。它提供了海量並行的支持,這對於 游戲 服務端的開發而言是再好不過了。


Go語言的環境安裝:

建議直接打開 https://golang.google.cn/dl/ 官方地址因為牆的原因打不開

因為我用的是windows系統,這里主要講下Windows系統上使用Go語言來編程。


Windows 下可以使用 .msi 後綴(在下載列表中可以找到該文件,如go1.17.2.windows-amd64.msi)的安裝包來安裝。

默認情況下 .msi 文件會安裝在 c:Go 目錄下。你可以將 c:Gobin 目錄添加到 Path 環境變數中。添加後你需要重啟命令窗口才能生效。個人建議還是安裝到 Program Files文件夾中。


使用什麼開發工具來對Go語言進行編寫:

個人建議用VS code, 也可以用Sublime Text來編輯。如果你之前看了我講的HTML語言的學習,肯定已經下載了VS code. 那麼這時你需要在VS code中下載Go語言的擴展插件。

這里有一個巨大的坑,就是在下載Go的插件和依賴包時,會提示一些包沒有。主要是因為下載的依賴包部分被牆了,只能想別的辦法去下載。

建議參考網頁:

https://blog.csdn.net/qq_40876767/article/details/105658433


解決vscode中golang插件安裝失敗方法

在學習go的過程中,使用的是vscode,但是一直提示安裝相關插件失敗,然後上網查方法,基本上是叫你建立golang.org目錄什麼的,結果全是錯的,而且都是抄襲,很煩。無意之中看到一位博主分享的方法,他也是飽受上述的垃圾博文困擾,然後找到了解決方法,這里向他致敬,秉著讓更多人看到正確解決方法的心,我寫下正確的解決方法,希望對你有所幫助,也可以點開原博主鏈接參考:https://www.cnblogs.com/xll970105/p/11906899.html


Go有一個全球模塊代理,設置代理再去安裝golang的插件,就可以安裝成功了。步驟有,首先Windows用戶打開Powershell,一個藍色的界面,注意不是cmd!不知道的直接打開window下面的搜索,然後輸入powershell,搜索出來就可以了。


$env:GO111MODULE=「on」


$env:GOPROXY=「https://goproxy.io」


go env -w GOPROXY=https://goproxy.io,direct


go env -w GOPRIVATE=*.corp.example.com


然後我們打開VsCode界面,下面會提示安裝插件,我們選擇Install ALL,就會安裝成功


當你在運行Go語言程序時,提示所有的插件包都已經安裝成功了時,就可以正常使用了,要不然一堆報錯會讓你非常心煩。


好了,今天先到這里,晚安、下班~

『陸』 如何安裝Go語言安裝包

go語言作為google的一個主推語言,最近很多人都在研究,也花了一點時間對他的安裝進行了測試,本人使用Sublime Text 2 + GoSublime + gocode

顧名思義首先是安裝Go,這里有很詳細的安裝說明,http://code.google.com/p/golang-china/wiki/Install 或者http://golang.org/doc/install(golang.org自己去找hosts),官方已經支持Windows版本

下載解壓配置環境變數

「環境變數」(我的電腦->高級系統設置->環境變數),在系統變數的標簽下,依次新建編輯如下幾個鍵值對:

(1). 新建 變數名:GOBIN 變數值 :c:\go\bin

(2). 新建 變數名:GOARCH 變數值:386

(3). 新建 變數名:GOOS 變數值:windows

(4). 新建 變數名: GOROOT 變數值:c:\go

(5). 編輯 Path 在Path的變數值的最後加上 %GOBIN%

1. 下載 Sublime Text 2,地址如下:http://www.sublimetext.com/

2. 解壓以後,雙擊 sublime_text,就可以使用 Sublime Text 2 了。

破解:

用 WinHex 編輯 sublime_text_backup.exe 文件, 跳到 000CBB70 那一行,將該行的 8A C3 修改為 B0 01 然後保存

破解注冊成功

3. 安裝 Package Control,在打開 Sublime Text 2以後,按下快捷鍵 Ctrl + `,打開命令窗行(具體在view——show Console),並回車:

import urllib2,os; pf=』Package Control.sublime-package』; ipp=sublime.installed_packages_path(); os.makedirs(ipp) if not os.path.exists(ipp) else None; urllib2.install_opener(urllib2.build_opener(urllib2.ProxyHandler())); open(os.path.join(ipp,pf),』wb』).write(urllib2.urlopen(『http://sublime.wbond.net/』+pf.replace(『 『,』%20′)).read()); print 『Please restart Sublime Text to finish installation』

4. 重啟Sublime Text 2後,就可以發現在 Preferences菜單下,多出一個菜單項 Package Control。

5.現在安裝GoSublime插件了,按住Ctrl+Shilft+p會彈出一個對話框輸入install回車彈出一個安裝包的對話框

同上輸入GoSublime選擇GoSublime回車

本機已經安裝所以沒有出現選項,輸入Go build選中回車(這個屬於可選)

到此GoSublime安裝成功

6.下面安裝gocode,

首安裝 Git-1.7.11-preview20120710。

打開控制台,輸入以下內容:

go get github.com/nsf/gocode

go install github.com/nsf/gocode

go get github.com/DisposaBoy/MarGo

go install github.com/DisposaBoy/MarGo

也可以去github下載https://github.com/nsf/gocode.git(要安裝google的git版本管理工具)

安裝完成後,我們可以在 go/bin 目錄下,發現多出了個 gocode 文件。(一定要放在bin目錄下)

7. 修改GoSublime配置:在 Preferences菜單下,找到Package Settings,然後找到 GoSublime,再往下找到 Settings – Default。再打開的文件中,添加如下配置,並保存:

"env": {"path":"c:/go/bin;" },

好了,到目前為止,開發環境搭建完成。

下面可以自由編程了。呵呵。

按下快捷鍵 Ctrl + b 界面下方會出現如下界面:

好了,到現在,開發環境就搭建完畢了。

如下是內容我這邊沒有使用照樣可以使用:

sublime Text 2 編譯配置設置方法

tools->build system->new build system 新建一個配置文件 設置為

{

「cmd」: ["go", "run", "$file_name"],

「file_regex」: 「^[ ]*File \」(…*?)\」, line ([0-9]*)」,

「working_dir」: 「$file_path」,

「selector」: 「source.go」

}

然後就可以用ctrl+b 編譯了

保存

『柒』 如何Golang開發Android應用

環境配置好復雜,我不得不嘮叨幾句。
需要下載golang1.4rc版,下載ndk,然後編譯。 然後用go get 下載gobind這個工具, 然後,將寫好的代碼用gobind轉化下,然後使用特殊的編譯命令,將代碼編譯成.so文件,將生成的相關文件,放到android studio的項目中。然後java代碼中,利用jni調用引用的代碼。
... 好,接著往下看吧。
環境准備
一台Linux 64的機器
一個帶有AndroidStudioIDE的開發機器
因為環境配置實在復雜,所以我們引入的docker。
docker pull codeskyblue/docker-goandroid
docker run --rm -ti codeskyblue/docker-goandroid bash

cd example; echo "view example projects

docker起來之後,什麼就都配置好了,NDK啦,java啦,GO的環境變數了,等等,並且還預裝了vim,gradle,tmux,git,syncthing,svn
開始寫代碼
寫代碼之前,先約定下目錄結構
go的代碼都放在src/golib下,編譯使用make.bash編譯腳本,看下這個文件樹
.
|-- app.iml
|-- build.gradle
|-- libs/armeabi-v7a # go編譯生成的so文件
| `-- libgojni.so
|-- main.go_tmpl # 一個模板文件,先不用管它
|-- make.bash # 編譯腳本,用來生成.so和Java代碼
`-- src
|-- golib
| |-- hi
| | |-- go_hi�0�2�0�2�0�2 # 自動生成的代碼
| | | `-- go_hi.go
| | `-- hi.go # 需要編寫的代碼
| `-- main.go
`-- main
|-- AndroidManifest.xml
|-- java
| |-- go # 自動生成的代碼
| | |-- Go.java
| | |-- Seq.java
| | `-- hi
| | `-- Hi.java
| `-- me/shengxiang/gohello # 主要的邏輯代碼
| `-- MainActivity.java
`-- res

我已經寫了一個例子,先直接搞下來

編譯下,試試行不行(就算不行問題應該也不大,因為大問題都被我消滅了)
cd GoHello/app
./make.bash
../gradlew build

一切順利的話在build/outputs/apk下應該可以看到app-debug.apk這個文件。(劇透下,這個文件只有800多K)
編譯好的我放到qiniu上了,可以點擊下載看看
下面可以嘗試改改,我拋磚引玉說下
打開hi.go這個文件
hi.go的內容,比較簡單,我們寫Go代碼主要就是這部分
// Package hi provides a function for saying hello.
package hi

import "fmt"

func Hello(name string) {
fmt.Printf("Hello, %s!\n", name)
return "(Go)World"
}

文件末尾添加下面這行代碼
func Welcome(name string) string {
return fmt.Sprintf("Welcome %s to the go world", name)
}

使用./make.bash重新編譯下
打開MainActivity.java 修改下OnClickListener事件
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String message = Hi.Welcome("yourname");
Toast.makeText(MainActivity.this, message, Toast.LENGTH_LONG).show();
}
});

編譯運行下,把生成的apk安裝到手機上試試。
原理解讀(有興趣的接著看)
首先說下gobind這個工具。
go_hi/go_hi.go這個文件時通過gobind這個工具生成的,用來配合一個簡單的程序,生成.so文件
// go_hi.go
package go_hi

import (
"golang.org/x/mobile/bind/seq"
"example/hi"
)

func proxy_Hello(out, in *seq.Buffer) {
param_name := in.ReadUTF16()
hi.Hello(param_name)
}

func init() {
seq.Register("hi", 1, proxy_Hello)
}

這個簡單的程序內容是這樣的
// main.go
package main

import (
"golang.org/x/mobile/app"

_ "golang.org/x/mobile/bind/java"
_ "example/hi/go_hi"
)

func main() {
app.Run(app.Callbacks{})
}

src/MyActivity.java文件內容是這樣的
import ...
import go.Go; // 引入Go這個包
import go.hi.Hi; // gobind生成的代碼

public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Go.init(getApplicationContext()); // 初始化兩個線程
Hi.Hello("world");
}
}

其中有一句Go.init(...)這里再看go.Go這個包是什麼樣子的
public final class Go {
// init loads libgojni.so and starts the runtime.
public static void init(Context context) {
... 判斷該函數是否該執行的代碼 -- 省略 --
System.loadLibrary("gojni"); // gojni需要這句

new Thread("GoMain") {
public void run() {
Go.run(); // run()是一個native方法
}
}.start();

Go.waitForRun(); // 這個也是一個native方法

// 這部分可以理解為,啟動了一個後台線程不斷的接收結果到緩存中。
new Thread("GoReceive") {
public void run() { Seq.receive(); }
}.start();
}

private static boolean running = false;

private static native void run();
private static native void waitForRun();
}

MyActivity.java中還有段代碼是 Hi.Hello("world");,打開Hi.java路徑在src/go/hi/Hi.java,這個文件也是gobind生成的,是用來給java方便的調用.so文件
// Hi.java
// File is generated by gobind. Do not edit.
package go.hi;

import go.Seq;

public abstract class Hi {
private Hi() {} // uninstantiable

public static void Hello(String name) {
go.Seq _in = new go.Seq();
go.Seq _out = new go.Seq();
_in.writeUTF16(name);
Seq.send(DESCRIPTOR, CALL_Hello, _in, _out); // 下面接著說
}

private static final int CALL_Hello = 1;
private static final String DESCRIPTOR = "hi";
}

Seq.send這部分實際上最終調用的是一段go代碼
func Send(descriptor string, code int, req *C.uint8_t, reqlen C.size_t, res **C.uint8_t, reslen *C.size_t) {
fn := seq.Registry[descriptor][code]
in := new(seq.Buffer)
if reqlen > 0 {
in.Data = (*[maxSliceLen]byte)(unsafe.Pointer(req))[:reqlen]
}
out := new(seq.Buffer)
fn(out, in)
seqToBuf(res, reslen, out)
}

轉載僅供參考,版權屬於原作者。祝你愉快,滿意請採納哦

『捌』 第1章 Golang開荒 (應用場景、環境搭建)

前言:
本Python,學golang,下筆記,供分享

Go語言,我們可以簡單的寫成 Golang

自行網路吧,不難

『玖』 如何搭建androad開發環境

隨著移動互聯網的迅速發展,前端的概念已發生很大的變化,已不僅僅局限在網頁端。而Android系統作為智能機市場的老大,作為前端開發工程師,非常有必要了解和學習。但面對眾多學習資料,站在前端開發工程師的角色,怎樣挑選出合適的路進行快速學習,而不必浪費大量時間去摸索,該系列文章希望能幫助到小夥伴們。
文章會挑選幾個實際的例子,貫穿在整個系列中,涉及到Java、Android、程序設計等多方面知識,力求讓大家快速掌握。俗話說,工欲善其事,必先利其器,系列的第一篇就從Window系統下Android的環境搭建說起。Let』s Go!
工具/原料
JDK
Eclipse
ADT
JDK的安裝和Java環境變數的設置
1
JDK下載地址
JDK下載地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html
JDK(Java Development Kit)是整個Java的核心,包括一系列Java開發的東西,安裝完畢需要配置一下環境變數。
2
JAVA_HOME
JDK的安裝路徑,這個環境變數本身不存在,需要創建,創建完則可以利用%JAVA_HOME%作為統一引用路徑,其值為:jdk在你電腦上的安裝路徑。

3
PATH
PATH屬性已存在,可直接編輯。作用是用於配置路徑,簡化命令的輸入,其值為:%JAVA_HOME%\bin。

4
CLASSPATH
用於編譯時JAVA類的路徑,注意這里設置的是兩個值,(.;)表示的是JVM先搜索當前目錄。其值為:.;%JAVA_HOME%\lib\tools.jar。

5
配置完畢後,通過cmd運行以下命令:java -version,javac 如果出現返回信息,則設置成功。

END
安裝Eclipse
1
Eclipse下載地址
Eclipse下載地址:http://www.eclipse.org/downloads/? (選擇Eclipse Standard版本即可)。
Eclipse為Java及Android開發的IDE。Eclipse不需要安裝,把解壓包解壓後,剪切eclipse文件夾到你想安裝的地方,打開時設置你的工作目錄即可。

END
安裝Android SDK
1
Android SDK下載地址
Android SDK下載地址:http://developer.android.com/sdk/index.html。
Andorid SDK為Android管理開發包工具,提供了Android各級平台的開發包和工具。注意,因為我們是獨立安裝,不是一體化(集成系列工具)所以需要單獨下載SDK。(如圖)

2
運行安裝文件,並把安裝目錄下tools文件夾路徑設置進PATH環境變數。

3
去到安裝目錄運行SDK Manager,一開始什麼平台和工具也沒有,需要下載回來。公司內網的話需要使用代理來下載。

4
到 Tools -> Options… 把代理填上,點擊 Close 後則會出現眾多平台列表,把Android Tools 選上安裝,另外建議把2.2以上的全部下載安裝。

END
安裝配置ADT
1
安裝ADT
啟動Eclipse,點擊 Help菜單 -> Install New Software… ?,點擊 ?Add… ?,輸入地址:http://dl-ssl.google.com/android/eclipse/。

2
選取要安裝的項,一路Next完成安裝並重啟。這樣ADT就安裝完畢了。

3
配置ADT
選擇 Window -> Preferences ,在彈出面板中就會看到Android設置項,填上安裝的SDK路徑,則會出現剛才在SDK中安裝的各平台包,按OK則完成配置。此時Android的環境就搭建完畢,可以進行Android項目的開發了。

END
創建第一個Android項目
選擇 File -> New -> Other -> Android -> Android Application Project。
輸入項目所需信息
Application Name (應用的名稱)
Project Name (在Eclipse中該項目的名稱)
Package Name (存放Java類的包名稱,其實質是存放的文件夾路徑,.號為文件分隔符,我們編寫的Java文件都會放在項目的src目錄下,如com.tencent.helloworld表示類放在src/com/tencent/helloworld文件夾中)

一路Next直到Finish,則我們的工程創建完畢。

由於程序是運行在模擬器上的,我們還沒有創建一個模擬器,所以需創建一個,創建完點關閉則可。

點擊 三角型 run按鈕,然後選擇剛才創建的模擬器,則程序開始運行。小提示:啟動模擬器會比較慢,所以,當程序作出修改,需要再次運行時,不要關閉掉模擬器,直接按模擬器上的Home或返回鍵退出app,之後再按run,則可重新跑起。

6
結束:恭喜你!你的Android環境已經搭建成功。

閱讀全文

與androidgo語言環境搭建相關的資料

熱點內容
蘋果如何創建伺服器錯誤 瀏覽:494
軟考初級程序員大題分值 瀏覽:473
js壓縮視頻文件 瀏覽:578
linux如何通過命令創建文件 瀏覽:989
應用加密app還能訪問應用嘛 瀏覽:432
安卓怎麼用支付寶交違章罰款 瀏覽:665
php面向對象的程序設計 瀏覽:504
數據挖掘演算法書籍推薦 瀏覽:894
投訴聯通用什麼app 瀏覽:150
web伺服器變更ip地址 瀏覽:954
java正則表達式驗證郵箱 瀏覽:360
成熟商務男裝下載什麼軟體app 瀏覽:609
加密2h代表長度是多少厘米 瀏覽:23
拍賣程序員 瀏覽:101
電腦的圖片放在哪個文件夾 瀏覽:274
unsignedintjava 瀏覽:216
編譯器下載地址 瀏覽:43
什麼是面對對象編程 瀏覽:708
b站伺服器什麼時候恢復 瀏覽:721
6p相當於安卓機什麼水準 瀏覽:499