2

Android 'Marshmallow' 6.0 のサポートを Android アプリに追加する一環として、さまざまな依存関係を更新しています。これらの 1 つは、Samsung のアクセサリ SDK の形式のライブラリです。ライブラリの現在のバージョンは 2.2.2 ですが、最新のバージョンは 2.3.0 (2.2.2 の直接の後継バージョン) です。

バージョン 2.3.0 には、これが間違いなく必要なものであることを示すメモがあります。

Android 6.0 (Marshmallow) のデバイスには、Samsung Accessories SDK 2.3.0 (およびそれ以降) が必要です。

というわけで...更新の時間です!コンパイル エラーは発生せず、バージョン バンプもわずかなものであったため、依存関係の更新は問題がないように見えます (もちろん、信頼できないことはわかっていますが、通常、これは「シグナル」を提供します)。また、リリース ノートでは破壊的変更が明示的に強調されていません。

しかし... 更新後、Android の「コンパニオン」アプリと Tizen ウェアラブル アプリ (Gear S2 ウォッチで実行) は、接続を確立して相互に通信できなくなったようです。アクセサリ SDK バージョン 2.2.2 に戻すと、魔法のようにすべてが再び機能するようになります。

だから、何かが確実に変わった。実際、どこにも明確に文書化されていない重大な変更があるようです。

私の質問: この変更 (または変更) とは何ですか? また、Samsung Accessories SDK 2.2.2 から 2.3.0 に正しくアップグレードするにはどうすればよいですか?

4

1 に答える 1

2

そのため、Samsung のドキュメントとフォーラムのさまざまなコーナーを読んで調べた結果、Accessory SDK 2.2.2 から 2.3.0 に正しくアップグレードする方法に関する重大な変更と解決策を見つけることができました。

まず、Accessory SDK 2.3.0 には 2 つのリリース ノート セクションがあります。1 つはリリース日が 2015 年 10 月 29 日で、もう 1 つは 2015 年 9 月 3 日です。SDK を構成する実際の jar を比較しました。おそらく更新されたのはドキュメントや例だけだと思います。それでも...同じバージョンの2つの「リリース」...さあ、Samsung!

とにかく、リリース ノートの 2 番目のセットでは、次のように言及されています。

アクセサリおよびアクセサリ ファイル転送を初期化するときに、新しいインテント アクションが必要になります。詳細については、プログラミング ガイドを参照してください。

この「プログラミング ガイド」に目を通してみると (ちなみに、2 つの 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 のボードの 1 つでこのスレッドを見て、この結論に達したのは私だけではないようです。

于 2015-11-26T20:56:10.623 に答える