Как правильно обновить Samsung Accessory SDK 2.2.2 до 2.3.0?

В рамках добавления поддержки Android 6.0 Marshmallow в приложение Android мы обновляем различные зависимости. Одна из них - это библиотека в виде Accessory SDK от Samsung. Текущая версия библиотеки - 2.2.2, а последняя - 2.3.0 (которая является прямым преемником 2.2.2).

В версии 2.3.0 есть примечание о том, что это определенно то, что нам нужно:

Samsung Accessory SDK 2.3.0 (и выше) требуется для устройств на Android 6.0 (Marshmallow).

Итак ... время обновляться! Обновление зависимости кажется безболезненным, поскольку ошибок компиляции не происходит, а скачок версии был лишь незначительным (я знаю, конечно, я не могу на это полагаться, но обычно это дает «сигнал»). Кроме того, в примечаниях к выпуску явным образом не указываются какие-либо критические изменения, которые вы ожидали бы четко обозначить, если бы они были.

Но ... после обновления приложение-компаньон Android и носимое приложение Tizen (работающее на часах Gear S2), похоже, больше не могут устанавливать соединение и общаться друг с другом. Возврат к Accessory SDK версии 2.2.2 волшебным образом заставляет все снова работать.

Итак, что-то определенно изменилось. Фактически, похоже, есть критическое изменение, которое нигде четко не задокументировано.

Мой вопрос: что это за изменение (или изменения) и как правильно обновить Samsung Accessory SDK 2.2.2 до 2.3.0?


person MH.    schedule 26.11.2015    source источник


Ответы (1)


Итак, после долгого чтения и изучения различных уголков документации и форумов Samsung мне удалось найти критическое изменение и решение о том, как правильно выполнить обновление с Accessory SDK 2.2.2 до 2.3.0.

Прежде всего, есть два раздела примечаний к выпуску для Accessory SDK 2.3.0: один с датой выпуска 29 октября 2015 года, а другой - 3 сентября 2015 года. Я сравнил фактические jar-файлы, составляющие SDK, и, похоже, они быть идентичным, оставляя меня догадываться, что, вероятно, обновилась только документация и / или примеры. Тем не менее ... два «релиза» с одинаковым управлением версиями ... Да ладно, Самсунг!

В любом случае, во втором наборе примечаний к выпуску это упоминается:

При инициализации передачи аксессуаров и дополнительных файлов потребуются новые намеренные действия. Обратитесь к руководству по программированию для получения дополнительной информации.

Просматривая это «Руководство по программированию» - которое, кстати, кажется, было обновлено где-то между двумя выпусками 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. Обновление действий на новые исправляет все.


Обновление: похоже, я не единственный, кто пришел к такому выводу, глядя на эта ветка на одной из доск Samsung.

person MH.    schedule 26.11.2015