Skip to main content
daisuke nakagawa
Participating Frequently
January 22, 2016
Question

Mac OSX版AIR20でANEを使用すると#3500エラーが発生します。

  • January 22, 2016
  • 1 reply
  • 960 views

昨年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エラー

This topic has been closed for replies.

1 reply

February 10, 2016

Xcodeの設定で、AIR SDKを19(framework Search Pathで、先に通しても良い)(AIR_64は20)にしたら、動きました。

私も、同じ様なことをしていますが、たまたま動いて、設定を見直して気づきました。

とりあえず、どうなるか試してみて欲しいです。

daisuke nakagawa
Participating Frequently
February 10, 2016

情報ありがとうございます。試してみます。

こちらのその後の状況を追記すると、

adobeから、「1/7付けで現象を確認し、不具合と認識しているが、解決のめどは立っていない」という返答をもらっています。

また、英語のフォーラムでは、ネイティブ拡張ライブラリを、標準C/C++で書けば動作する、という告があり、実際動作しました。

私の環境では、Cocoaのイベント処理をいたいので、ネイティブ拡張ライブラリをCocoa frameworkとして作成していたのですが、

その状態でANEとのI/F関数だけをC/C++にできるかどうかはまだ試せていません。