複数の自作ANEを作る際の注意点
Flash Builder4.7のiPhoneシミュレーター起動に関して
起動させるのにいくつか必要だった点をまとめました。
・シミュレーターといえども、証明書、プロビジョニングファイルの指定は必要な模様。
・元々入っている、AIRのSDKが古い(初期状態では3.1が入っている模様)ので、
3.4込みのFlexSDKフォルダを作成する必要がある。
既存のFlexフォルダをコピー・リネームし、
そこにAirSDKフォルダの中身を全て上書きで良いが、
macだとフォルダ毎中身を統合しないで上書きになってしまうので、
http://atomic-lab.jp/flash/air-sdk-3-4-update.html
のようなコマンドで行うのが良いと思う。
(上書きでやりたければ、muCommanderの様なファイラーを使うのも手。
http://d.hatena.ne.jp/yohxx/20110707/1310054947)
この統合を行わないと、
http://forums.adobe.com/thread/1056428?tstart=0
にあるような、
「iOS Simulator Bridge (ISB) コンポーネントがインストールされていません。」という警告が自分の環境でも出てしまった。
※この統合を行うと、初期設定の際の表記もちゃんと3.4となる。
※あと、上記フォーラムに書いてあったのだが、現在のxcodeから、一番新しいバージョンのシミュレーター以外、手動でインストールするようになっているので、起動しようとしているバージョンが入っていない場合、当然ではあるが起動は出来ない模様。(Xcode→Preference→Downloadsタブ→Components より、DLできる)
自分はバージョン4以降は全て入れていたので、それで問題が起きているかどうかは確認出来なかったが…。
・自動的に起動はせず、iPhoneシミュレーター上のHOMEにアプリが入るだけなので注意。
(デバッグ実行の場合、プログレスバーが出て、起動を待っている状態になるので、
HOMEから自分で起動することでデバッグポイントなどに引っかかるようになる。
http://atomic-lab.jp/flash/ane-debug-iossim.html
の一番下にある、操作の動画にその一連の流れが載っている。
自分の環境でも、毎回、「シミュレートした App は終了しました」というアラートが2回出るが、「再起動」ボタンを押すことで、問題無くiPhoneシミュレーターが操作出来るようになった)
※追記
余談ですが、シミュレーターでANEを動作させたい場合、
に、
「iOS シミュレーター(AIR 3.3 以降でサポートされている iOS シミュレーター)上で実行されるネイティブライブラリを作成する場合、ターゲットタイプは「シミュレーター」を使用してください。」
と書いてあることなのですが、Xcodeで.a拡張子のライブラリを作成する際、ターゲットをsimulatorに変更する必要があります。
※枠の部分を変更。(この画像ではシミュレーター用ではなく、実機向けになっている、ということですね)
これをしないと、FlashBuilder上で、「missing required architecture i386..」と言ったエラーが出て、動作しませんでした。
Air for Androidで、インテントするだけのANEを作成しました。
https://github.com/kuniakisuzuki/ANE-SimpleIntent
にアップしました。
import jp.sikisize.SimpleIntent;
var extension:SimpleIntent = new SimpleIntent();
extension.intent("com.google.android.youtube");//Launch Youtube application
他のアプリケーションを立ち上げる必要があり作成しました。
引数(putExtra)を渡したり、そのパッケージが端末にあるかのチェックなどしていないので、
あまり使えないかと思いますが、
もしよければお使い下さい。m(_ _)m
FLASH CS6(Air for Android)で端末に書き出す時、「デバイスエラー:デバイスに十分な容量があるか確認して下さい」が出る
http://forums.adobe.com/message/3906566
のRepliesの1つめにあったが、
certificationファイル(FLASHの中から作れる、拡張子が.p12のファイル)を
使い回していたため起こっていた模様。
新規に作り直して、それでパブリッシュしたら問題なく書き出せた。
Air for iOSから簡単にTweet出来るANEを作成しました。
下の画像のように、iOS5から用意されている、
TWTweetComposeViewControllerクラスをAir for iOSから扱えるANEを作成しました。
※ただ、画像をpostするメソッドはなく、文字とURLをポストするメソッドしかありません…
画像ってbase64にエンコードして文字列で渡すとかでしょうか?
もしくはファイルで置いてそれをAir-ネイティブ側で共有できる?
また、その制作を行った際に、わかった事を書きます。
・iOS SDK5以上の機能を使う場合でも、extension.xml、-platformoptionsのxmlの名前空間は "http://ns.adobe.com/air/extension/3.1" でよかった。(※3.4とか3.3にする必要は無かった。
ちなみにadt -packageで使っているAirのバージョンは3.4にしていますが、それでもここを合わせる必要は無いようです。)
・同様に、Flex SDKにAir3.4フォルダを上書きし、FlexSDK+AirSDK最新フォルダ、 なる物を作ったけど、そのSDK指定では無く、既存のSDK指定で問題無く動いた。
・Xcode上で、Twitterなどの別途フレームワークの機能を使う場合、 参照しておかないといけないと思いきや、 ライブラリプロジェクトのせいなのか、そのインポートも要りませんでした。
・extension.xmlに、<platform name="default"> <applicationDeployment/> </platform> を付け、PC上のAirシミュレーターでも動くようにしたかったが、これを付けてパブリッシュし、aneファイルをコピーしても最初は動かなかった。
その後、一旦Flashからaneの参照を外し、もう一度付け直したら動くようになった。
(※Flash CS6 Proで制作し確認してます。なので、違う環境ではそんなこと無いかも知れません)
・AIRを表示しているViewのXcode側からの参照方法は、
UIWindow *keyWindow = [[UIApplication sharedApplication] keyWindow];
UIViewController *mainController = [keyWindow rootViewController];
で出来ます。
詳しくはソースの方をご確認いただければと思います…(^^)/
Titanium-amoad/テスト用IDで設置してみた
Titaniumにも広告が組み込めるamoadにはテスト用IDというものがあり、
それで広告がどのように出るか確認出来る。
testID: 62056d310111552c1655eaa9d18270e2e361ca34102e41fb7a69bf0b3d462f32
(2012/11/21追記:今は以下のIDになっています)
b933b6ed285c118eb0074fa0b76d8116d7d9ac661a788926aa4b32dfc7e842cd
(通常の広告は、審査が通らないと広告が出ない模様・・。)
また、試しに組み込んで見たところ、オンライン状態でもいつも、
didFailToReceiveAdWithErrorが返ってきてしまっていた。
色々試してみたところ、createAdした後、
addEventListener('createdAd')というイベントが呼ばれるので、
その後に、requestFreshAdを行えば正常に出るのが確認出来た。
var ad = module.createAd({
backgroundColor: 'white',
width: 480,
height: 50,
top: 0,
});
win.add(ad);ad.addEventListener('createdAd', function(e) {
// 広告再取得の間隔を設定する(単位はミリ秒、例の場合は120000=120秒)
// この設定を行わない場合は、自動更新は行われません。(規定動作)
ad.setInterval(60000);
// 取得した広告IDを設定する
ad.setSid("62056d310111552c1655eaa9d18270e2e361ca34102e41fb7a69bf0b3d462f32");
// クリックアニメーション
ad.setClickAanimation(true);
// 広告表示のPortrait/Landscapeの固定
ad.setContentSizeIdentifier(module.ContentSizeIdentifierPortrait);
// 広告取得を開始する
ad.requestFreshAd();
});// エラー等のリスナー
ad.addEventListener('didFailToReceiveAdWithError', function(e) {
Ti.API.info('didFailToReceiveAdWithError');
});
ad.addEventListener('didReceiveAd', function(e) {
Ti.API.info('didReceiveAd');
});
ad.addEventListener('didReceiveEmptyAd', function(e) {
Ti.API.info('didReceiveEmptyAd');
});
※↑すみません、<p>タグがどうやっても入ってしまうので、除いてご利用いただければと思いますm(_ _)m
※Titanium SDK1.8.1、amoad SDK2.1.0で確認。
iPhone/iPod Touch: Info.plist: Unable to verify icon dimensions, no icon found. You must define CFBundleIcons, CFBundleIconFiles, CFBundleIconFile, or provide a default Icon.png that is 57x57
storeに登録する前に、
「iPhone/iPod Touch: Info.plist: Unable to verify icon dimensions, no icon found. You must define CFBundleIcons, CFBundleIconFiles, CFBundleIconFile, or provide a default Icon.png that is 57x57」
というエラーが出て登録できませんでした。
エラーメッセージの通りということになってしまうのですが、修正前のplistのアイコン部分
は上記のようになっているのですが、これとは別に、さらに
を追加する事で無事申請できました。
※このアプリは、iOS4.3以降に対応していたので、
この処理が必要だったのかも知れません。