返回顶部
首页 > 资讯 > 前端开发 > html >如何使用Go进行iOS和Android编程
  • 687
分享到

如何使用Go进行iOS和Android编程

2024-04-02 19:04:59 687人浏览 薄情痞子
摘要

这篇文章主要讲解了“如何使用Go进行iOS和Android编程”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何使用Go进行ioS和Android编程”吧!

这篇文章主要讲解了“如何使用Go进行iOSAndroid编程”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何使用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编程这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: 如何使用Go进行iOS和Android编程

本文链接: https://lsjlt.com/news/77036.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 如何使用Go进行iOS和Android编程
    这篇文章主要讲解了“如何使用Go进行iOS和Android编程”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何使用Go进行iOS和Android编程”吧!...
    99+
    2024-04-02
  • 如何在Linux上使用Go和Laravel进行编程?
    在Linux上使用Go和Laravel进行编程是一种非常流行的方式,因为这两个编程语言都具有非常强大的功能和易于使用的特点。在本文中,我们将介绍如何在Linux上使用这两种编程语言进行编程,并提供一些实用的示例代码。 一、安装Go 安装G...
    99+
    2023-10-24
    laravel leetcode linux
  • 如何使用Go语言和Redis进行网络编程
    如何使用Go语言和Redis进行网络编程?Redis是一个开源的内存数据结构存储系统,它提供了一组丰富的数据类型和功能,使得在开发网络应用程序时能够更快地处理数据。Go语言是一种快速、强大和简单的编程语言,特别适合用于构建高性能的服务器和分...
    99+
    2023-10-27
    Go语言 redis 网络编程
  • 如何在Go中使用NumPy进行编程?
    NumPy是一个广泛使用的Python库,用于科学计算和数据分析。但是,如果你想使用Go语言编写科学计算程序,该怎么办呢?这就需要使用Go的NumPy库。在本文中,我们将探讨如何在Go中使用NumPy进行编程,以及如何使用这个库来进行科学...
    99+
    2023-09-01
    编程算法 numpy path
  • 如何在 Windows 上使用 Go IDE 进行编程?
    Go语言是一种非常流行的编程语言,它的简洁性和高效性使其成为了许多开发者的首选。对于Windows用户来说,在Windows上使用Go IDE进行编程是一种非常便捷的方式。在本文中,我们将介绍如何在Windows上使用Go IDE进行编程,...
    99+
    2023-08-25
    ide windows 教程
  • 如何在Go中使用数组进行异步编程?
    在Go语言中,使用数组进行异步编程是非常常见的操作。在本文中,我们将介绍如何在Go语言中使用数组进行异步编程,并提供一些实际的例子来帮助你更好地理解。 什么是异步编程? 在传统的同步编程中,程序会按照顺序执行每个操作,直到完成所有操作。...
    99+
    2023-10-02
    数组 异步编程 关键字
  • 如何使用golang进行Select Channels Go并发式编程
    在Go中,可以使用`select`语句来监听多个`channel`的操作,并选择第一个就绪的`channel`进行处理。以...
    99+
    2023-10-09
    Golang
  • 如何在GO语言中使用接口进行编程?
    在GO语言中,接口是一种非常重要的编程概念。接口可以被看作是一组方法的集合,这些方法是对某个对象或类型的行为进行描述的。通过使用接口,我们可以将不同的类型进行抽象,从而更加灵活地进行编程。接下来,本文将介绍如何在GO语言中使用接口进行编程...
    99+
    2023-07-27
    编程算法 接口 框架
  • 如何在LeetCode中使用Go语言、Git和JavaScript进行高效编程?
    在当前的技术领域,LeetCode是一个备受欢迎的平台,它提供了一系列的算法和数据结构题目,帮助程序员提高他们的编程技能。在本文中,我们将介绍如何在LeetCode中使用Go语言、Git和JavaScript进行高效编程,帮助您更快地解决问...
    99+
    2023-09-02
    git javascript leetcode
  • 如何在Linux上使用Go语言进行编程和算法实现?
    在Linux上使用Go语言进行编程和算法实现是一项有趣且有挑战性的任务。Go语言是由Google公司开发的一种编程语言,它的设计目标是提供一种高效、可靠和简单的编程语言。在本文中,我们将介绍如何在Linux上使用Go语言进行编程和算法实现,...
    99+
    2023-10-29
    linux 编程算法 numy
  • 如何在 Unix 上使用 IDE 进行高效的 Go 编程?
    Go 是一种高效、简洁且易于使用的编程语言,它是由 Google 开发的,并且已经成为了许多互联网公司的首选编程语言之一。如果你是一名 Unix 用户,想要在 Unix 上使用 IDE 进行高效的 Go 编程,那么本文将为你介绍如何实现这...
    99+
    2023-08-26
    unix ide 索引
  • 如何在GO编程中使用NumPy进行高效开发?
    在Go编程中使用NumPy进行高效开发,可以极大地提高代码的效率和性能。NumPy是一个用于Python编程语言的科学计算库,它提供了高性能的多维数组对象和相关的工具,可以用于数学、科学、工程等领域的数据处理和分析。 在Go编程中使用Num...
    99+
    2023-08-05
    编程算法 开发技术 numpy
  • NPM和Apache:如何使用Java对象进行编程?
    随着互联网技术的迅速发展,越来越多的企业开始使用Java作为开发语言。而在Java开发中,有两个非常重要的工具:NPM和Apache。NPM是Node.js的包管理器,而Apache则是一个开源的Web服务器软件。在本文中,我们将探讨如何...
    99+
    2023-08-18
    对象 npm apache
  • 如何使用 Golang 协程进行 Web 编程?
    协程是一种轻量级的并发机制,可用来提升 web 程序性能。如何使用协程进行 web 编程:创建协程:使用 go 关键字。协程通信:使用管道(channel)传递数据。实战案例:一个简单的...
    99+
    2024-05-21
    协程 web 编程 golang
  • GO语言在Windows系统下如何使用Bash进行编程?
    在Windows系统下使用Bash进行编程是一种非常方便的方式,而GO语言是一种非常流行的编程语言。如果你想在Windows系统下使用Bash进行GO语言的编程,那么这篇文章将会为你提供一些非常有用的信息。 首先,你需要安装一个Bash ...
    99+
    2023-08-25
    windows bash 编程算法
  • Android进程间如何使用Intent进行通信
    这篇文章主要介绍“Android进程间如何使用Intent进行通信”,在日常操作中,相信很多人在Android进程间如何使用Intent进行通信问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Android进程...
    99+
    2023-07-05
  • 如何使用VS Code进行Python编程
    本篇文章给大家分享的是有关如何使用VS Code进行Python编程,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。Visual Studio Code,简称 VS Code,是...
    99+
    2023-06-17
  • Laravel 中如何使用 Python 进行编程?
    Laravel 是一款流行的 PHP 开发框架,它具有简单易用、高效稳定的特点。Python 是一门广泛应用于科学计算、人工智能等领域的编程语言。那么,如何在 Laravel 中使用 Python 进行编程呢?本文将为你详细介绍。 一、Py...
    99+
    2023-07-19
    unix 编程算法 laravel
  • 如何使用C++进行网络编程?
    随着互联网的发展,网络编程越来越成为计算机科学的重要组成部分。C++作为一种强大的编程语言,也对网络编程提供了不少支持。本文将介绍如何使用C++进行网络编程。网络编程概述网络编程是指编写程序用于使用计算机网络进行通信的过程。网络编程需要使用...
    99+
    2023-11-03
    Socket编程 C++网络编程 网络套接字
  • 如何使用 PHP 进行异步编程?
    php中的异步编程使用事件循环和回调,以实现并发任务执行。它可以通过libev扩展来实现,该扩展提供了一个事件循环,用于监听事件并执行相应的回调。异步网络编程示例展示了使用libev进行...
    99+
    2024-04-19
    php 异步 网络编程
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作