【问题标题】:Is FileUpload functionality for Azure IoT Java SDK possible on Android?Azure IoT Java SDK 的 FileUpload 功能是否可以在 Android 上使用?
【发布时间】:2019-04-26 02:26:24
【问题描述】:

我们一直在尝试在 Android 上使用 Azure IoT SDK for Java(通过 Kotlin)来启动 blob 文件上传。在收到 SAS 令牌并调用 CloudBlockBlob 构造函数后,该进程似乎挂起。

所以我尝试直接调用构造函数并发现依赖于 javax.xml.stream.XMLOutputFactory,因为它依赖于 Azure Storage SDK v. 2.2(出奇的老!)。 javax 库 AFAIK 不容易集成到 Android 上。

有一个单独的 Android 存储 SDK(它可能没有这些依赖项),但是除了 IoT SDK 之外还包括它会导致大量 Duplicate Class 错误,这是可以理解的。

解决这个问题的方法是什么? Fork Azure IoT SDK for Java 并将存储 SDK 引用替换为 Android 版本?

【问题讨论】:

    标签: android azure azure-storage azure-iot-hub azure-java-sdk


    【解决方案1】:

    在app的build.gradle中,将依赖项声明如下,将azure-storage替换为azure-storage-android:

    implementation ('com.microsoft.azure.sdk.iot:iot-device-client:1.14.2'){
        exclude module: 'azure-storage'
    }
    implementation ('com.microsoft.azure.android:azure-storage-android:2.0.0@aar')
    implementation ('org.apache.commons:commons-lang3:3.6') 
    

    这在我们的示例中有记录:https://github.com/Azure-Samples/azure-iot-samples-java/edit/master/iot-hub/Samples/device/AndroidSample/app/build.gradle

    如果您遇到更多问题,请提交 GitHub 问题 here,让我们知道。

    【讨论】:

      【解决方案2】:

      我还没有尝试过 azure IOT,但我已经阅读了他们关于 SDK supports android now 的公告。他们甚至有一个sample,还有一个写得很好的quick start。对于安装,他们甚至在github 上都有说明。

      【讨论】:

        【解决方案3】:

        您可以使用 REST API 调用来上传具有 Azure IoT 中心支持的 blob 文件。有3个步骤,看我的回答here

        【讨论】:

        • 是的,完全放弃 REST 的 IoT SDK 是一种选择,只是没有吸引力。放弃 SDK 的(可能的)弹性并自行开发,而不是调整 IoT SDK 以使用 Azure Android Storage SDK。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-07-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多