Edited at

AIR for iOS で複数のANEを使うと、まったく使えなくなる場合がある

More than 5 years have passed since last update.


コンパイルエラーが出ずに、ランタイム上で動かなくなる

下記によるとエラーが出る場合があるとのこと


-hideAneLibSymbols:(iOS のみ、AIR 3.4 以降)アプリケーション開発者は、複数のソースの複数のネイティブエクステンションを使用できます。また、複数の ANE で同じシンボル名が共有されている場合、ADT では「オブジェクトファイルでシンボルが重複している」という内容のエラーが生成されます。場合によっては、このエラーにより、実行時にクラッシュが発生する可能性もあります。hideAneLibSymbols オプションを使用すると、ANE ライブラリのシンボルをそのライブラリのソースのみに表示するか(yes)グローバルに表示するか(no)を指定できます。


Adobe AIR * ADT package コマンド

自分が直面した問題は、


  • コンパイル時: エラーなし

  • ランタイム上: 以下のエラーが出た



    • #3500: The extension context does not have a method with the name hogehoge



(ちなみに、このエラーはANEにないメソッドを呼ぶと起こるやつ。つまりANEがなんかの理由でおかしくなってる)


動かない例は TestFlightのANEとViberationのANEを同時に使うとき


  • com.adobe.Vibration

  • com.adobe.ane.TestFlightImpl

同時に使うとTestFlightのANEが動かなくなる。なぜか両方ともAdobeパッケージ!


解決策 → FlashBuilder4.7でやるか、adtコマンドでやるか

それか

adtコマンドに-hideAneLibSymbolsを追加するといけるらしいが、IDEと連携してないとなんしかきつい。


IDEAでの設定方法



[ProjectStructure] → [iOSのタブ] → Additional ADT options に

-hideAneLibSymbols yes

を追加。