久しぶりにXcodeをいじったら、iOS3.1.3用につくったプロジェクトが軒並みエラーで書き出せず。ベースSDKとか4.2かLatest iOSしかないし…(T_T)。Xcodeを3.2.5に上げたのが原因か?
いろいろ調べて対処法を発見。
- プロジェクト>プロジェクト設定を編集を選択。
- ビルドを選択して、アーキテクチャ>ベースSDKをLatest iOSに変更。
- 同じくビルドで、Deployment>iOS Deployment TargetをiOS3.1.3に変更。
- 同じくビルドで、Code Singning>コード署名ID>Any iOSを現在有効なIDに変更。
- プロジェクト設定を閉じる。
- これでもまだ「Base SDK Missing」と出ているので、プロジェクトファイルを閉じて、再び開く。
これで右上に「4.2 | Dbug | XXX | XXX | armv6」などと表示され、「Base SDK Missing」
は消えているので、これでビルドして実機(iPhone3G)に書きだしできました。ふう。
この辺はなんかうまいこと自動で変換する仕組みとかないのかな〜。ちゃんと下位互換を作って欲しいよ、まったく…。
ちなみにiPhoneの勉強始めに手に取った
「iPhone SDKの教科書」のサイト見たら、iOSのバージョンに合わせて
サンプルファイルが更新されていました。細かいサポートが素晴らしいです!今回の問題解決の糸口にもなりました。改めてオススメです。
[補足]
- 上記6.は実行しなくても、ビルドがうまくいく時もあるみたいです。違いはいまいちわからない…。
- Resource>xxx.plistにある「Bundle Identifier」も要チェック。私の場合は「com.yourcompany」になってしまってました。
ちょっとはまったのでメモ。
AACファイルをNetStreamを使って再生する場合、FLVと同様に・・・
rcv_ns.play(url_flv);
rcv_ns.seek(0);
rcv_ns.pause();
みたいな感じで、先頭に位置づけておいて、NetStream.resume()とNetStream.puase()を切り替えて、再生・一時停止を実装しています。例えば、こんな感じ。
if (isNowPlaying) {
//終了の場合は、巻き戻して再生
if (flg_finish) {
flg_finish = false;
rcv_ns.seek(0);
}
rcv_ns.resume();
} else {
rcv_ns.pause();
}
この状態で、NetStream.seek(0)で一時停止(NetStream.pause())した状態で放置しておくと、NetStream.resume()してもAACが再生されなくなってしまいます。つまり初期状態や先頭まで巻き戻した状態でそのままにしておくと、再生ボタンが効かなくなるということです。
FLVでテストしても問題は発生せず、どうもAACに固有の問題のようです。結局、NetStream.resume()の前には、強制的にNetStream.timeで位置合わせしてやることで解決しました。
if (isNowPlaying) {
//終了の場合は、巻き戻して再生
if (flg_finish) {
flg_finish = false;
rcv_ns.seek(0);
} else {
rcv_ns.seek(rcv_ns.time);
}
rcv_ns.resume();
} else {
rcv_ns.pause();
}
う〜ん、なんか釈然としないけど、バグなんだろうか?
直接は関係ないですが、AdobeのサイトにAAC関連の記事を見つけたので貼っておきます。NetStreamで読み込むAACにSoundTransformを使う方法なんて事も書いてあります。
初めての幹事でよくわからぬままの見切り発車でしたが、各自制作のファイルを元にそれぞれ有意義な発表だったと思います。各参加者、会場提供のビバマンボさんに感謝です。ちょっと時間を見誤り、予定を1時間もオーバーしてしまいましたが(笑)。
持ち寄ったファイルはみんなで共有ということで、
ここからDLできます。参加者は勿論、惜しくも参加できなかった方もご覧になって「どんな会だったのか」を感じていただけるといいかもです。
みなさん続々とブログ等に感想、解説など書いて下さってます。是非、Twitterでハッシュタグ
#tokyopiyoをチェック!
これを機会に第二回、第三回と続くといいなと思います。
AS,Objective-C,Javascript,その他諸々の備忘録