簡體   English   中英

gomobile 構建,Paho mqtt 客戶端無法連接到 APK 中的 mqtt 代理

[英]gomobile build, the Paho mqtt client cannot connect to mqtt broker in APK

我正在做一個項目,我需要使用gomobile 工具來創建一個 Android 應用程序。 我在 Go 中的示例代碼如下

    var broker = "127.0.0.1"
    //var broker = "broker.mqttdashboard.com"
    var port = 1883
    opts := mqtt.NewClientOptions()
    opts.AddBroker(fmt.Sprintf("tcp://%s:%d", broker, port))
    opts.SetClientID("go_mqtt_client")
    opts.SetConnectionLostHandler(connectLostHandler) // define what to do when connection is lost
    client := mqtt.NewClient(opts)
    tokenClient := client.Connect()
    if tokenClient.Wait() && tokenClient.Error() != nil {
        panic(tokenClient.Error())
    }
    ...

當我使用"gomobile bind"綁定此代碼時,生成 Golang 插件並在 android 項目中調用它們時,沒有問題。 連接很滿意,我可以驗證本地 mqtt 代理 (mosquitto) 和 mqtt 客戶端應用程序也在通信。

但是當我使用"gomobile build -target=android"生成 APK 文件時,連接函數會生成並出錯。 為了能夠測試日志,我使用了公共代理而不是本地 mqtt 代理。 我更換了

var broker = "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”時它正在工作?

這是我解決問題的方法。

  1. 我將 AndoridManifest.xml 文件添加到主 go 包所在的目錄中。

  2. 在清單標簽之間添加了以下行(<manifest>)

    <uses-permission android:name="android.permission.INTERNET">

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM