2013年07月06日

Xcode 3.2.6をMountain Lionへ入れてみたが・・・

VMware Fusionの仮想マシンにUbuntuを入れて、いままで主に組込みLinux用の開発機として使っていたMac mini(OS X Mountain Lion搭載)上にiOS、Mac OS X用開発環境を構築することを始めた。その第一段の作業として、Xcode 3.2.6(Xcode 3.2.6 and iOS SDK 4.3 for Snow Leopard)のインストールをやってみた。Mountain LionではXcode 3.2.6は使い物にならないという結論に達して、最終的にはアンインストールしてしまったが、同じ事を目論んでいる人の参考情報になるかもしれないので、この作業の顛末を記事に書いておこう。

Xcode 3.2.6をMountain Lionへインストールする方法として、下の2つのページを参考にした。
  1. How to install Xcode 3 on Mountain Lion - hamstergene
  2. Xcode 3 on Mountain Lion

どちらの方法でもXcode 3.2.6をインストールすることが可能なようだ。ググってみると、Aの方法を試みたページがいくつかヒットしたが、Bの方法を試したページは上のものしか見つからなかった。二番煎じ的な記事より有意義な情報になるかもしれないので、今回私はBの方法を試してみることに決めた。Aの方法だと、Xcode 3.2.6のインストール後にカーネルパニックが起きるので、Mac OS Xをセーフモードで再起動してやる必要がある。これを嫌ったことも、Bの方法を選択した理由だ。

Mountain LionへXcode 3.2.6をインストールするために、私が実際に行った手順を下に記す。
  1. まず、上の方法Bの参考ぺージに掲載されているiPhoneSDKSL.distに対すパッチコードをコピーしたファイルをiPhoneSDKSL.dist.patchという名前で作成した(将来この参考ぺージが消えてしまうことがあるかもしれないので、下に同じパッチコードを掲載しておく)。
    --- /Volumes/Xcode and iOS SDK/Xcode and iOS SDK.mpkg/Contents/iPhoneSDKSL.dist	2011-03-10 11:14:31.000000000 +0900
    +++ /Users/yuhri/Temp/xcode_3.2.6_and_ios_sdk_4.3/Xcode and iOS SDK.mpkg/Contents/iPhoneSDKSL.dist 2013-07-02 19:31:39.000000000 +0900
    @@ -144,12 +144,7 @@
    }
    function isDevToolsCompatible()
    {
    - if ( system.env.COMMAND_LINE_INSTALL == 1 ) { return true; }
    - if( system.compareVersions(my.target.systemVersion.ProductVersion, '10.6.6') >= 0 && system.compareVersions(my.target.systemVersion.ProductVersion, '10.7') < 0 ) {
    -
    - return true;
    - }
    - return false;
    + return true;
    }
    </script>

    @@ -184,7 +179,6 @@
    <line choice="DeveloperToolsSystemComponentsHIDDEN"/>
    </line>
    <line choice="DeveloperToolsSystemSupportHIDDEN"/>
    - <line choice="XcodeExtrasHIDDEN"/>
    <line choice="XcodeExtrasHIDDENThree"/>
    <line choice="UNIXDevelopmentSupport">
    <line choice="UNIXDevelopmentSupportHIDDEN"/>
    @@ -428,15 +422,6 @@
    <pkg-ref id="com.apple.pkg.DeveloperToolsSystemSupport"/>
    </choice>

    -<choice
    - id="XcodeExtrasHIDDEN"
    - customLocation = '/'
    - customLocationAllowAlternateVolumes = 'YES'
    - start_visible='false'
    ->
    - <pkg-ref id="com.apple.pkg.Xcode_MacOSX10.6_Extras"/>
    -</choice>
    -
    <choice
    id="XcodeExtrasHIDDENThree"
    customLocation = '/'
    @@ -540,8 +525,6 @@
    <pkg-ref id="com.apple.pkg.llvm-gcc4.2" auth='root'>file:../Packages/llvm-gcc4.2.pkg</pkg-ref>
    <pkg-ref id="com.apple.pkg.llvm-gcc4.2ROOT" auth='root'>file:../Packages/llvm-gcc4.2.pkg</pkg-ref>

    - <pkg-ref id="com.apple.pkg.Xcode_MacOSX10.6_Extras" auth='root'>file:../Packages/Xcode_MacOSX10.6_Extras.pkg</pkg-ref>
    -
    <pkg-ref id="com.apple.pkg.xcrun" auth='root'>file:../Packages/xcrun.pkg</pkg-ref>

    <pkg-ref id="com.apple.pkg.MacOSX10.4.Universal" auth='root'>file:../Packages/MacOSX10.4.Universal.pkg</pkg-ref>
    @@ -664,6 +647,5 @@
    <pkg-ref id='com.apple.pkg.X11Documentation' installKBytes='6858'/>
    <pkg-ref id='com.apple.pkg.X11DocumentationROOT' installKBytes='6858'/>
    <pkg-ref id='com.apple.pkg.X11SDKForMacOSX' installKBytes='8406'/>
    - <pkg-ref id='com.apple.pkg.Xcode_MacOSX10.6_Extras' installKBytes='14742'/>
    <pkg-ref id='com.apple.pkg.xcrun' installKBytes='182'/>
    </installer-gui-script>

  2. 続いて、Xcode 3.2.6のdmgファイル(xcode_3.2.6_and_ios_sdk_4.3.dmg)をマウントし、その中に格納されている全ファイルをハードディスク上の一時的な作業ディレクトリへコピーした。これを行うには、ターミナルから次のコマンドを実行すれば良い(~/Temp/xcode_3.2.6_and_ios_sdk_4.3が作業ディレクトリ)。
    $ cp -Rp /Volumes/Xcode\ and\ iOS\ SDK/ ~/Temp/xcode_3.2.6_and_ios_sdk_4.3

  3. 次に、下のコマンドを実行して、iPhoneSDKSL.distへパッチを適用した。
    $ cd ~/Temp/xcode_3.2.6_and_ios_sdk_4.3/Xcode\ and\ iOS SDK.mpkg/Contents
    $ patch < ~/Temp/iPhoneSDKSL.dist.patch

  4. 上の手順4まで終了した状態で、ハードディスク上の作業ディレクトリ内のインストーラパッケージファイル「Xcode and iOS SDK」を起動する。すると、下のような画面が表示されるので、この画面の「OK」ボタンを押す。
    Xcode_3.2.6_Installer-Warning_Window-ScrnShot01-620x462.png

  5. すると、インストーラが自動的に再起動して、下のような画面が表示される。この画面では「続ける」ボタンを押下する。
    Xcode_3.2.6_Installer-Warning_Window-ScrnShot02-620x462.png

  6. 続いて、下のような画面が表示されるので、この画面でも「続ける」ボタンを押下する。
    Xcode_3.2.6_Installer-Warning_Window-ScrnShot03-620x462.png

  7. ここで、やっとインスーラの最初の画面(「はじめに」画面)になるので、各画面の「続ける」ボタンを押しながら、「インストールの種類」画面まで進める。
    Xcode_3.2.6_Installer-Process_Window-ScrnShot04-620x462.png

  8. 「インストールの種類」画面において、以下のパッケージがインストールされないよう変更した上で、「続ける」ボタンを押す。
     Essentials > iOS SDK  On → Off
     System Tools On → Off
     UNIX Development On → Off

    Xcode_3.2.6_Installer-Process_Window-ScrnShot31-620x462.png

  9. Xcode 3.2.6のインストール処理が実行されるので、その処理が終了するまで待つ。

上の操作の手順8については補足説明が必要だろう。オプションパッケージ「iOS SDK」(これは、XcodeでiOS用プログラムを開発する場合は必須パッケージ)を有効にした状態でも、Xcode 3.2.6をインストールすることはできる。しかし、こいつをインストールすると、Interface BuilderやiOS Simulatorがハングアップしてしまう障害が発生する(これらの現象については、「iOS SDK」を有効にした状態でXcode 3.2.6をインストールして確認を行った)。「System Tools」を無効にしたのは、このパッケージに含まれるCHUDというツールがMountain Lionではカーネルパニックを引き起こすからだ。また、「UNIX Development」(Command Line Toolsの旧称)はインストールしても一応問題なく使えるが、Mountain Lionではもっと新しいバージョンのCommand Line Toolsを利用すべきで、Xcode 3.2.6に含まれるものを使うことは推薦されていない。

上の手順に従ってインストールすると、Xcode 3.2.6がMountain Lionで起動することは確認済みだ。しかし、iOS SDKがインストールされていないので、このXcodeでiOSプログラムのビルドやデバッグを行うことはできない。例えば、他のXcodeで作成したiOSプロジェクトに含まれるxibファイルを開こうとすると、下のような警告メッセージが表示されて、Interface Builderはxibファイルの内容を正常に表示することができない(Viewデザイン画面は表示されず、オブジェクトのアトリビュート画面は空っぽの状態になる)。
Xcode_3.2.6-IB_XIBOpenWarning-No_iOS_SDK-ScrnShot36-420x159.png
また、既存のiOSプロジェクトをビルドしようとすると、下のようなエラーが発生する。
Xcode_3.2.6_Build_Failed_Error-No_iOS_SDK-ScrnShot38-500x556.png
iOS Simulatorの動作確認をやるのを忘れたが、iOS SDKが存在しないので、これも起動しないばずだ。という訳で、結局上の方法でインストールしたXcode 3.2.6でiOSプログラムを開発することはまったくできない(Mac OS X用プログラムの開発には使えるかもしれないが・・・)。

Appleの公式情報では、Mountain Lionに対応しているのはXcode 4.4以降であり、それ以前のバージョンのXcodeはMountain Lionには対応していない。実際にXcode 4.2.1(Xcode 4.2.1 for Lion)をMountain Lionへインストールしようと試みると、インストーラは起動するが、、「インストール先の選択」画面に下のような警告メッセージが表示されて、インストール処理を継続できなかった。
Xcode_4.2.1-Cannot_Install_Warning_on_ML-ScrnShot01-620x462.png
Xcode 4.3.xでは、Xcodeのアプリアイコンを「アプリケーション」フォルダへコピーすればインストールできるようになっているが、XcodeをMountain Lion上で起動すると、多分何らかの警告画面が表示されて強制的に終了するようになっているんじゃないかと想像している。実際に試して確認はやっていないが、ググって調べた情報ではどうもそうらしい。

上の方法でXcode 3.2.6を無理やりMountain Lionへインストールしても、そのXcodeではiOSプログラムの開発はできないので、結局これを使うことは諦めた。最終的には、ターミナルから次のコマンドを実行して、Xcode 3.2.6をアンインストールしてしまった。
$ sudo /Developer/Library/uninstall-devtools --mode=all

古くからXcode 3を使っていて、いまだに使い続けているプログラマは結構いるようだ。私は去年の夏頃からiOS用プログラム開発を始めたので、それほどXcode 3へのこだわりは持っていないが、どうしてもXcode 3を使いたいユーザはMac OS XをMountain Lionにアップグレードすることは勧められない。Snow LeopardではXcode 4.2までしか使えないので、iOS 5.1以降に対応したプログラム開発ができない(この問題を解決する方法はありそうな気がするが・・・)。LionならXcode 3から最新版のXcodeまで使うことができるので、現状iOSプログラマにとってベストのMac OS X環境はLionということになる。iOS搭載デバイスの新製品がどんどん出てくるので、それに伴ってXcodeのバージョンアッブ・サイクルも結構速い。そのうち、Lionに未対応のXcodeが出てくるだろう。Appleはこういう決断をするのは早くて、2〜3年前のMacはiOSプログラム開発用として使い物にならなくなってしまう(Mac OS Xをアップグレードすれば済む話だけど・・・)。今年の秋にはiOS 7を搭載したiPhone 5SやOS X 10.9 Mavericksを搭載した新型Macも発売されるので、早晩こういう動きが出てくるのは避けられないと思う。iOS用プログラムの開発をずっと続けていくつもりなら、やはり最新版のMac OS Xを搭載したMacを一台は持っている必要があるのかもしれない。

無駄な作業になってしまったが、上の結果は下調べで得た情報からある程度予想していたものだ。ブログ記事のネタになるかなぁと思いながら作業をやってみて、この記事を書くことできたし、本ブログの訪問者にとって参考情報になるかもしれないので、完全な時間の無駄だった訳でないと自分では納得している。
タグ:Xcode
posted by とみやん at 13:10| Comment(0) | TrackBack(0) | 開発・プログラミング > Mac
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/70632496

この記事へのトラックバック