Mac OSX版AIR20でANEを使用すると#3500エラーが発生します。
昨年12月のAIR20リリースの際に、Mac OSX版のAIRアプリケーションで使用しているANEに64bit対応を行いましたが、
正常に動作しなくなるという現象が発生しており、解決に向けたアドバイスを頂きたいです。
以下に現象と、対処内容を記載しました。長文ですみません。
ANEの64bit対応は以下のblogを参考にしました。
http://blogs.adobe.com/flashplayer/2015/12/air-64-bit-on-mac-osx.html
英語フォーラムに投稿されていたサンプルコードでも、同様の現象が起きているようです。
How do we get our OSX 64-bit ANE working with Air 20.0?
> As of January 2016, the following very simple ANE for Adobe Air 20.0 and OSX, builds but does not work.
現象:
FlashBuilder上のデバッグ実行、および、リリース版のネイティブインストーラーでインストールした
AIRアプリの両方で、ネイティブ拡張ライブラリのinitializer呼び出しが、#3500エラーになります。
ネイティブ拡張ActionScriptライブラリのコンストラクタ
package com.airsample.X
{
public function NativeLib()
{
_context = ExtensionContext.createExtensionContext("com.airsample.X.NativeLib", null);
// ここで ArgumentError: Error #3500: The extension context does not have a method with the name initialize になる
_context.call("initialize", null);
}
}
環境:
MacOS X 10.11.2(El Capitan) + XCode7.1.1
Flash Builder4.7 + FlexSDK4.6.0 + AIR SDK20.0
なお、AIR19までは、MacOS上のFlash BuilderでANEを含めたAIRアプリケーションのデバッグ実行が可能でした。すなわち、
・デバッグ実行時の起動オプションで、-extDirに.aneファイルをunzipしたフォルダを指定済み
・デバッグ構成のプロファイルにextendedDesktopオプションを指定済み
です。
また、今回64bit対応するにあたり、ソースコードそのものは全く変更していません。
そのため、パッケージ名やクラス名、関数名の間違いの可能性はないと考えています。
実施した作業手順:
・flex SDK4.6.0とAIR20 SDK(コンパイラなし)をDLして、それぞれ解凍し、フォルダをマージ。
・上記を、Flash Builder4.7のsdkフォルダ以下に展開(以後、新sdkと表記)
・Flash Builderの設定で、使用するFlex SDKを上記のものに変更。
・AIR20 SDK(コンパイラ付き)をDLして解凍し、/Applications/Adobe Flash Builder 4.7/eclipse/plugins/com.adobe.flash.compiler_4.7.0.349722 の下のAIRSDKフォルダと差し替え。
・Flash Builderの設定で、使用するAIR SDKのバージョンが20になっているのを確認。
・ネイティブ拡張ActionScriptライブラリのプロジェクトで、追加コンパイラー引数に”-swf-version 31”を指定。
・ネイティブ拡張ActionScriptライブラリ(NativeAne.swc)をビルド
・XCode上で、ネイティブ拡張ライブラリで使用するframeworkを、新sdkフォルダ内のAIR SDKとAIR_64に変更
・XCode上で、ネイティブ拡張ライブラリのframework Search Pathを新sdkのものに変更
・XCode上で、ネイティブ拡張ライブラリのarchitectureを”Standard Architectures (64bit intel)(x86_64)”に変更
・ネイティブ拡張ライブラリのプロジェクトをビルドしてエクスポートし、frameworkフォルダを生成。
・以前からあるextension.xmlを修正し、Plaformタグの”MacOS-x86”を”MacOS-x86-64”に変更
・また、extensionタグのxmlnsを”http://ns.adobe.com/air/extension/20.0”に変更
・ネイティブ拡張ActionScriptライブラリをunzipして、library.swfファイルを取得
・library.swfをMacOS-x86−64プラットフォームの作業フォルダにコピー。
・作成したframeworkフォルダを、上記で作成したものに変更して、以下のコマンドでANEファイル(NativeLib.ane)を生成
> “(新sdkフォルダ)/bin/adt" -package -storetype pkcs12 -keystore “署名ファイル” -tsa none -target ane “NativeLib.ane" extension.xml -swc “NativeAne.swc" -platform MacOS-x86-64 -C MacOS-x86-64 . -platform default -C default .
・作成したANEファイルおよびネイティブ拡張ActionScriptライブラリを、AIRアプリのプロパティで参照できるように、AIRアプリのフォルダに配置。
・ANEファイルは、起動オプションの-extDirで指定したフォルダにunzip。
・AIRアプリのアプリケーション記述ファイル(app.xml)のxmlnsを "http://ns.adobe.com/air/application/20.0”に変更
・AIRアプリのプロジェクトで、追加コンパイラー引数に”-swf-version 31”を指定。
・AIRアプリのプロパティでのFlexビルドパスと、Flexビルドパッケージオプションがblogの内容通りエラーになっているのを確認。
・新SDKのADTコマンドを用いて、拡張ネイティブインストーラーを作成。正常に作成できるが、実行すると上記の#3500エラーが発生。
・通常通りのデバッグ実行を行っても、同様に#3500エラー
