问题标签 [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.

0 投票
0 回答
57 浏览

android - 无法将 Android AAR(带有 JNI 绑定)与 Jitpack 上的源关联

使用 Gomobile,我们有一个aar格式的 Android 库,以及一个jar包含源代码的文件。

在 Android Studio 中使用该库将具有混淆的参数名称,这使得它难以使用。手动可以将源 jar 文件链接到aar库的使用者可以看到有意义的参数名称。

该库目前在 jitpack.io 上发布。我们的构建过程不涉及gradle,因为我们gomobile用来生成完成的 AAR,如下所示:

从这个命令我们得到Library.aarLibrary-sources.jar

在我们的jitpack.yml文件中,我们有特定的 Maven 安装命令来上传我们的 aar 和 jar 文件,例如:

通过转到存储库的 jitpack master-SNAPSHOT,我可以看到pom生成了一个文件,aar并且源代码jar都在线。

在 Android Studio 中,当我implementation 'com.github.username:Library:master-SNAPSHOT作为依赖项添加到我的应用程序模块时,aar下载得很好并且我可以使用它,但是源 jar 不存在。如果我在 IDE 中打开生成的 java 类,我可以看到从 jitpack 获取的字节码的反编译版本,并带有“下载源”选项。单击它不会执行任何操作。

如何通过 jitpack 将我的源 jar 与其 aar 关联起来。就此而言,有没有办法可以将源 jar 烘焙到 AAR 本身中?没有任何真正的 java 代码,只有一些native我们希望库的用户能够看到的带有参数名称的方法。

0 投票
0 回答
162 浏览

android - 如何使用 golang 对象在 Android 中实现客户端侦听器?

问题描述:

我正在做一个小项目,我需要将现有的 mqtt 客户端库从 Golang 移植到 Android。我发现使用 gomobile存储库可以防止在不同的编程语言(GO 和 Java)中重复相同的功能。

要使用这个库,我们有两种不同的选择:

  1. 纯粹在 Go 中设计 android 应用程序并使用“gomobile -build”生成 APK 文件。然后可以使用 adb 工具将 APK 文件加载到 android 设备或模拟器。
  2. 实现一些功能,然后使用“gomobile -bind”将它们绑定到现有的 Android 项目中。使用此选项,转换和构建 Golang 对象有一些限制

对于我的情况,我计划选择第二个选项。还尝试将以下小示例 GO 实现转换为 Android(从此处借用)。

我的问题:

转换示例代码后,我不确定如何实现侦听器端。问题是“gomobile -bind”不能转换所有用户数据类型(即客户端到Java)。我可以实现连接、订阅和发布,但不能实现监听器(换句话说,当我在 Android 中调用相应方法时,“opts.SetDefaultPublishHandler(messagePubHandler)”不会重复工作)

有什么建议吗?

这是尝试过的,但它不起作用

0 投票
1 回答
72 浏览

android - 使用 gomobile 工具从 Go 生成“.APK”文件后无法识别文件

我正在做一个项目,我需要使用gomobile工具从 Golang 代码库生成一个 APK 文件。计划是能够在 android 平板电脑上运行它。当我在平板电脑上安装 apk 文件时,通过 Android Studio 我收到以下错误。

但是,在单击错误消息中的给定路径后,Android Studio 会打开它抱怨查找的文件 (config.json)

这是我在 Go 中的源代码

任何建议如何修复文件路径?

0 投票
1 回答
150 浏览

apk - gomobile build,Paho mqtt 客户端无法连接到 APK 中的 mqtt 代理

我正在做一个需要使用gomobile 工具来创建 Android 应用程序的项目。我在 Go 中的示例代码如下

当我使用“gomobile bind”绑定此代码时,生成 Golang 插件并在 android 项目中调用它们没有问题。连接很满意,我可以验证本地 mqtt 代理(mosquitto)和 mqtt 客户端应用程序也在通信。

但是当我使用"gomobile build -target=android"生成 APK 文件时,连接函数会生成并出错。为了能够测试日志,我使用了公共代理而不是本地 mqtt 代理。我更换了

var经纪人=“127.0.0.1”

通过 HiveMQ 公共代理地址(我已经验证了公共代理功能)

var broker = "broker.mqttdashboard.com"

从 mqtt 客户端应用程序连接到 mqtt 代理似乎存在问题。这是我在日志中找到的确切错误消息:

E/Go:恐慌:网络错误:拨号 tcp:查找 broker.mqttdashboard.com:没有与主机名 goroutine 11 [运行]关联的地址:E/GoLog:恐慌:网络错误:拨号 tcp:查找 broker.mqttdashboard.com:否与主机名 E/Go 关联的地址:main.starting()

这是由我的代码中的“panic(tokenClient.Error())”部分生成的。

知道为什么连接没有使用“gomobile build”解决,而当我使用“gomobile bind”时它正在工作?

0 投票
1 回答
149 浏览

android - “gomobile build”如何创建文件和写入文件(安装在三星平板电脑上的外部 micro-SD 卡)(在 APK 中)?

原始问题:

有谁知道gomobile构建(非绑定)如何支持文件系统?如本讨论所述,我能够使用资产包打开和读取文件。

但不确定如何在 gomobile 生成的 APK 文件中创建对新文件的写入,我可以在 Go 中运行以下充足的代码并验证是否使用提供的消息创建了“testFile.txt”。

但是在生成 APK 文件并在平板电脑(Android)上运行后,我得到如下文件访问错误,并且没有创建“testFile.txt”。

I/GoLog:打开 testFile.txt:只读文件系统

任何提示表示赞赏。

根据此说明更新了我的问题:

你使用的是什么版本的 Go('go 版本')?

这个问题会在最新版本中重现吗?

不适用

您使用的是什么操作系统和处理器架构('go env')?

视窗 10 专业版

你做了什么?

在原始问题部分进行了描述,但总而言之,我需要添加一个能够将日志写入三星 S6 lite 平板电脑上已安装的微型 SD 卡的功能。这是我在 Go 中编写文件时遵循的示例代码。它在我运行 go 时有效,但在平板电脑上生成和安装 APK 文件后我遇到只读错误消息

你期待看到什么?

期望 Android 应用程序(安装为 gomobile 构建生成的 APK 文件)能够创建文件并写入创建的文件

你看到了什么?

只读错误信息。

I/GoLog:打开 testFile.txt:只读文件系统

0 投票
0 回答
69 浏览

go - 在 gomobile 上启动另一个 android 活动

使用 golang android 库“gomobile”制作全能的 android 应用程序时,如何从 go 代码启动另一个活动?

org.golang.app.GoNativeActivity正在启动并正常工作。我想在同一个应用程序中启动另一个活动,特别是“受信任的 Web 应用程序活动”。

尝试通过在 AndroidManifest.xml 中添加一个活动来打开意图深层链接,但它说com.google.androidbrowserhelper.trusted.LauncherActivitygomobile can only build an .apk for GoNativeActivity, not com.google.androidbrowserhelper.trusted.LauncherActivity

我不想在第二个活动中编写任何逻辑。我只想在 webview (TWA) 中显示一个网页 - 就像在应用程序在后台运行时打开浏览器一样。所有逻辑都将在 main 中运行GoNativeActivity,(这是一个没有 UI 的本地 Web 服务器)

在不使用 Android Studio 项目的情况下是否有解决此问题的方法?

0 投票
0 回答
54 浏览

android - 如何从主机设备访问在 android 模拟器中创建的 localhost web http 服务器

您好,我在 golang 中创建了一个 Web 服务器,我已将其编译为 JAR/AAR 库,并将该库链接到我的项目,我能够启动 Web 服务器但无法通过我的主机(macos ) 我可以在我的控制台中看到:

但是当我尝试使用邮递员从我的主机设备查询这个网络服务器时,我得到了:

我的 android 清单看起来像:

戈朗代码:

使用相同代码在 ios 上运行良好,但在这里我无法查询我的 http 服务器:/

我想澄清一下,我想从hostmachine (MacOS)toemulator (Pixel XL API 30)而不是相反的方式访问,我相信需要 10.0.2.2 端口

0 投票
0 回答
24 浏览

android - 使用 gomobile 的 Android 文件服务器处理程序

我正在使用 gomobile 将 Golang 代码转换为 Android。当前的 Golang 代码支持桌面的 webvew 服务。我也需要为 webview 平板电脑提供相同的服务(在平板电脑上使用 chrome 浏览器)。

在 golang 的根目录中,我有以下目录:

我想确保通过访问 locahost:<port_number> 浏览器将用户重定向到 index.html 页面。

这是我在 go lang 中使用的 http 处理程序部分代码

但是当我在平板电脑的 chrome 浏览器中尝试“localhost:9090/”时,它会将我重定向到平板电脑的根目录。

是否有任何建议通过在平板电脑上的 chrome 中浏览“localhost:9090”来重定向到 index.html 页面?

我的方法:

我认为一种解决方法是将 ui 目录的内容移动到平板电脑根目录之一,例如“/sdcard/DCIM”。我做了一个如下的小例子,看起来很有效。

并更新golang代码如下:

但是使用这种方法,每次我们对 ui 目录进行任何更改时,我们都应该更新平板电脑上的文件。

另一个解决方法是将 ui 目录移动到 assets 目录,如本线程中所述。但是,不确定如何通过这种方法使用“http.FileServer”,或者是否有更好的替代“http.FileServer”。

我感谢任何建议或评论。

0 投票
0 回答
57 浏览

go - golang中的可移动SD卡路径查找器

我正在使用 golang 和gomobile开源包进行 android 应用程序开发。通过这种方法,我可以生成 APK 文件,然后在平板电脑上安装和启动 android 应用程序。

我需要找到用于写入/读取的 sdcard(辅助内存)的路径。我知道我们可以使用以下函数在 Android 中找到二级内存路径。

目前,在我的 golang API 中,我已经硬编码了 sdcard 路径并且它正在工作。我通过开发一个小的纯Android项目并使用“getExternalFilesDirs(”“)”函数获得了sdcard路径。

但这不是一种实用的方法,因为每个 Android 设备的路径可能不同。

我的问题: 在 Golang 中是否有任何类似的功能可以让我在平板电脑上安装 sdcard 的路径?

0 投票
1 回答
111 浏览

go - 如何在 Windows 上正确安装 gomobile?

我在 Windows 10 上,安装了 go 1.16.7 windows/amd64。已经将GOPATH定义为 C:\Users\anta40\Codes\Go.

GOPATH中,我运行了以下 2 个命令:

好的,现在让我们运行gomobile

'gomobile' 不是内部或外部命令、可运行程序或批处理文件。

嗯..这里缺少什么?