iOS
AIR
flash

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
を追加。