[Adobe AIR Advent Calendar 2013 9日目] ANEのログ確認方法

投稿者: | 2013/12/10

なんか折角のAdventCalendarが9日目で途切れるというのもあれなので、場繫ぎ的に投下。2回以上同じ人が担当するのもどうかと思ったのですが、どうせこの日は書かれてないので、まぁないよりマシなんじゃないかと勝手に納得しておきます。

前置き

さて、8日目のitozさんの記事を見て、なんとかANEttyと連携できないかなー、と思って僕も試してみました。
http://blog.romatica.com/2013/12/08/ios_air_xcode_ane_templat/

結論から先に書くと、出来ないっぽいと。itozさんの紹介された「xcode-template-ane」はXcodeを軸として既に環境自体が完成しているものなので、混ざり様がないですね、はい。

デバッグの際にはdebugIPA.shが使われてるのは判ったのですが、これってファイルの操作が書かれているだけで、コンパイル関連は別の機構っぽい。ここらへんはXcode全く判らん僕にはお手上げです。
https://github.com/divijkumar/xcode-template-ane/blob/master/AIR%20Native%20Extension/AIR%20Native%20Extension%20for%20iOS.xctemplate/debugIPA.sh

FlashBuilder + ANEttyで作り上げたipaを使って、そのパス指定してやればできないかなー、と淡い期待を抱きましたが、いろいろ判らんエラーが出たので断念。

まぁ、そんな訳で、別のログ確認方法の提案でも。

つってもそんな難しい事ではないのですが。単純にネイティブ側でtraceメソッドっぽいのを作って、そこに入れた文字列をAS側にdispatchしてやるってだけです。codeプロパティにはtraceを意味するコードを。levelプロパティにはその内容を書くと。

FREDispatchStatusEventAsync(context, (const uint8_t*)"trace", (const uint8_t*)"ほげほげ");

みたいな感じですね。上記はメソッドの中身のみで、文章決め打ちですが。文章は引数で入れてやればいいですね。後はそれをAS側で受け取って、AS側でtraceするなり、別の扱い方を行うなり。

ただ、コストは多少かかると思いますので、あまり乱用はしない方がいいかもしれません。ANEの作り方によっては、traceのディスパッチをON/OFFできるメソッドを作って、そのコストを操作できるように機構があってもいいかと。

メリットとしては、この方法だと、Windowsでデバッグを行う時も、ある程度の情報が知れるというところでしょうか。当然aファイルはMacでしか作れないので、aneを作った後のデバッグに限られますが。aneファイルを配布するときとかは有効かもしれません。

なんだかんだで、皆Flashの構築環境でAIR開発してると思うので、そこのコンソールにネイティブの情報が出た方がコンテンツの開発はしやすいと思います。NSLogやらがいい事もあるかとは思いますので、まぁ適材適所で。traceメソッドの中に一緒にNSLog書いてもいいですしね。

次回のANEttyのアップデートでは、テンプレートの強化に加えて、ExtensionUtilでも付け足そうかと思っていますので、そこにでも作ろうかと考えています。

まぁ、ANEやってる人なら皆やってそうな気もしますが、以上、ちょっとしたANEのTipsでした。