中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何使用Go進行iOS和Android編程

發布時間:2021-08-06 23:53:17 來源:億速云 閱讀:1056 作者:chen 欄目:web開發

這篇文章主要講解了“如何使用Go進行iOS和Android編程”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“如何使用Go進行iOS和Android編程”吧!

開始

你需要安裝 Golang 1.5+。

接下來需要安裝 GoMobile 工具,用于編譯和運行 Android 和 iOS 的應用:

go get golang.org/x/mobile/cmd/gomobile
gomobile init

我們會參考 gomobile 包里的例子,位于 GoLangInstalldir/src/golang.org/x/mobile/example/。如果你沒有安裝這些例子,參考下面的命令來安裝:

go get -d golang.org/x/mobile/example/basic

構建和安裝 Go 的 Native 應用

對于很多應用,編譯 Go 的 Native 應用時,忽略那些平臺相關的庫和接口是可以接受的。如果是這樣的情況,編譯已有的 Go 代碼是很輕松的,我們可以選擇使用一個功能子集,這些功能包括:

  • App 控制和配置

  • OpenGL ES 2

  • 資源管理

  • 事件管理

  • 一些實驗性的包,包括 OpenAL、audio、font、sprite 和運動傳感器

我們將從已有的 gomobile 項目里的一些例子開始,你可以用自己項目里的文件替換它們。

Android

構建一個 Android 的 APK 包

gomobile build -target=android golang.org/x/mobile/example/basic

部署到設備上

gomobile install golang.org/x/mobile/example/basic

iOS

構建一個 iOS 的 IPA 包

gomobile build -target=ios golang.org/x/mobile/example/basic

部署到設備

跟 Android 不一樣,對于 iOS 來說沒有一個統一的部署命令,你需要用你熟知的方式把包拷貝到設備或者模擬器上,例如使用 ios-deploy 工具。

可以用上面的步驟,試試 golang.org/x/mobile/example/audio 這個例子。

讓我們深入了解一下 audio 這個例子(詳細的代碼就不列出了了),你并不需要對 Go 語言非常精通(我就是不太精通),我們先了解一下都能干些啥。

首先你可以看到一些 import 語句:

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

如果你查看一下 import 的這些包所在的目錄 GoLangInstalldir/src/golang.org/x/mobile/* 下的文件,你可以發現那些編譯到你的代碼里的那些 Java 和 Objective-C 文件。

再進一步了解一下,你可以在代碼里找到對這些 import 的包(例如 app 和 glctx)的引用。

Going Native

我們可以用 Go 寫代碼,然后構建一個緊湊的優化過的 native 應用,但是目前這個應用還不是完全的 native 的風格,因為所有依賴的庫還都是 Java 或者 Objective-C / Swift 的。我們怎樣來改善這個體驗呢?

Go Mobile 團隊給我們了另一個選擇,可以在一個 native 應用里使用 go 的包(也即你的程序)。特別是共享一些公共的 Go 代碼,把它們綁定到 native 的代碼上是非常好用的。這種方式上手很快,不過長期來說維護會比較麻煩一些。

Android

如果使用 Android Studio,可以導入項目  GoLangInstalldir/src/golang.org/x/mobile/example/bind/android,打開  build.grade (hello 模塊)文件,更新一下 GOPATH 和 GO 的路徑,下面是我的文件內容(我是用 Homebrew 安裝的  GoLang):

如何使用Go進行iOS和Android編程

同步 Gradle 后,應用就可以部署到仿真器或者真實設備上了。

注意: 當前這種方式只支持基于 ARM 的設備和仿真器。

讓我們看一下 Java 和 Go 的代碼:

MainActivity.java

package org.golang.example.bind;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
import go.hello.Hello;

public class MainActivity extends Activity {

private TextView mTextView;

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mTextView = (TextView) findViewById(R.id.mytextview);

// Call Go function.
        String greetings = Hello.Greetings("Android and Gopher");
        mTextView.setText(greetings);
    }}

src/golang.org/x/mobile/example/bind/hello/hello.go

package hello
import "fmt"

func Greetings(name string) string {
    return fmt.Sprintf("Hello, %s!", name)}

通過 import go.hello.Hello 來 import 對應的 go 文件,文件里的 Greetings 函數在 Java  代碼里可以通過 Hello.Greetings 來調用。并不需要太復雜的步驟,在go 函數和 native 的 UI  元素之間就可以建立上綁定關系。

iOS

把一個 iOS 應用和 Go 程序直接進行綁定需要不同的步驟。首先需要運行下面的命令:

cd GoLang_Install_dir/src/golang.org/x/mobile/example/bind
gomobile bind -target=ios golang.org/x/mobile/example/bind/hello

這樣會在當前目錄下創建一個叫 Hello.framework 的 bundle,在項目里可以使用它。

在 Xcode 打開例子中的 iOS 項目,位于  GoLangInstalldir/src/golang.org/x/mobile/example/bind/ios/bind.xcodeproj  ,把 Hello.framework 拖到項目里,如果需要,選擇”Copy items”。目錄結構現在看上去是下面這樣:

如何使用Go進行iOS和Android編程

構建和運行這個應用(更像 Android 應用),我們可以看到在 Objective-C 代碼里進行 Go 函數的調用。

看一下現在的代碼:

#import "ViewController.h"
#import "hello/Hello.h"  // Gomobile bind generated header file in hello.framework

@interface ViewController ()
@end

@implementation ViewController

@synthesize textLabel;

- (void)loadView {
    [super loadView];
    textLabel.text = GoHelloGreetings(@"iOS and Gopher");
}

@end

#import “hello/Hello.h”導入了之前生成的 framework,textLabel.text = GoHelloGreetings(@”iOS and Gopher”);調用了它暴露出的一個函數來設置一個 label 的值。

也可以使用同樣是自動生成的基于 Swift 的項目里的 Objective-C 的 framework,像下面這樣:

let msg = Hello.GoHelloGreetings("gopher")

是否值得?

嗯,簡單的說可能是不值得。如果你已經在使用 Go 來寫應用了,并且不在乎應用是否 native  的,那么你可以放開手繼續做,因為你已經知道了構建和部署用 Go 寫的 native  應用是很簡單的。如果你打算花更多的精力嘗試一下綁定,你可以走的更遠一些,不過還是需要稍微控制一下。

如果你沒在用 Go,那么就不太值的現在就在開發 native 的移動應用時考慮 Go。不過我有很強烈的預感,在不久的將來,Go 會成為這方面很有潛力的選擇的。

感謝各位的閱讀,以上就是“如何使用Go進行iOS和Android編程”的內容了,經過本文的學習后,相信大家對如何使用Go進行iOS和Android編程這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

澄江县| 饶平县| 泾源县| 克什克腾旗| 玛沁县| 抚松县| 鹰潭市| 台东市| 东台市| 墨玉县| 望都县| 连城县| 贵阳市| 江口县| 花莲县| 盖州市| 商丘市| 剑河县| 甘孜县| 绥德县| 普定县| 苍溪县| 潼关县| 资阳市| 项城市| 恩平市| 克山县| 温泉县| 曲靖市| 安仁县| 临汾市| 米脂县| 济南市| 大兴区| 西平县| 福海县| 天等县| 望都县| 南康市| 弥渡县| 忻州市|