Xcode4 環境に Xcode3 を同居させる

REPORT


Xcode4 と Xcode3 とを混在させる

iOS 4 用の iPhone アプリを Xcode 4.2 and iOS 5 SDK beta 2 環境でビルドして、iPhone 4 シミュレーターで実行してみたところ、次のようなエラーメッセージが表示されてしまいました。

 dyld: Library not loaded: /usr/lib/libc++abi.dylib

Referenced from: /Users/tomohiro/Library/Application Support/iPhone Simulator/4.0.2/Applications/2DD546A7-E3x8-49F0-AA42-3D8778493407/EzIPPhone4.app/EzIPPhone4

Reason: image not found

iPhone 5 シミュレーターなら動作するのですけど、iPhone 4 シミュレーターではこのような感じで、アプリ起動直後の画面暗転のところでハングアップしてしまいました。

メッセージからは "libc++abi.dylib" というライブラリーが読み込めなかったことが窺えます。

実際に iPhone 4 シミュレーター用の SDK が格納されている "::Developer:Platforms:iPhoneSimulator.platform:Developer:SDKs:iPhoneSimulator4.0sdk:" ディレクトリー内の "/usr/lib/" を確認してみても、"libc++abi.dylib" というライブラリーファイルは見つからないような感じでした。

iPhone Simulator 5.0 の SDK が格納されたフォルダーを確認してみると、こちらには "libc++abi.dylib" が確認できました。

 

何らかの解決方法があるのかもしれないと思いつつも、それでもこれまでも Xcode を 3 から 4 に変更したら、コンパイルしたアプリが起動直後に例外エラーで落ちるようになったりと、そもそも環境が大きく違ってきているところも気になります。

何かいい方法がないかと調べていると、どうやら Xcode3 と Xcode4 とは、両方ともインストールして、同時に存在させることができることが分かりました。

Xcode3 と Xcode4 とを共存させれば、iOS 4 用のバイナリは Xcode3 で、iOS 5 用のバイナリは Xcode4 で作成することもできるはずです。

普通にインストールした状態では、Xcode 3 はすっかり Xcode 4 で上書きされてしまったので、今回は Xcode4 がインストールされた Mac OS X 10.6 Snow Leopard 環境に、新たに Xcode3 を追加でインストールしてみることにしました。

 

Xcode4 環境に Xcode3 をインストールする

既に Xcode4 がインストールされている Mac OS X 10.6 Snow Leopard に、Xcode3 を追加でインストールしてみます。

Xcode3 は、平成 23 年 07 月 07 日現在、iOS Dev Center からダウンロードできるようになっていました。

ここの "iOS SDK 4.3" の Downloads のところに "Looking for Xcode 3?" というリンクが用意されているので、それを辿ると、そこから "Xcode 3.2.6 and iOS SDK 4.3 (Disk Image)" をダウンロードすることができました。

 

これのダウンロードが完了したら、インストールに先立って、インストール用のフォルダーを作成します。

システムがインストールされているハードディスクの一番上に "Xcode3" という名前で、Xcode3 をインストールするフォルダーを作成します。

フォルダーを作成したら、"Xcode and iOS SDK" をダブルクリックして、Xcode のインストーラーを起動します。

インストーラーが起動したら、"インストールの種類" の選択のところまで進めます。そしてここで、"Essentials" だけにチェックを入れて、そのインストール場所として、先ほど作成した "Xcode3" フォルダーを選択します。

後は手順通りに進めて行けば、Xcode3 をインストールすることができました。

インストールの最中にしばらく "Xcode3" のフォルダーを眺めていても、何もファイルが格納される感じがないので Xcode4 を上書きしてしまったのではないかと思いながら見てましたけど、20 分ほどしてようやく "Xcode3" フォルダーにファイルの内容が生成され始めてほっと安心です。

 

インストール後、Dock に登録しておいた Xcode を起動すると、こちらは Version 4.2 (4C114) が起動しました。

そして "Xcode3" フォルダー内の "Applications" フォルダーにある Xcode を起動すると、こちらは Version 3.2.6 (1761) が起動しました。従前通り、以前に Xcode3 で開いた時のプロジェクトも表示されていて懐かしい感じです。

ウィンドウの色も以前に設定した通りになっていて、どうやら以前の環境設定がどこかに残っていたみたいですね。

 

ともあれさっそく Xcode3 で iPhone アプリをビルドして、シミュレーターで動かそうとしてみたところ、シミュレーターが使用中とのことで、動作してくれませんでした。

その時は Xcode4 で起動していたシミュレーターが残っていたので、それを終了させたのですけど、それでも変わらずシミュレーターの起動に失敗してしまいました。

何かインストールするものが不足しているのかもとも思ったのですけど、これについては Mac OS X を再起動してみたところ、どうやらシミュレーターが起動できるようになりました。

そしてアプリもシミュレーター上では問題なく、動作してくれるようになりました…。というか、再起動後に Xcode4 でもアプリを起動させてみたところ、こちらでも問題なく iPhone アプリが起動してくれるようになりました。

 

そういえば、Instruments でのメモリーリークのチェックでも、なぜか突然検出してくれなくなったことがあって、その時も Mac OS X の再起動で回復したので、何か妙な時には再起動を行えば良いのかもしれません。

ともあれ Xcode3 と Xcode4 とを同居させることができたので、これでより互換性の面では安心になったような気がします。

Xcode3 と Xcode4 とを同時に起動して、同じプロジェクトを開くのはあまりよくないらしいので、とりあえずはどちらか片方を使用してみようと思います。