カテゴリー別アーカイブ: AIR

xflファイルでライブラリパスに相対パス指定したANEがパッケージに追加されない

Flash CC/CS6で、AIR for Androidの書き出しをしようとして躓いたのでメモ。

・ファイル>ActionScript設定…>ライブラリパスで、ANEファイルを選択。
・ファイル>AIR for 3.8.0.xxx Android設定…を開くと、「一般」の「含めるファイル」に選択されたANEファイルが追加されている。
この状態でパブリッシュして実機確認は問題なし。
ただこのままだとライブラリパスは絶対パスになっているので、ファイルのやり取りをする際に面倒(環境依存)なので、ライブラリパスを相対パスに書き換えることにした。
相対パスに書き換えて、ファイル>AIR for 3.8.0.xxx Android設定…を開くと、「一般」の「含めるファイル」から選択されたANEファイルが消えてしまいます。当然、パブリッシュしてもANEが含まれてないため、実機で動作せず。
またファイル>AIR for 3.8.0.xxx Android設定…を開いて、「一般」の「含めるファイル」に該当するを手動で追加した上でパブリッシュしてもダメ。ANEはlibというディレクトリにまとめてあったためか、「含めるファイル」では「lib/xxxxx.ane」と表示されている(絶対パスの際には、lib/ は表示されていなかった)。念のため、xflを含むディレクトリと同階層にそのままaneを置いて追加していたが、表示こそ「xxxxx.ane」となるものの、やはりパブリッシュしても動作せず。
ライブラリパスの相対指定をflaファイルで行うと、「一般」の「含めるファイル」にANEは追加されたままで、パブリッシュしての動作は問題ありませんでした。
どうししてもxflじゃなきゃダメってことでもないけど、釈然としない結果に。基本的にANE使うときは、flaファイルの方がいいようです。
※Flash CC/CS6+Mac OSX 10.7.5+MacBookProで確認しました。

AIR for iOSでCameraUIを使ったアプリが落ちる件について

Flash Bulider4.6でCameraUIクラスを使ったiOSアプリのテストをしていたんですが、何度かカメラを呼び出して(CameraUIはiOSのカメラを呼び出す仕様)いると、何度目かで必ずアプリが落ちる…という現象が発生しました。

ネットで探したサンプルコード(Adobe AIR for iOSによるiPhone/iPadアプリケーション開発第4回 カメラとカメラロール | クラスメソッド開発ブログ)に手を加えてテストしていたので、「どこか自分で書き足したところがおかしいんだろうな」と色々テストするも解決せず。元のサンプルコードに戻した状態でも状況は変わらず。
で、いろいろググってみたら、こんな記事を発見。
この記事によると「Flex SDK4.6に問題があって、iOS上ではカメラを使うアプリは使えない」とのこと。がーん…。
ちょうどFlash Builder4.7がリリースされたタイミングでもあるので、一縷の望みをかけて、Flash Builder4.7+Apache Flex4.8+AIR3.4の環境を構築してテストしてみました。
結果は問題なく動作しました。Flex 4.8ならOKなようです。しかしこの問題、いろいろググった割に関連記事が1つしかないとか…。AbodeのFAQとかに載っていてもよさそうですが。

Flash Builder4.7+Apache Flex4.8+AIR3.4のセットアップ

Flash Builder4.7を入れてみたんですが、これってFlex SDK 4.6でAIR SDK 3.1なんですね…。これだとあまり意味がないので、Flash Builder4.7+Apache Flex4.8+AIR3.4にしてみました。次回のセットアップ用にメモしておきます。

 
  1. Flash Builder4.7ベータ版をDLします。インストールします。Adobe IDでのサインインが必要です。DLページの一番下にシリアル番号が書いてあるのでメモを忘れずに。
  2. Flash Builder4.7ベータ版をインストールします。インストール時にAdobe IDが必要なんですが、これが既存のIDが使えず、新規に取得する必要があります。インストール画面から新規取得すればOK(私も場合は既存IDと同じにしましたが、問題なく通りました)。毎度おなじみ上条さんのブログに説明があります(Flash Builder 4.7 ベータ版の公 – akihiro kamijo)。
  3. 次にApache Flex 4.8ですが、手動でのインストールだと個別にDLするものなどがあったり、いろいろ面倒なのですが、諸々まとめてインストールしてくれるツールの紹介記事をみまして、これを使わせていただきました(Apache Flex 4.8 インストールAtomic Lab)。
  4. 最後にAIR SDK 3.4ですが、これまたありがたい記事がありまして、コレを参考にしました(Memo, Flex SDKのAIR SDKを3.2へアップデート ? イナヅマTVログ)。ブログではAIR3.2とFB4.5になっていますが、それぞれ3.4と4.7に置き換えて作業すればOKです。
これで完了です。無事セットアップしてAIR for iOSでの実機書き出しまでテストできました。わかっていれば簡単なことでも、いろいろ調べながらだと結構手間がかかるので、参考までに。
ぶつぶつつぶやきながら作業していたら、柊さんにアドバイスいただきました。柊さんと各ブログ主さんに感謝。
[追記1]環境を書いていませんでした。MacOSX10.6.8+MBP2011です。
[追記2]AIR SDK 3.4をDLする際に、何故かSafari(5.1.7)だとうまく行かず、ChromeでDLしました。

iPhone開発用の証明書を再作成

Flash BuilderでAIR for iOSのテストしようとしたら、p12の証明書ファイルがドコにあるのかわからず…。

で、下記の対処で解決。
  1. キーチェーンアクセスを起動。
  2. キーチェーン;ログイン、分類;自分の証明書を選択。
  3. iPhone Developer証明書の中にある秘密鍵を選択。
  4. ファイル>書き出す
で、.p12のファイルが作れます。これを読み込ませてOK。
Xcodeだと一回設定してそのままなので、ちょっと焦りました。
自分用メモとして。

AIRでの一時ディレクトリの使用

放置状態だった「FLASHで作る AIRアプリケーション レシピブック」を再開。この中にファイルをデスクトップ等にドロップして保存するサンプルがあるのだけれど(RECIPE 003)、これを自分で書いてみたら、うまく動かなかった。
具体的には初回のみ成功して、2回目以降はNG(Finder側に移動不可マークが出る)。ムービープレビューをやり直しても、Flashを再起動してもダメで、OSを再起動しないとうまくいかない(それでもOS再起動後1回のみで、あとはNG)。
具体的なファイル保存の方法は・・・
1.一時ディレクトリを作成(File.createTempDirectory())
2.一時ディレクトリに保存ファイルを作成(File.resolvePath())
3.FileStreamで保存ファイルにBitmapDataを書き込み(FileStream.writeBytes())
とファイルを作っておいて、ファイルをドラッグ開始したときに
1.クリップボードに保存ファイルをセット(Clipboard.setData())
2.ドラッグ処理を設定(NativeDragManager.doDrag())
して、ドラッグ完了時に・・・
1.クリップボードの保存ファイルが、ドロップした場所に移動する
(NativeDragActions.MOVE/自動で行われる)
2.一時ディレクトリを削除する(File.deleteDirectory(true))
という手順になっています。
いろいろ調べてみると、どうも一時ディレクトリで引っかかっているようで、一時ディレクトリの削除をはずすと問題なく動作する。削除自体はエラーにならないけど、ちゃんと解放されていないとか、そんな感じなのかな?
ただ一時ファイルは削除しないと新規に作られ続けるので、明示的にディレクトリを作って、それを削除する方法に変更した。具体的には・・・
1.File.desktopDirectoryとFile.resolvePath()を使って、明示的なディレクトリを作成
(File.createDirectory())
2. 明示的なディレクトリを削除する(File.deleteDirectory(true))
という感じに変更しました。
テスト環境はMacOSX10.5.8+Flash CS4です。サンプルファイルのAIRでも同様でした。但し知人にWindows Vista+Flash CS3で試してもらったところ、問題なく動作したらしい。OSXの問題なのか、AIR1.5なのか、CS4なのか…。特定できませんでしたが、とりあえず対処できたので良しとします。
書籍のサンプルファイルはサポートページからダウンロードできるので、気になる方は試してみて下さい。もし何かわかったら教えて下さい。