Flash Builder4.7のiPhoneシミュレーター起動に関して

起動させるのにいくつか必要だった点をまとめました。

・シミュレーターといえども、証明書、プロビジョニングファイルの指定は必要な模様。

・元々入っている、AIRSDKが古い(初期状態では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となる。

Air3_4

※あと、上記フォーラムに書いてあったのだが、現在のxcodeから、一番新しいバージョンのシミュレーター以外、手動でインストールするようになっているので、起動しようとしているバージョンが入っていない場合、当然ではあるが起動は出来ない模様。(Xcode→Preference→Downloadsタブ→Components より、DLできる)

自分はバージョン4以降は全て入れていたので、それで問題が起きているかどうかは確認出来なかったが…。

自動的に起動はせず、iPhoneシミュレーター上のHOMEにアプリが入るだけなので注意。

デバッグ実行の場合、プログレスバーが出て、起動を待っている状態になるので、

HOMEから自分で起動することでデバッグポイントなどに引っかかるようになる。

http://atomic-lab.jp/flash/ane-debug-iossim.html

の一番下にある、操作の動画にその一連の流れが載っている。

自分の環境でも、毎回、「シミュレートした App は終了しました」というアラートが2回出るが、「再起動」ボタンを押すことで、問題無くiPhoneシミュレーターが操作出来るようになった)

※追記

余談ですが、シミュレーターでANEを動作させたい場合、

http://help.adobe.com/ja_JP/air/extensions/WSf268776665d7970d-2e74ffb4130044f3619-7fff.html#WSdb11516da818ea8d49ce0fe713341ed67cf-7fff

に、

iOS シミュレーター(AIR 3.3 以降でサポートされている iOS シミュレーター)上で実行されるネイティブライブラリを作成する場合、ターゲットタイプは「シミュレーター」を使用してください。」

と書いてあることなのですが、Xcodeで.a拡張子のライブラリを作成する際、ターゲットをsimulatorに変更する必要があります。

Device

※枠の部分を変更。(この画像ではシミュレーター用ではなく、実機向けになっている、ということですね)

これをしないと、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から用意されている、

簡単にTwitterTweet出来るviewを呼び出す、

TWTweetComposeViewControllerクラスをAir for iOSから扱えるANEを作成しました。

Img_2272

ソースはこちら

※ただ、画像を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のアイコン部分

A_3

は上記のようになっているのですが、これとは別に、さらに

B_2

を追加する事で無事申請できました。

※このアプリは、iOS4.3以降に対応していたので、

この処理が必要だったのかも知れません。

Xcode4 & Unfuddle(git)でバージョン管理を行う

まず、

http://blog.katsuma.tv/2009/02/first_github.html

のページの「SSH公開鍵をgithubに登録」という所に、

keyの作り方が書いてあります。

これを、Unfuddleの自分のユーザー名の右側の「Edit」を押した先の

「Public Keys」に登録します。

■既にあるプロジェクトをgitリポジトリに追加する場合

※既にリポジトリにあり、xcodeに取り込みたいだけの場合、

手順7からで大丈夫です。

この場合、xcodeだけでやる方法がわからなかったので、

SourceTreeというフリー(但しアカウントを作る必要はある)の

バージョン管理ソフトを使いました。

・1

SourceTreeを立ち上げ、

「ブックマーク」ウインドウから「リポジトリを追加」を選択。

・2

「ソースパス/URL」の欄には、

unfuddleに表示されている

「git@xxxxx.unfuddle.com:xxxxx/xxx.git」

のような指定のアドレスをペースト。

その後「クローン」ボタンが押せるようになるので選択。

・3

「ブックマーク」ウインドウに新しいプロジェクトが現れました。

また、最初の、まだ何もアップロードしていない状態の物が、

ローカルにコピーされました。

・4

このフォルダに、gitで管理したい、xcodeのプロジェクトフォルダの中身を全てコピー。

・5

「ブックマーク」ウインドウに現れた新しいプロジェクトを開き、

「作業ツリー」に出ているファイルを全て選択し、

「追加」ボタンを押し、その後「コミット」ボタンを押し、一旦ローカルにコミットする。

コミットメッセージは

「added; 最初のアップロード。」という感じでしょうか。

(左側のペインの

「ブランチ master」

と出ている所をクリックすると、現状の状態がわかります。)

・6

「プッシュ」ボタンを押し、

中のウインドウで「プッシュしますか?」と書かれているチェックボックスをチェックする。

その後「OK」ボタンを事でプッシュされ、

unfuddle上からも確認出来るかと思います。

このアップロードされた物を、xcode側からcloneし、認識させます。

・7

welcomウインドウの左側の「Connect to a repositry」を選択。

Locationには手順2と同じ物を入れます。

「Clone」が押せるようになるので選択、

場所を選択するウインドウが出るので選択し、

「Clone」を押すことで、ファイルがコピーされます。

無事、File-Source Control-Repositries..で出るウインドウの中に追加されているかと思います。

Xcode上で新規にプロジェクトを作る際、

「Create local git repository for this project」

のチェックを入れていて、既にローカルでの管理は行われている場合

・1

File-Source Control-Repositries..に既に出ているので、作成したプロジェクトの名前の、

「Remotes」を選択し、画面下に出る「Add Remote」を選択。

出たウインドウのRemote Nameには任意の名前、

Locationには、unfuddleに表示されている

「git@xxxxx.unfuddle.com:xxxxx/xxx.git」

のような指定のアドレスをペースト。

・2

「Create」が押せるようになるので選択。

後は普通にFile-Source Control-pushを選択し、アップしていくだけです。

(選択した後、若干、サーバの認識に時間がかかり、初めの数秒、

「Repository is offline」とでますが、その後すぐに「Repository is online」と復帰します)