静岡県富士市在住のiPhoneアプリ開発者ブログ -35ページ目

iPhone OS 3.0 を実機にインストールしてみた

iPhone OS 3.0 を実機にインストールしました。

いまさらという感じなんですが、
一度アップデートしてしまうとダウングレードできないこととか
シミュレータのバージョンを3.0にして既存のアプリを動かしたら落ちまくりだったり
beta1で実機にアプリ転送できなくなってしまったり

とかしたので、Web上に情報がある程度出てくるまで待っていました

引用ですがiPhone OS 3.0 の実機へのインストール方法は以下の通りです。
1. iPhone Dev Center にログインし、ページの上のほうの View: を "iPhone SDK 3.0" にすると OS 3.0 用のページになります。
2. iPhone OS 3.0 beta をダウンロードします。
3. Finder でダウンロードしたファイル iphone_os_3.0_beta__iphone_3g__xxxxxx.dmg をダブルクリックし、マウントします。
4. iTunes を起動します。
5. iPhone 接続し、[同期] することで iPhone データのバックアップを行います。
6. [alt] を押しながら [アップデートを確認] をクリックします。
7. 3 でマウントしたディスクの中の .ipsw ファイルを選択し、[開く] をクリックします。
iPhone OS がアップデートされます。
(coblog より引用 http://blog.hirsky.com/changelog/2009-03-18-1.html


(手順6のalt を押しながらアップデートを確認をクリックするというのがわからなくて少し嵌まりました)

で、アップデートが終わり、「メモ」でコピペを初体験した後
既存のアプリを動かしてみたり
SDK2.2.1でビルドしたマイアプリを動かしてみたりしましたが
大きな問題なく動くようです。
(シミュレータ3.0では既存アプリが動かなかったのでどうなることかと思いましたが一安心です。)

細かい点ですが、
UIImagePickerController で画像をプレビューさせるとUIStatusBarHidden をYES にしているのに
ステータスバー(上部のキャリアとか時間などが表示されるバー)が表示されて、以後表示されたままになってしまうことを確認しました。

もう少し動かしてみようと思います。

SDK 3.0 でビルドしたら NavigationItem 周りで警告が発生

Xcode 3.1.3(beta5)をインストールしたので既存のプロジェクトをリビルドしてみたら NavigationItem 関連の警告が表示されるようになってしまった

静岡県富士市在住のiPhoneアプリ開発者ブログ β

すごく長いのでXcode のウィンドウを横に延ばして全文を確認

The 'navigationItem' outlet of a UIViewController has been deprecated.
Navigation items are required prior to loading a view controller's view.
Instead of an outlet,consider embedding the navigation item in the view controller.


UIViewControllerの'navigationItem'がアウトレットからなくなってしまったみたいです。
*InterfaceBuilder の Inspector の Outlets を見ると下のようにグレーになっていて「!」マークの表示
静岡県富士市在住のiPhoneアプリ開発者ブログ β

3行目の文に
アウトレットの代わりに、navigation item を viewController に埋め込んでください。

と書いてある。

ちなみに、今まではNavagationBar をXib に追加し、File'Owner を ViewController にして、ViewControllerにNavagationBarを接続していたのです
静岡県富士市在住のiPhoneアプリ開発者ブログ β

静岡県富士市在住のiPhoneアプリ開発者ブログ β


ということで、仕方なくUIViewController の navigationItem にoutletで接続している箇所をすべて削除してViewControllerのviewDidLoad でボタンやらタイトルやらを設定するように修正しました。

例えばこんな感じです
UIBarButtonItem *btn = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"hoge.png"] style:UIBarButtonItemStylePlain target:self action:@selector(hoge:)];
[self.navigationItem setRightBarButtonItem:btn];
[btn release];

上の例は、単純なボタンで楽でしたが、UISegmentedControl を配置していた箇所は、create してタイトルや初期選択状態などを設定しなければならないので少し面倒になってしまいました。

Interface Builder に頼っていたツケでしょうか。。。

SDKをバージョンアップすると実機テストができなくなる不具合の対処

先週 iPhone SDK 3.0 beta5 がリリースされました

前回beta1をインストールしたらコード署名が文字化けして実機テストできなくなったので、今回は直っているかなと思ってWebで検索したところ、どうやら言語環境を英語にすれば解決できたという記事を発見

ということで今回はさすがに大丈夫だろー、万が一文字化けしてたら英語にすればいいか
と割り切ってbeta5をインストールしてみました

で、早速Xcode のプロジェクトメニューから「プロジェクト設定を編集」を選択しビルドタグを選択してコード署名をみてみると文字化けは直っている模様

で、いざ実機へ転送!
・・・と思ったら以下の警告画面が表示され転送できず
静岡県富士市在住のiPhoneアプリ開発者ブログ β

メッセージに書いてある通りに、コード署名に必要なプロビジョニングプロファイルがうまく認識されていない模様
Xcode のオーガナイザでプロファイルの確認とinfo.plist のBundle identifier を確認したが問題なし

で、Webで検索してみたところプロジェクトファイルにゴミがあるのでそれを消せばいいという有力な情報を発見

まず、プロジェクトファイルを選択し、ポップアップメニューから「パッケージの中身を表示」を選択
静岡県富士市在住のiPhoneアプリ開発者ブログ β

この中に、project.pbxproj というファイルがある

念のためオリジナルを残しておく(複製しておく)
project.pbxprojを開く

PROVISIONING_PROFILE

が含まれる行をすべて削除する

プロジェクトを開き、コード署名IDを再設定して、実機転送を試してみる

ここまで解決できない場合は、

CODE_SIGN_IDENTITY

が含まれる行もすべて削除する
(参考の記事には、CODE_SIGN_IDENTITYについては触れていませんが、私の場合
PROVISIONING_PROFILE 関連の削除だけでは実機転送できずCODE_SIGN_IDENTITY関連を
削除してようやく転送できました)

参考
http://d.hatena.ne.jp/kenhama/?of=1