作为添加对Android' Marshmallow'的支持的一部分。 6.0到Android应用程序,我们正在更新各种依赖项。其中一个是三星的Accessory SDK形式的库。该库的当前版本是2.2.2,而最新版本是2.3.0(这是2.2.2的直接后继版本)。
版本2.3.0有一个注释,表明这绝对是我们想要的:
Android 6.0(Marshmallow)上的设备需要Samsung Accessory SDK 2.3.0(及更高版本)。
所以...时间更新!依赖性更新似乎是无痛的,因为没有发生编译错误,并且版本颠簸只是次要的(我当然知道我不能依赖它,但通常这确实提供了一个'信号' )。此外,release notes没有明确突出显示任何重大更改,如果有任何更改,您可能会明确指出这些更改。
但......更新后,Android'同伴' app和Tizen可穿戴应用程序(在Gear S2手表上运行)似乎不再能够建立连接并相互通信。恢复到Accessory SDK 2.2.2版本神奇地使一切都恢复正常。
所以,肯定会有所改变。事实上,似乎有一个打破更改,无法在任何地方明确记录。
我的问题:这个更改(或更改)是什么以及如何从Samsung Accessory SDK 2.2.2正确升级到2.3.0?
答案 0 :(得分:2)
因此,经过大量阅读和查看三星文档和论坛的各个角落后,我设法找到了如何从Accessory SDK 2.2.2正确升级到2.3的重大变化和解决方案。 0
首先,Accessory SDK 2.3.0有两个发行说明部分:一个是2015年10月29日作为发布日期,另一个是2015年9月3日。我比较了构成SDK的实际jar,以及它们似乎是相同的,让我猜测它可能只是文档和/或更新的例子。仍然......两个'发布'使用相同的版本... C' mon Samsung!
无论如何,第二套发行说明提到了这一点:
初始化附件和附件文件传输时,将需要新的意图操作。有关更多信息,请参阅编程指南。
通过这个编程指南 - 顺便说一下,似乎已在两个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.**
之后,一切都重新开始了!
总结:发行说明中的声明声称&#34;为了向后兼容,旧的操作将持续支持一段时间&#34; 根本不是真的。不再支持旧操作,从2.2.2 tot 2.3.0更新时会导致破坏机会。将操作更新为新操作可以解决所有问题。
更新:看来我不是唯一一个得出这个结论的人,看着三星董事会的this thread。