20

Apple SDK ガイドを読んだ後 https://developer.apple.com/library/mac/#documentation/developertools/conceptual/cross_development/Overview/overview.html

Mac アプリを下位互換にする方法と、それらを適切にテストする方法について、まだ混乱しています。

私はアプリを持っています。Mountain Lion 10.8 で問題なく実行してテストしましたが、他のユーザーが Mac 10.6 - 10.7 マシンで実行できるように、このアプリに下位互換性を持たせたいと考えています。

  1. 私は Apple 開発者 ID を持っていて、古いバージョンの 10.7 と 10.6 をダウンロードできますが、問題は、現在 10.8 を実行している 2011 macbook air があり、それが私が持っている唯一の Apple マシンです。vmware またはパラレルを使用して 10.7 および 10.6 をテストできますか?

  2. プロジェクト設定で、ターゲット デプロイを 10.6 に設定しましたが (10.6 ユーザーにアプリを実行させたいため)、SDK を 10.8 または 10.7 に設定する必要がありますか? SDK を 10.8 に設定し、ターゲット展開を 10.6 に設定した場合、すべての xcode 警告を修正すると、10.6 で正常に実行されますか??

  3. SDK ドロップダウンから、10.8 または 10.7 にしか設定できませんが、10.6 が見つかりません。どうすれば修正できますか?

前もって感謝します

4

4 に答える 4

45

私は 10.8 ボックスで開発し、10.5 までサポートしています。ほんの 2 か月前に 10.4 PPC のサポートを終了しましたが、まだ 10.2 固有のコードの一部を削除しています。これは少し暴言を吐くかもしれませんが、私は長い間古いバージョンをやっています。この件については、いくつかの意見があります。

  • Apple がドキュメントで何と言おうと、10.6 をサポートしたい場合は、10.6 SDK でビルドしてください。配布ターゲットに依存しないでください。
    • 私は Xcode エンジニアとこの議論を行いました。彼らは、常に最新の SDK でビルドする必要があるという Apple の方針を支持していますが、そうするのは一般的に非常識であることも認めています。10.8 SDK に対してビルドし、展開ターゲットを 10.6 にマークすると、10.6 に存在しないメソッドを使用しても警告は表示されません。存在しないメソッドを使用したことを発見する唯一の方法は、10.6 で実行したときに奇妙なバグが発生する可能性があることです。それは非常識です。
    • 不明なセレクターを送信しても、OS X はクラッシュしないことに注意してください。現在の実行ループを中止するだけです。そのため、アプリをクラッシュさせる iOS よりもバグを追跡するのがさらに困難です。
    • 確かに、弱いリンクを行うことができます。危険について話してください....はい、これが役立つ場合が数回ありますが、正しく実行しなくてもコンパイラは警告を出しません。このような弱いリンクを行う場合は、別の方法で古い SDK にリンクし、新しい関数のプロトタイプを実装にコピーします。そうすれば、弱いリンクにすると思われるすべての関数のドキュメントがあります。
  • 古い SDK をダウンロードして、Xcode ディストリビューションにシンボリック リンクします。
    • 彼らを嫉妬深く守ってください。Apple は、Xcode をアップグレードするたびにそれらを削除しようとします。独自のコピーを作成し、/SDK または Xcode から離れた場所に貼り付けます。シンボリック リンクを自動的に管理するfix-xcodeというスクリプトを提供します。古い SDK の削除を執拗に主張する Apple に対して、私は苦々しく思いますか? はい、そうです。
  • VM で 10.6 Server を合法的に実行できます。VM で合法的に 10.7 以降のデスクトップを実行できます。これらはコードをテストする良い方法です。
    • または、私と同じように古い MacBook を山積みにして、それぞれに 2 つまたは 3 つのパーティションがあり、常に再起動することもできます。
    • 10.7 が App Store から提供されるようになったので、VM を作成するのは少し難しくなります。インストール直後にイメージのスナップショットを作成し、クリーンなバックアップ コピーを作成することを強くお勧めします。「生の」マシンに戻す必要がある場合は、そのイメージのクローンを時々作成できるようにする必要があります。
    • SDK が出てきたら、それを追い払う習慣を身につけてください。10.8はいつか古くなります。簡単ですが、今すぐコピーを作成することもできます。
  • 個々のドット リリースをサポートするかどうかに関係なく、個々のドット リリースのアップグレード パッケージを保持しておくと非常に役立ちます。現行以外のリリースを実行している顧客に遭遇した場合、「再現不可能な」バグが実際に特定のバージョンで簡単に再現できるかどうかを確認できると便利です。これが価値があるかどうかは、製品と顧客に大きく依存します。10.4.11 がドット リリース中に WebKit に大きな変更を加えたとき、それは私にとって命の恩人でした...
  • 小型の NAS または大型の外付け USB ドライブに投資します (ただし、頻繁に使用すると故障するという問題があったため、RAID の方が好みです)。スペースが必要になります。多くの VM と多くの SDK を保持し、場合によっては古いバージョンの Xcode を保持する必要があります。
于 2013-02-26T15:20:04.717 に答える
2

Rob Napierの素晴らしい詳細な回答に追加:

古い SDK を使用するには、SDK (またはシンボリック リンク) をここに配置します。

/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs

XCode 7.3 以降では、このファイルを開いて「MinimumSDKVersion」を変更する必要があります (そうしないと、XCode は古い SDK の使用を拒否します)。

/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Info.plist
于 2016-05-09T09:23:39.143 に答える
1
  1. Mac OS の複数のバージョンを 1 台のマシンにインストールして、それぞれを起動できます。
  2. SDK は最新 (10.8) である必要があります。
  3. 2を参照してください。

私が検討した 1 の代替案 (私も同じ状況です) は、古い PC を使用して Snow Leopard Hackintosh を作成し、Lion と Mountain Lion を MBP にインストールすることです。

于 2013-02-26T14:07:22.987 に答える
0

次の設定を行う必要があります。

1.ベース SDK を現在のバージョンの Mac (例: 10.7) に設定します。

2.Deployment SDK を古いバージョン (ex.1.4) に設定します。

于 2013-02-26T14:06:36.617 に答える