「iPhone」カテゴリーアーカイブ

Flash Bulder 4.7 の AIR for iOS 書き出しでいろいろ躓いた

久しぶりにFlash Bulderを使うことになって、4.7でいろいろ環境準備。ひろゆきさんももクロちゃんのプロジェクトファイルを提供してくれたので、AIR for iOSで書き出しを試してみた。

で、前に使っていたのが4.6だったので、変更点があっていろいろ躓いたのでメモ。
1.appIDでハイフンが通らない。
実行構成ウィンドウのメインタブでターゲットプラットフォームにApple iOSを選択すると、4.6にはなかったAppId欄が(4.6以前はxml上でIDタグに指定するだけだった)。ここにxmlと同じIDを指定するんですが、「ID に使用できるのは英文字、数字および “.” だけです。」と表示されてハイフンがエラーにされてしまう(ボクのIDは、com.c-geru.*)。「えー、何で?」って感じですが、これはAppleのDeveloperサイトでハイフンなしのIDを作成することで回避。
でもXcodeはハイフンでも問題ないので、これはFlash Builder側の不備といっていいんじゃないですかね?ドメインにハイフンとかフツーにあるでしょ?最初は何が問題なのかわからなかったよ…。
2.iOS シミュレータが正しく動かない
IDは通ったので、iOSシミュレータで実行してみます。ビルドは順調、iOSシミュレータも起動してアプリのアイコンも見えます。…が、アプリ自体が起動せず。シミュレータ上のアイコンクリックでも無反応。
試しに実機(iPhone 5)に書き出してみると問題なく起動。回るよ、ももクロちゃん!
で、実行構成ウィンドウの「シミュレータ SDK の場所」を見てみると、古いXcodeのSDKを参照している模様(/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs)。検索しても新しいiOSシミュレータのSDKは見つからず。
とりあえず古いXcodeを全て削除することに。3.2.6とか4.3とか4.5とかいろいろ残ってました。ググったら、単にFimderからだとダメらしいので、下記リンクを参考に最新も含めて全部削除しました。
再び最新版のXcode 4.6.3 をインストール。しかし古いバージョンにあったDeveloperフォルダは作成されず。で、調べてみたらXcode4.3以降はDeveloper フォルダは、Xcode.appの中に作成されるとのこと。
 
で、実行構成ウィンドウの「シミュレータ SDK の場所」のパスを変更しようとしたのですが、参照ボタンで開くFinderからではパッケージ(Xcode.app)の中身を参照出来ず。仕方ないのでFinderでパスを確認しながら手打ちしました。参照先は以下です。
/Applications/Xcode.app/Contents/Developer/
Platforms/iPhoneSimulator.platform/Developer/SDKs/
 
※このブログだと見切れちゃうので改行しましたが、ひと続きです。
この参照もXcodeがきちんとインストール済だったら、Flash Builderをインストールする時にきちんと自動的に見つけてくれたのかしらん。うーん…。
各リンク先の皆さんに感謝。

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

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

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

iPhoneでGoogle Maps を表示する

iPhoneでGPS関連を調べる必要があってググっていたら、Google codeでGoogle Maps APIを使ってiPhoneに表示させるための解説ページを見つけました。
ただこのサンプル、使ってあるURLが404になってしまいます(笑)。そのURL部分はこちらに書き換えれば大丈夫。問題なく動作しました(Xcode 3.2.6/OSX10.6.8)。

一応、メモとして。

Xcode 4 と Xcode 3 との併用

Xcode 4 をインストールしてみたらなんと英語版。「なんだー」と思っていたら、Xcode 3 との併用も可能らしいので、Xcode 3 を再びインストール。手順については下記を参考にさせていただきました。感謝。

で、インストールしてXcode 3 で以前作ったモノを開いてみたら、プロジェクトに含まれるコードのほとんどが赤字(存在しない)状態で、かつ左上はBase SDK Missingに…。

調べてみたら、プロジェクト>プロジェクト設定の編集で「一般」を選択して「パス」欄を見ると、Xcodeのルートディレクトリが起点になっているようです。なので・・・
  1. プロジェクトファイル一式をXcode3のルートディレクトリに移動。
  2. プロジェクト>プロジェクト設定の編集で「一般」を選択して、「すべての構成のベースSDK」を「Latest iOS (iOS 4.3)」に変更。
  3. プロジェクト>プロジェクト設定の編集で「ビルド」を選択して、「iOS Deployment Target」など必要な項目を設定する。
  4. プロジェクト>アクティブSDKを設定>Simulator に切替。
と設定し、やっとiOSシミュレータで起動するようになりました。やれやれ。
インストールばかりやってないで、いい加減まともなアプリを1本つくらないと…(^^;。
Base SDK Missingについては、過去の記事「XcodeのBase SDK Missing」もご参照下さい。

XcodeのBase SDK Missing

久しぶりにXcodeをいじったら、iOS3.1.3用につくったプロジェクトが軒並みエラーで書き出せず。ベースSDKとか4.2かLatest iOSしかないし…(T_T)。Xcodeを3.2.5に上げたのが原因か?
いろいろ調べて対処法を発見。
  1. プロジェクト>プロジェクト設定を編集を選択。
  2. ビルドを選択して、アーキテクチャ>ベースSDKをLatest iOSに変更。
  3. 同じくビルドで、Deployment>iOS Deployment TargetをiOS3.1.3に変更。
  4. 同じくビルドで、Code Singning>コード署名ID>Any iOSを現在有効なIDに変更。
  5. プロジェクト設定を閉じる。
  6. これでもまだ「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」になってしまってました。

Provisioning Profilesの更新

Xcodeで使用するProvisioning Profileは、3ヶ月で期限切れ。いつも更新の度に検索するので備忘録として書いておきます。環境はOSX10.5.8+Xcode3.1.4です。
1.iOS Provisioning Portalで左メニューのProvisioningを選択。

2.Renewボタンを押して、更新されるのを待つ。ボタンがDownloadに変わればOK。

3.Downloadボタンを押してProvisioning Profileをダウンロード。
4.Xcodeでウィンドウ>オーガナイザ>を開き、DEVICESから実機を選択。
5.Summaryタグを選択し、中央にあるProvisioningから期限切れファイルを削除。
6. Provisioningのエリアにダウンロードしたファイルをドラッグ&ドロップで完了。
以下も参考にさせていただきました。

iPhone:実機にAppが送れない

昨年iPhoneデベロッパー登録して、ようやくぼちぼちいじってます。で、デバイス(実機)での確認テストをしようとして躓いた点。

この辺のサイトを参考にしつつ、一通り設定してビルドするも下記のようなエラーが出ます。

Code Sign error: Provisioning profile ‘XXXXXX’ specifies the Application Identifier ‘com.XXXX.*’ which doesn’t match the current setting ‘com.yourcompany.Counter’

ググってみたら、このサイトで・・・

3. プロパティの項目にある識別子にApp IDで設定したApp ID name(10文字)を除いた残り 例えばcom.domainname.*の場合はcom.domainname.${PRODUCT_NAME:identifier}とする。


てな記述を見つけ、「プロパティって、何のプロパティ???」と思いつつ調べてみたら、info.plistの中にある「Bundle identifier」のことでした。ここの指定が「プロジェクト」>「プロジェクト設定を編集」から「ビルド」を選んで、Code Signing>コード署名 ID>Any iPhone OS Device で指定した「Provisioning」で指定したデベロッパー名と合ってないといけないようです。さらに調べると、plistってプロパティリストと呼ばれるファイルだそうで、だから上の引用で「プロパティ」って書いているのね・・・。この辺をみると、OSX独自のファイルのようです。


Xcodeというか、CもObject-Cもよく知らないので、なかなかハードル高いです。きっと同じ目に遭う人がいると思うので(^^;、書いておきます。以下、参考にしたサイトです。感謝。

[追記]後からよく見たら、我が参考書「iPhone SDKの教科書」にバッチリ出てました(P195)。さすが!…っていうかよく読めよ(T_T)。