[AS][iPhone]AIR for iOSにおいてANEファイルを含めたビルドをするには、”mac版”のFlashBuilder4.6一択という残念な現実(GUIを頼りにする場合)
タイトル通りなんですが、そこにたどり着いた経緯をダラダラ書いておきます。
AIR for iOSで作ったアプリはマナーモード(正式にはサイレントスイッチ)ON状態でも音がなってしまいます。
(Flashからはそこを制御するAPIが用意されていないようです)
が、NativeExtension for Air(ANE)という機能が用意されており、自分で足りないAPIを補うANEを用意することでAIR for iOSでもできることを拡張することができます。
ANEはネイティブコード(Objective-Cとか)で作れますが、めんどくさい。
サイレントスイッチを何とかするANEもきっと誰かが作ってくれてるはず。
と、ググってみるとあっさり見つかりました。
StickSports / ANE-Silent-Switch
ソースからANEファイル、テスト用のコード(testフォルダ)まで入っていました。
とりあえずこのテストコードを実機で試してみよう!
と思ったら落とし穴いっぱいだったというお話です。
・はまりポイント1
testコードビルド方法がよくわからず。
READMEには
Antビルドスクリプトのテスト/ build.xmlをビルドし実行します。これは、テストの/ binフォルダ内のテストのIPAを作成します。
Antでビルド?なにそれおいしいの?
FlashDevelopとかFlashCS6でできないの?
できるだけ慣れてるやつでやりたいです。
まずはFlashDevelop。
・はまりポイント2
FlashDevelopでaneファイルを紐付けたビルドがよくわからず。
aneを使ってのFlashDevelopでのビルド例としてこの記事を教えてもらったけども、じっくり読む前にとりあえずFlashCS6にはaneの設定が増えているからきっと簡単にできるだろう、とFlashCS6に逃げる。
2012/06/18 追記
FlashDevelopでaneビルドできましたので記事書きました。
・はまりポイント3
FlashCS6でaneファイルを正しく設定していざパブリッシュ。
すると、こんなエラーが大量に出現。
ld warning: unexpected srelocation type 9
ググってみるといろいろ記事がでてきてiOSのsdkがなんちゃらとか、コマンドラインからもろもろ設定したADTを叩くとかさくっと解決できそうな方法は見つからず。
一番簡単そうなのは、MUSHIKAGO APPS MEMO さんの記事で、FlashBuilderなら「Apple iOS SDK」という項目に最新のiOSのSDKを指定しておけば大丈夫っぽいとのこと。
だがしかし、FlashCS6にはそのような項目がどこにも見あたらず・・・
せっかくaneファイルを簡単に設定できるようになってるのに世の中に落ちてるものを簡単に使えないんじゃ意味無いじゃん・・・
というわけで、解決策のあるFlashBuilderに逃げることに。
・はまりポイント4
Xcode4.3から最新のiOS5.1.sdkフォルダをまるっとwindowsにコピーしてさぁ設定しようかと思ったら。
Win版のFlashBuilderではこの機能が使えないとな・・・
値段一緒なのに。。Windowsユーザーをバカにしてんの。。
というわけで、macのFlashBuilderで試してみたらようやくと実機でテストが正常に動きましたよ、と。
・結論
GUIを使ってANEを含んだビルドしたい人は、とりあえずmac版のFlashBuilde4.6を使うしかないみたい。
とりあえずバージョンアップなりでもうちょっとなんとかしてくださいよ、アドビさん。