问题标签 [gomobile]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
go - gomobile init 找不到 stdlib.h
我正在尝试使用 go 制作一个跨平台的本机库,并找到了 gomobile 的本教程。但是,当我尝试初始化它时(即使我给出了 Android NDK 路径,尽管我没有在下面的示例中)它似乎失败了,因为它找不到stdlib.h
.
我试图对 cgo 进行一些调查,但没有任何反应,希望更熟悉生态系统的人可以为我指明正确的方向。
我的环境...(我在 OS X El Capitan 上,全新安装 go1.9 darwin/amd64)
编辑:(添加失败初始化的详细输出)
go - x/mobile/app 无法为 iOS 编译
您使用的是什么版本的 Go(go 版本)?
您使用的是什么操作系统和处理器架构(go env)?
你做了什么?
运行 gomobile bind -target ios 以获得具有一个功能的最简单的包。
你期待看到什么?
预计将成功绑定包以在 XCode 9.0 中使用
你看到了什么?
产生 1 个错误。
我在 github 上创建了问题。请问有什么帮助吗?
android - 将 JNIEnv 或 Context 从 Java 传递给 Go
我已经成功编写了一个 go 移动库并从一个 Android Java 应用程序中使用它。
我还成功地从 JNI 调用了 ac 函数。这个有 JNIEnv 指针。
我想将上下文/JNIEnv 从 Java 传递给 Go。
这似乎变得复杂了:
- Go Mobile 似乎根本不使用 JNIEnv。
- LoadJNI.java 确实有一个上下文对象,并声称将其传递给 Go 端。但是那里是不可见的。
- 我已经能够使用“C”指令包含 jni.h
- 我可以从 JNI/C 传输 JNIEnv 或将其作为全局变量存储在那里,但这是一个丑陋的组合。
- https://github.com/golang/go/issues/16876谈到了做反向绑定的提议,但目前尚不清楚状态是什么。
- https://godoc.org/golang.org/x/mobile/cmd/gobind也谈到了它,但下面的代码片段
import "Java/java/lang/System"
t := System.CurrentTimeMillis()
返回
在 CI 中使用编译器指令解决了它:#cgo CFLAGS: -I...
但我不确定如何为 Java 做到这一点
简而言之,我现在陷入困境,希望得到帮助。理想情况下,如果可能的话,我只想将对象作为参数传递。但是,我愿意接受任何反向绑定以从 Go 调用 Java。
go - 在 mac OS Sierra 10.12 上安装 gomobile
我正在尝试在 mac OS Sierra 10.12 上安装 gomobile。我已经安装了 1.7.1 版。
完成以下步骤后:
go get golang.org/x/mobile/cmd/gomobile
gomobile init
我收到以下错误
java - gomobile如何在apk中嵌入资产
使用适用于 Android 的 gomobile 进行开发时。如何在 apk 文件中包含资产(html、js、图像)?我有一个在 apk 内运行的 web 服务器,它在 apk 内以及 go run 内工作,但是当打包在手机上的 apk 内时,服务找不到它的资产/静态文件。
android - 如何将简单的 Go 脚本作为 Android 服务运行?
我有以下 Go 脚本 ( testapp.go ),我想继续作为后台服务运行:
我的GoNativeActivity.java看起来像这样:
我的GoNativeService.java看起来像这样:
我的AndroidManifest.xml文件如下所示:
这是我的工作环境:
这是我的$GOPATH/src/testapp目录的样子:
这是我的$GOPATH/src/golang.org/x/mobile/app目录的样子:
如何在 Android 上将我的 Go 脚本作为后台服务运行,以便在退出应用程序(MainActivity 关闭)时,后台服务将继续获取新闻消息?
注意:我在端口 88 上监视我的网络服务器上的请求。我可以在GoNativeActivity
活动时很好地运行脚本,但我想知道如何构建一个启动后台服务的本机应用程序。
任何答案或尝试指出我正确的方向将不胜感激!
ios - 带有“禁用 PIE”/i386 拱门的 Gomobile 绑定生成库
我已经使用 gomobile 绑定工具构建了我的 Go 库以在 iOS 应用程序中使用。我已经将我的库包装到 Cocoapods .podspec 中。它在模拟器中运行良好(通过本地开发 pod),但是当我尝试做pod lib lint
(部分步骤,发布 cocoapod 的一部分)时,我遇到了错误:
错误:
警告:
它似乎链接到其他架构。我无法弄清楚如何跳过 i386 - 即使我覆盖了 VALID_ARCHS - 我想它无论如何都不是正确的解决方案。
所以相反,我想知道如何从我的 Go 代码中构建一个正确的二进制文件——我尝试将 -ldflags="-extldflags=-pie" 提供给 gomobile bind 命令,但我假设它更多的是编译问题。我知道有 -buildmode=pie 可用于 go build,但仅适用于主包,也不适用于 gomobile 绑定。
ios - gomobile:绑定 ObjC 的回调
我有一个 Go 界面
我必须使用此接口从 ObjC 订阅该事件 OnResult。
ObjC bind 给了我一个对应的协议和一个基础类
所以,我需要在我的 ObjC 环境中获取这个 json。我怎样才能做到这一点?
- 子类化如果我将此 GetResponse 子类化,或者只是按原样使用它并传递给订阅例程,它会崩溃 'go_seq_go_to_refnum on objective-c objects is not allowed'
类别如果我使用协议支持在 Go 端创建结构,我不能对其进行子类化,但至少它不会崩溃:
我有一个实体对象,没有明显的方法来连接我的回调。如果我创建一个类别并覆盖 onResult 例程,则不会调用它。仅仅因为覆盖现有的类方法不是根据 AppleDoc 确定的行为。任何时候从 Go 调用 OnResult,都会调用默认实现并出现“GO RESULT”。
Swizzling我尝试使用 category 和 swizzle(用我的重命名方法替换方法的实现),但它只有在我从 ObjC env 调用 onResult 时才有效。
有什么办法可以解决我的问题吗?或者我只是不很准确地红色文档?请帮我
android - 无法从 golang 将 AAR 导入我的应用程序(尝试了以前的答案,但它们不起作用)
我正在尝试制作一个可以包含在 Android 应用程序中的 golang 包。
所以我有
- 创建了一个 golang 模块并使用 go bind to aar 构建它
- 在 Android Studio 中使用“新模块”导入 aar
- 转到项目结构/依赖项/...连接 aar,但未列出 aar,所以我无法添加它。
- 该模块似乎在 android/mobile 中;我如何告诉 Android Studio?我需要吗?
所以
- 有谁知道我需要绑定的确切命令行是什么?假设,假设我正在项目“hk.nurke.fred”中尝试模块“移动”。
- 另外,如何在 java import 语句中引用我的包?