真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

go語言生成so go語言生成word模板

如何Golang開發(fā)Android應(yīng)用

如何Golang開發(fā)Android應(yīng)用:

創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),錦屏企業(yè)網(wǎng)站建設(shè),錦屏品牌網(wǎng)站建設(shè),網(wǎng)站定制,錦屏網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,錦屏網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力。可充分滿足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。

一丶準(zhǔn)備

1.一臺(tái)Linux 64的機(jī)器

2.一個(gè)帶有AndroidStudioIDE的開發(fā)機(jī)器

因?yàn)榄h(huán)境配置實(shí)在復(fù)雜,所以引入的docker。

docker pull codeskyblue/docker-goandroid

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

cd example; echo "view example projects

docker起來之后,什么就都配置好了,NDK,java,GO的環(huán)境變量了,等等,并且還預(yù)裝了vim,gradle,tmux,git,syncthing,svn

二丶代碼

1.寫代碼之前,先約定下目錄結(jié)構(gòu)

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

.

|-- app.iml

|-- build.gradle

|-- libs/armeabi-v7a # go編譯生成的so文件

| ? ? ? ? ? ? ? `-- libgojni.so

|-- main.go_tmpl # 一個(gè)模板文件,先不用管它

|-- make.bash # 編譯腳本,用來生成.so和Java代碼

`-- src

|-- golib

| ? |-- hi

| ? | ? |-- go_hi#1438;#1438;#1438; # 自動(dòng)生成的代碼

| ? | ? | ? `-- go_hi.go

| ? | ? `-- hi.go # 需要編寫的代碼

| ? `-- main.go

`-- main

? ?|-- AndroidManifest.xml

? ?|-- java

? ?| ? |-- go # 自動(dòng)生成的代碼

? ?| ? | ? |-- Go.java

? ?| ? | ? |-- Seq.java

? ?| ? | ? `-- hi

? ?| ? | ? ? ? `-- Hi.java

? ?| ? `-- me/shengxiang/gohello # 主要的邏輯代碼

? ?| ? ? ? ? ? ? ? ? ? ? ?`-- MainActivity.java#1438;#1438;#1438;

? ?`-- res

2.寫了一個(gè)例子

git clone

3.編譯下,試試行不行(就算不行問題應(yīng)該也不大,因?yàn)榇髥栴}都被消滅了)

cd GoHello/app

./make.bash

../gradlew build

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

編譯好的放到qiniu上了,可以點(diǎn)擊下載看看

下面可以嘗試改改

打開hi.go這個(gè)文件

hi.go的內(nèi)容,比較簡(jiǎn)單,寫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"

}

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();

? ?}

});

編譯運(yùn)行下,把生成的apk安裝到手機(jī)上試試。

使用Go語言 生成iOS SDK

brew install go

輸入 brew info go 或者 go env 即可查看當(dāng)前安裝的golang版本信息

注意:千萬不要把GOPATH設(shè)置成go的安裝路徑,可以自己在用戶目錄下創(chuàng)建一個(gè)目錄,例如mygo

一般安裝好go之后,使用go env查看一下當(dāng)前環(huán)境。此時(shí)顯示出來的GOROOT就是你使用brew安裝go的安裝目錄,這個(gè)路徑要記下來。接下來要在bash_profile文件中進(jìn)行配置。

使用vim ~/.bash_profile

然后在這個(gè)文件中進(jìn)行編輯,下面以我的電腦為例,路徑這種要根據(jù)不同人的情況而定

GOROOT=/usr/local/Cellar/go/1.10.1/libexec (改成自己的go安裝目錄 go env命令可查看)

export GOROOT (不用動(dòng))

export GOPATH=/Users/jiangqiaowei/mygo (創(chuàng)建一個(gè)自己的文件夾 管理go相關(guān)內(nèi)容)

export GOBIN=$GOPATH/bin (不用改)

export PATH=$PATH:$GOBIN:$GOROOT/bin (不用改)

$ go get golang.org/x/mobile/cmd/gomobile (需要墻)

gomobile init

$ go get -d golang.org/x/mobile/example/bind/...

$ cd $GOPATH/src/golang.org/x/mobile/example/bind

$ gomobile bind -target=ios golang.org/x/mobile/example/bind/hello

此命令在ios/路徑下生成bind.xcodeprojxcode項(xiàng)目以及 在bind/目錄下生成一個(gè) hello.framework

拖入項(xiàng)目即可使用

golang調(diào)用so庫同步函數(shù)停止

測(cè)試動(dòng)態(tài)庫步驟:

1、test_so.h

2、test_so.c

3、生成so

4、復(fù)制so文件到Go項(xiàng)目目錄

Go項(xiàng)目目錄

1、load_so.h

2、load_so.c

3、test.go

4、Go項(xiàng)目目錄要放在$GOPATH/src/目錄下,這也是正常操作。

test目錄為Go項(xiàng)目,里邊是上述創(chuàng)建的所有源碼文件。

在$GOPATH/src/test/里直接使用gobuild編譯生成test二進(jìn)制文件,此處需要注意執(zhí)行路徑。

問題

1、/**/注釋的代碼下一行一定是import“C”,中間不能有空行

2、importC必須單獨(dú)一行,不能和其它庫一起導(dǎo)入

3、有人編譯的時(shí)候會(huì)報(bào)錯(cuò):

這個(gè)主要是執(zhí)行目錄問題,一定要在$GOPATH/src/項(xiàng)目/目錄下,用gobuild執(zhí)行,gobuild后邊不要有任何文件名。

或者用gorun.運(yùn)行,或者goruntest,test是項(xiàng)目名。不能用goruntest.go。

4、還有人報(bào)這個(gè)錯(cuò):test.go文件里的cgoLDFLAGS:-ldl這一行不要?jiǎng)h掉。

go怎么調(diào)用自己用c/c++寫的so中的方法

直接調(diào)用so的函數(shù)cgo應(yīng)該繞不開吧,我寫過一個(gè)銀行的應(yīng)用程序調(diào)用其特色業(yè)務(wù)接口,因?yàn)榻涌谥恢С謈和java,我就封裝了一個(gè)c的so,然后用cgo調(diào)用后寫了一個(gè)RPC供遠(yuǎn)程的go語言調(diào)用,因?yàn)镽PC只負(fù)責(zé)信息交互不負(fù)責(zé)業(yè)務(wù)邏輯,所以寫了不到百行,以后基本不用再改。記住雖然go語言自帶gc,但cgo還是要手工釋放內(nèi)存哦。


分享文章:go語言生成so go語言生成word模板
網(wǎng)頁地址:http://weahome.cn/article/hiiseg.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部