2

作为向 Android 应用程序添加对 Android 'Marshmallow' 6.0 支持的一部分,我们正在更新各种依赖项。其中之一是三星 Accessory SDK 形式的库。该库的当前版本是 2.2.2,而最新版本是 2.3.0(它是 2.2.2 的直接后继版本)。

版本 2.3.0 有一个注释表明这绝对是我们想要的:

搭载 Android 6.0(Marshmallow) 的设备需要 Samsung Accessory SDK 2.3.0(及更高版本)。

所以……是时候更新了!依赖项更新似乎很轻松,因为没有发生编译错误并且版本碰撞只是一个小错误(我当然知道我不能依赖它,但通常这确实提供了一个“信号”)。此外,发行说明没有明确强调任何重大更改,如果有的话,您希望清楚地指出。

但是……更新后,Android“伴侣”应用程序和 Tizen 可穿戴应用程序(在 Gear S2 手表上运行)似乎不再能够建立连接并相互通信。恢复到 Accessory SDK 2.2.2 版神奇地使一切恢复正常。

所以,有些事情肯定发生了变化。事实上,似乎有一个突破性的变化在任何地方都没有明确记录。

我的问题:这是什么变化(或变化)以及如何正确从三星配件 SDK 2.2.2 升级到 2.3.0?

4

1 回答 1

2

因此,经过大量阅读和查看三星文档和论坛的各个角落后,我设法找到了有关如何从 Accessory SDK 2.2.2 正确升级到 2.3.0 的重大更改和解决方案。

首先,Accessory SDK 2.3.0 有两个发行说明部分:一个以 2015 年 10 月 29 日为发布日期,另一个为 2015 年 9 月 3 日。我比较了组成 SDK 的实际 jar,它们似乎相同,让我猜测它可能只是更新的文档和/或示例。仍然......两个“版本”具有相同的版本......来吧三星!

无论如何,第二组发行说明提到了这一点:

初始化附件和附件文件传输时将需要新的意图操作。有关详细信息,请参阅编程指南。

浏览这个“编程指南”——顺便说一句,它似乎在两个 2.3.0 版本之间的某个地方进行了更新——我注意到第 3.3.1 节(第 19 页)中的以下注释:

笔记。操作名称从 2.3.0 更改。为了向后兼容,旧的操作将持续支持一段时间。

此外,它似乎属于这个代码片段:

<receiver android:name="com.samsung.android.sdk.accessory.ServiceConnectionIndicationBroadcastReceiver">
    <intent-filter>
        <action android:name="com.samsung.accessory.action.SERVICE_CONNECTION_REQUESTED"/>
    </intent-filter>
</receiver>
<receiver android:name="com.samsung.android.sdk.accessory.RegisterUponInstallReceiver">
    <intent-filter>
        <action android:name="com.samsung.accessory.action.REGISTER_AGENT"/>
    </intent-filter>
</receiver>

由于它再次提到了这些操作,我将它们与我的应用程序清单中的操作进行了比较,果然,还是有区别的。我对这些接收者的行动说:

<action android:name="android.accessory.service.action.ACCESSORY_SERVICE_CONNECTION_IND" />

<action android:name="android.accessory.device.action.REGISTER_AFTER_INSTALL" />

将动作更新为新动作后com.samsung.**,一切又开始工作了!

总结一下:发布说明中声称“为了向后兼容,旧操作将在一段时间内持续支持”的声明根本不正确。不再支持旧的操作,导致当您从 2.2.2 更新到 2.3.0 时会出现中断。将动作更新为新动作可以解决所有问题。


更新:看来我不是唯一一个得出这个结论的人,在三星的一块板上查看这个线程。

于 2015-11-26T20:56:10.623 回答