ネイティブ拡張の下位互換性

下位互換性と拡張のパブリックインターフェイス

ベストプラクティスとしては、拡張の ActionScript パブリックインターフェイスで下位互換性を維持します。拡張のすべての後続バージョンで、拡張のクラス、メソッド、プロパティおよびイベントを継続的にサポートします。

デバイスバンドル拡張には、下位互換性に関して、より複雑な問題があります。拡張の「動作」は拡張のバージョン間で異なる場合があります。例えば、あるメソッドが、新しいバージョンの拡張では新しい意味を持つ値を返すことがあります。デバイスバンドル拡張でこの動作が発生した場合、アプリケーションが正常に機能しなくなる場合があります。この問題は、アプリケーションの構築で使用された拡張のバージョンが、デバイス上にインストールされた拡張のバージョンと異なる動作をする場合に発生することがあります。この場合、アプリケーションが予期する動作に対して、インストールされた拡張が異なる動作を提供します。

このような場合は、デバイスにインストールされた拡張で、続行する方法を決定できます。拡張は次のことを実行できます。

  • AIR アプリケーションの構築に使用した拡張バージョンと、デバイスにインストールされたバージョンを確認します。

  • 拡張の動作がこの 2 つのバージョンで異なるかどうかを判断します。

  • AIR アプリケーションがより古いバージョンの拡張を使用して構築された場合は、古いバージョンの動作に戻します。

    注意: 通常、デバイスよりも新しいバージョンの拡張を使用して構築された AIR アプリケーションは、デバイスでは利用できません。詳しくは、 下位互換性とデバイスのアプリケーションストア を参照してください。

アプリケーションの構築に使用した拡張のバージョン番号を確認するには、以下を実行します。

  1. File.applicationDirectory を使用してアプリケーションのインストールディレクトリを取得します。

  2. File クラスの API を使用して、アプリケーションの構築で使用した拡張の extension.xml ファイルにアクセスします。このファイルは次の場所にあります。

    <application directory>/META-INF/AIR/extensions/<extensionID>/META-INF/ANE/extension.xml
  3. extension.xml ファイルのコンテンツを読み取り、 <versionNumber> エレメントの値を検索します。

インストールされた拡張のバージョン番号を確認するには、以下を実行します。

  1. ExtensionContext.getExtensionDirectory() 静的メソッドを使用して、拡張の基本ディレクトリを取得します。

  2. File クラスの API を使用して、デバイスにインストールされた拡張の extension.xml ファイルにアクセスします。このファイルは次の場所にあります。

    <extension base directory>/META-INF/ANE/extension.xml
  3. extension.xml ファイルのコンテンツを読み取り、 <versionNumber> エレメントの値を探します。

下位互換性とデバイスのアプリケーションストア

デバイスにインストールされた拡張よりも新しいバージョンの拡張を使用して構築された AIR アプリケーションは、通常はデバイスでは利用できません。アプリケーションが利用できない原因は、デバイスの製造元が、デバイスのアプリケーションストアから、そのようなアプリケーションをダウンロードするサーバーへの要求を処理する方法にあります。アドビはデバイス製造元に対して、次の処理を行うことをお勧めします。

  • サーバーが、新しいバージョンの拡張を使用するアプリケーションをダウンロードし、新しいバージョンの拡張もダウンロードする場合を考慮してください。この場合、デバイスのアプリケーションストアでは、アプリケーションと新しいバージョンの拡張の両方をインストールします。

  • サーバーが新しいバージョンの拡張をダウンロードできず、そのバージョンの拡張を使用するアプリケーションもダウンロードしない場合を考慮してください。この場合、デバイスのアプリケーションストアでは、このシナリオを正常に処理し、必要に応じてエンドユーザーに通知します。

  • サーバーは、新しいバージョンの拡張を使用するアプリケーションをダウンロードしますが、新しいバージョンの拡張はダウンロードしない場合を考慮してください。この場合、デバイスのアプリケーションストアでは、エンドユーザーがアプリケーションを実行できないようにします。アプリケーションストアでは、このシナリオを正常に処理し、必要に応じてエンドユーザーに通知します。