Xcode 5にiOS 6 SDKをインストールすることは可能ですか?


250

Xcode 5には、iPhone 6.1シミュレーターをダウンロードできる設定ペインがありますが、iOS 6 SDKのダウンロードを許可する場所が見つからないため、Xcode 5で開発する場合、アクティブなSDKをiOS 6に設定できません。 Xcode 5でiOS 6 SDKをインストールできる回避策はありますか?

編集:

Xcode 5が一般提供され、以前のバージョンのSDKをダウンロードできるようになったため、回避策は必要なくなりました。

ここに画像の説明を入力してください


41
Xcode 5の多くの改善点を活用しながら、今日のアプリストア向けのアプリを構築することができます。
Tony

61
おいおい、「とにかくiOS 7を採用する」というポイントは、GAのリリースとはまったく関係ありません。アプリ全体のデザイン言語とUXを再設計してフラットなデザインに合わせ、iOS7のUIコンポーネントを再設計するという決定と努力は、小さくはなく、ビジネスとタイミングの観点からも簡単には実現できません。SDK 6.1に対してビルドすると、iOS7はiOS 6以前のUI設計言語を使用します(後方サポートの目的で)。したがって、しばらくの間6.1 SDKに対してXcode 5で開発することは非常によく保証されているかもしれません。
2013

2
多分、彼はSDKが1つのモノリシックなコードの山ではなくIDEから分離されることを期待しているからでしょうか?
phreakhead 2013年

1
私は現在、IOS7 UIの変更を受け入れる準備ができていないクライアントを使用していますが、XCode 5のコアデータ移行の改善から恩恵を受けることができます。この場合、これもまさに私が望んでいることです。
ドロイドクリス

Xcodeは、SDK 6.1が含まれていない場合でも、少なくともスムーズに統合できると考える人もいるかもしれません。しかし、この問題があります。
JohnK、2014年

回答:


203

編集:2014年2月1日以降、AppleはiOS7以前のアプリをApp Storeに提出することを受け付けなくなります。そのため、この手法はまだ機能しますが、ほとんどの読者には役立ちません。


はい、これで結構です。私はまだ1つのプロジェクトでiOS 4.3を使用してビルドしています(更新してからしばらく経ちますが、iOS 6がリリースされた後も受け入れられます)、現在Xcode 5を使用して10.5アプリをビルドしています。

「ベースSDK」として使用できるようにXcodeを古いSDKにポイントする方法を参照してください設定方法の詳細については、 アップグレードするたびに、私のfix-xcodeスクリプトを使用してすべてをリンクできます。

唯一のトリックは、古いSDKを取得することです。それらがない場合は、通常、古いバージョンのXcode(引き続きdeveloper.apple.comから入手可能)をダウンロードし、インストーラーパッケージを開いて、必要なSDKを探す必要があります。

SDKは、インストーラーパッケージ内の次の場所にあります。

Xcode.app/Contents/Developer/Platforms/


アーカイブ時にiOS 7 SDKを削除して、iOS 6 SDKでビルドできることを確認する必要がありますか?
オハヨン2013

6
こんにちは。これは近いですが、私にとっては完全ではありません。ボタンはiOS 6のように見えますが、UINavigationControllerを使用すると、View Controllerのコンテンツはナビゲーションバーの後ろに表示されます。そのためにiOS 6の動作をどのように取得するかについての考えはありますか?
マットベザーク2013

2
番号; これはデバイスでのみ表示されます。iOS 7シミュレーターにはiOS 6互換モードはありません。シミュレータでどのように表示されるかを確認したい場合は、iOS 6シミュレータでテストしてください。
Rob Napier

1
Xcode 5およびiOS 6 SDKでビルドされたアプリをApp Storeに提出できますか?
hujunfeng 2013

1
iPad 1が引き続きサポートされている限り、いつでもAppleが5.X iOSを受け入れると想定できます。アップグレードできません。
ahwulf 2013年

60

古いコードを削除してxcode 5に更新したときも、同じ問題が発生していました。しかし、私は別のコンピューターから古いSDKのコピーを取りました。同じものを次のリンクからダウンロードできます。

http://www.4shared.com/zip/NlPgsxz6/iPhoneOS61sdk.html(www.4shared.com
テストアカウントtest@yopmail.com/test)

使用するには2つの方法があります。

1)このフォルダーを解凍して/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKsに貼り付け、xcodeを再起動します。

しかし、xcodeを更新すると、これはXcodeによって再び削除される可能性があります。

2)別の方法は、必要な場所に解凍して貼り付け、/ Applications / Xcode.app / Contents / Developer / Platforms / iPhoneOS.platform / Developer / SDKsに移動して、ここにシンボリックリンクを作成します。これにより、SDKは同じままになります。 Xcodeを更新します。

私が行ったもう1つの変更は、ビルド設定>アーキテクチャ>標準(64ではない)なので、Deployment Targetのすべてのバージョンをリストします。

デプロイメントターゲットを変更するだけの場合は、zipをダウンロードする必要はありません。

ここにいくつかのスクリーンショットがあります。 ここに画像の説明を入力してください ここに画像の説明を入力してください


2
どのようにしてどこでこのios6.1 sdkをダウンロードしましたか?Xcode 5に対して実行するiOS 5 sdkを探しています。それをアップロードするか、自分でダウンロードできる場所を指定してください。ありがとう
Sam B

実は古いシステムも持っています。これを古いxcodeから取得しました。私がios sdk 5に試したのと同じですが、それほど必要ではなかったので、それをそこから出そうとしませんでした。また、この回答が適切であると思われる場合は、フィードバックを+または-で評価します。ありがとうございました。
AvtarSingh Suchariya 2013

1
こんにちはAvtar、私はあなたのios6 zipをダウンロードし、リストした場所のパスで解凍し、xcode 5を完全に閉じ、それを再び再起動しましたが、まだドロップダウンオプションのデプロイ可能なターゲットとして7.0しか表示されません。足りないステップがあり、それ以上のものがあると思いますか?
サムB

同じことが私のために働いています。質問です。これをxcodeアプリ自体に追加したか、シンボリックリンクを作成しましたか?
AvtarSingh Suchariya 2013

アプリディレクトリ自体に直接。
Sam B

34

はい、私は今日問題を解決しました。

  1. iPhoneOS6.1.sdkなどのSDKファイルを、自分または友達の古いXcodeディレクトリで見つけます。
  2. Xcode 5ディレクトリにコピーして配置します:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs。

ここに画像の説明を入力してください

次に、以下のようなSDKを選択できます。

ここに画像の説明を入力してください

これがお役に立てば幸いです。


2
同じことをしましたが、アプリのGUIが変更され、iOS 7 GUIのように見えます。アプリを実行するには、iPhone Retina(4インチ64ビット)シミュレータを選択しました。これを行った後、他に何か不足しています。
python

20

古いSDKを見つけてダウンロードします。古いSDKはここにあります

xcode.appディレクトリをXcode_4.6.3.appとしてコピーしました。

これで、両方のxcodeバージョンでテストおよびデバッグできます。対応するフォルダから実行するか、デスクトップにショートカットを作成する必要があります。コマンドラインからビルドするときは、iPhoneOS6.1代わりにiPhoneOS7.0

これはXcode5とiOSでうまく機能しました。

Xcode5のSDKディレクトリに移動します。通常は次の場所にあります:

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

次のように古いSDKへのシンボリックリンクを追加します。

sudo ln -s /Applications/Xcode_4.6.3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk iPhoneOS6.1.sdk

または、コマンドラインのどこからでも正確に

sudo ln -s /Applications/Xcode_4.6.3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk  /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk

このオプションを使用してアプリをテストできますが、おそらく2014年2月以降、以前のiOS 7 SDKでビルドされたアプリはアプリストアで受け入れられなくなります。
karim 2014年

11

古いSDKをダウンロードしてインストールできます

Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/

フォルダ。ログアウト+ログインして、変更が反映されていることを確認します。新しいXCodeに古いSDKが表示されます。


私はこれを(以前の回答のダウンロードリンクを使用して)行いましたが、iOS 6.1 sdkの選択肢は、ビルド設定>アーキテクチャ>ベースSDKの下のxcode 5に表示されます。ただし、iOS 7シミュレーター(またはiOS 7デバイス)でビルドして実行すると、iOS 7 UIKitボタン(iOS 6バージョンではない)が引き続き使用されます。誰かが理由について何か提案があれば、私は感謝します...
ビル・パターソン

TimeMachineがインストールされている場合は、上記のパス(ターミナルタイプ:open "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/"で開く)を開き、そこからiOS6.1 SDKを復元できます。
2013年

11

追加するだけで、Xcode 5自体でシミュレータの古いバージョンを実際にダウンロードできます-設定に行くだけで、ダウンロードの下にあります:

ここに画像の説明を入力してください


これは、xcode 5がベータ版から出て、現在は一般リリースとなっているために発生したものです。知って良かった、ありがとうSmikey
Tony

5
@Manniこれは、古いAPIに対してコンパイルすることと同じではありません。あなたは、iOS 6のための新しいAPIを使用して構築している
oligofren

古いターゲットプラットフォームを設定した場合でも、Xcode 6ではこれらのオプションはデフォルトでは表示されません。
GilesDMiddleton 2014年

10
  • Apple Dev CenterからXcode 4.6.xをダウンロードします。https://developer.apple.com/downloads/index.action
  • アプリケーションフォルダ内にXcode4というフォルダを作成し、ダウンロードしたdmgをそこにドラッグアンドドロップします。
  • ターミナルウィンドウを開く

    $sudo cp -R /Applications/Xcode4/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/
  • システムフォルダ内にいるため、パスワードの入力を求められます

  • Xcode 5を開くと、両方のSDKが表示されます。

10

私にとっては最も簡単な解決策:

  1. たとえば、古いバージョンのxcodeで、たとえば「iPhoneOS6.1 sdk」などの古いSDKを見つけます。まだダウンロードしていない場合は、次のアドレスにあるApple Developerサーバーからダウンロードしてください。https: //developer.apple.com/downloads/index.action?name = Xcode xcode.dmgを開いたら、 Xcode.app(右クリックして「コンテンツを表示」)し、Contents / Developer / Platforms / iPhoneOS.platform / Developer / SDKs / iPhoneOS6.1 sdkに移動します ここに画像の説明を入力してください
  2. iPhoneOS6.X sdkフォルダーをコピーして、xcode.appに貼り付けます。
    • アプリケーションフォルダーのxcode.appを右クリックします。
    • Contents / Developer / Platforms / iPhoneOS.platform / Developer / SDKs /に移動します
    • ここに貼り付けてください。

ここに画像の説明を入力してください

  1. xcodeアプリを閉じて、もう一度開きます。

シミュレーターでiOS 6のアプリをテストするには、次のようにします。-アクティブな画面でiOS 6.0を選択するだけです。 ここに画像の説明を入力してください

iOS 6でアプリをビルドするには、iOS 7を搭載したiPhoneでもアプリのデザインが古いデザインになるようにします。-ターゲットでiOS6.1を選択します-ベースSDK

ここに画像の説明を入力してください

注意:ターゲットのベースSDKを変更すると、iOS 7.0はシミュレーターでのビルドに使用できなくなります。


9

これできますが、実際には必要ありません

これを行う方法

ジェイソン・リーは答えを得ました。xCodeをインストールするとき、以前のインストールを置き換えるのではなく、そのままにしておくことを好みました。だから私は私のインストールフォルダにこれらを持っています

ここに画像の説明を入力してください

したがって、/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs異なるSDKが含まれています。(Xcode.appを正しい番号に置き換えます)以前のSDKをにコピーします

/Applications/Xcode 3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs

これは、コピーした後のフォルダです。

ここに画像の説明を入力してください

ここでxCodeを再起動すると、以前のバージョンのSDKをベースSDKとして設定できます。

なぜ必要ないのか

Apple Documentaionの参照

Xcodeプロジェクトに特定のSDKを使用するには、プロジェクトのビルド設定で2つの選択を行います。

  1. 展開ターゲットを選択するます。

    これは、ソフトウェアを実行できる最も古いOSバージョンを識別します。

  2. ベースSDKを選択

    ソフトウェアは、ベースSDKに対応するものまでのOSバージョンで利用可能な機能を使用できます。デフォルトでは、XcodeはこれをXcodeがサポートする最新のOSに設定します。

ルールは、最新をベースSDKとして使用し、展開ターゲットを実行するアプリの最小バージョンに設定します

たとえば、iOS 7をベースSDKとして使用し、iOS 6を展開ターゲットとして設定できます。iOS 6シミュレーターで実行して、iOS 6での動作をテストします。シミュレーターのリストで使用できない場合は、シミュレーターをインストールします。

ここに画像の説明を入力してください

さらに、iOS 6までの機能を無条件で使用でき、条件付きで、以前のバージョンをサポートしながら、新しい更新されたデバイス用のiOS 7の新機能をサポートできます。

これは、弱くリンクされたクラス弱くリンクされたメソッド関数、およびシンボルを使用して行うことができます

https://developer.apple.com/library/ios/documentation/developertools/conceptual/cross_development/Using/using.html#//apple_ref/doc/uid/20002000-SW3

弱いリンク

Xcodeで、展開ターゲット(最小必要バージョン)をiOS6に設定し、ターゲットSDK(最大許容バージョン)をiOS7に設定するとします。コンパイル中に、コンパイラはiOS7で導入されたインターフェイスを弱くリンクし、以前のインターフェイスを強くリンクします。これにより、アプリケーションをiOS6で引き続き実行できるようになりますが、新しい機能が利用可能になった場合でもそれを利用できます。


4

ここでの他の答えも正しいですが、次の手順が最も簡単だと思います。

「古いバージョンのXcodeをお探しですか?」という開発センターのリンクからXcode 4.6.3をダウンロードするだけです。(現在ここを指しています)、dmgをマウントします。

次に、ターミナルでSDKファイルを次の場所にコピーします。

cp -R /Volumes/Xcode/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/

最後に、Xcodeを再起動すれば完了です。


3

私のアプリは、プロジェクトで設定した元のiOS展開ターゲット(私の場合は5.1)で引き続きビルドできるため、Xcode 5にシームレスに移行しました。新しいSDKで解決できない問題が発生しない場合は、それを使用してビルドしないでください。確かに、内部には多くの改善点があります。

たとえば、私はXcode 4.6.3の代わりにXcode 5を使用することを好みます。どうして?Xcode 5のテキスト/コード領域のUIスクロールがCPUスレッド全体を消費しないため、バッテリー寿命が大幅に長くなります。


しない理由-現在、Xcode 5はかなり不安定です。1時間ごとにクラッシュします。また、一部のビューでは奇妙な位置の問題と色の問題があります(修正する作業は多くありません)
Nick H247

2

他の回答に記載されているように6.1 SDKをXcode 5にリンクすることは、1つのステップです。ただし、これでもiOS 7で実行されている新しいUI要素が取得される、ビューコントローラーがフルサイズになるなどの問題は解決されません。

この回答で説明されているように、iOS 7でUIをレガシーモードに切り替えることも必要です。

[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"UIUseLegacyUI"];
[[NSUserDefaults standardUserDefaults] synchronize];

注意:これは文書化されていないキーであり、App Storeビルドには推奨されません!

また、デバイスでのテスト中の経験では、アプリの起動のかなり早い段階でコードを実行しているにもかかわらず、アプリを2回起動したときにのみ機能することがわかりました+[AppDelegate initialize]。また、Xcode 4.6を使用してビルドされたバージョンとは微妙な違いがあります。たとえば、透明なナビゲーションバーの動作は異なります(ビューがフルサイズになります)。

ただし、Xcode 4.6.3はMavericksでクラッシュするため(少なくとも私にとっては、rdar:// 15318883を参照)、これは少なくともXcode 5をデバッグに使用し続けるためのソリューションです。


1

他の回答に記載されているように、XCode 4をダウンロードして、iOS 6.1 SDKをXCode 5に取り込みました。次に、iOS 6.1 Simulatorもインストールしました(設定で利用可能でした)。また、プロジェクト設定でBase SDKをiOS 6.1に切り替えました。

これらすべての操作の後、6.1ベースのSDKを使用するプロジェクトは、iOS 7シミュレーターのコンパビリティモードで実行されます。


1

2月1日以降、AppleはiOS6以下向けにビルドされたアプリを拒否します。こちらも公式通信ですアップルからです。iOS7向けのビルドを開始してください。

私の声明を明確にするために:iOS6以前向けにビルドすると、アップルはあなたのアプリを拒否します。iOS7向けにビルドし、すべてを下げても問題ない場合、これは次のことを意味します。

  1. xcode5を使用する必要があります
  2. 少なくともiOS7にデプロイする必要があります。

Appleメールの内容は私にはかなり明確です

「アプリがiOS 7の革新的なテクノロジーとシームレスに連携することを確認してください。2月1日から、App Storeに送信される新しいアプリとアプリのアップデートは、Xcode 5とiOS 7 SDKでビルドする必要があります。」


はい。ただし、iOS 6 SDKはiOS 7でも適切に機能します。一部のアプリは切り替えが本当に面倒です。
Aniruddh Joshi 2014

私はあなたが間違っていると思います。Appleは(a)最新のXcode 5でビルドされ、(b)iOS 7向けに最適化されていることを要求しています。リンクについては、Rob Napierの回答に関する私のコメントを参照してください。
バジルブルク2014年

私たちの一部はエンタープライズ配布用に開発しており、古いSDK(およびデバイス)をターゲットにする必要があります。エンタープライズアプリはApple ReviewプロセスやApp Storeを経由しないため、このディスカッションは非常に有用であり、関連性があり、今後も引き続き関連性があります。私はあなたの視点を理解していますが、それだけではありません。
Kevin OMara 2014年

あなたは完全に正しいです!!! エンタープライズ配信については考えていませんでした。ただし、iOS7の最適化やレビュープロセスを気にすることなく、展開ターゲットを設定するだけで、新しいXcodeを使用してiOS6に展開できることを忘れないでください。
Andrea

0

現在、Xcode 4.6.3および5.0がインストールされています。次のbashスクリプトを使用して、5.0を古いバージョンのSDKにリンクしました。

platforms_path="$1/Contents/Developer/Platforms";
if [ -d $platforms_path ]; then
    for platform in `ls $platforms_path`
    do
        sudo ln -sf $platforms_path/$platform/Developer/SDKs/* $(xcode-select --print-path)/Platforms/$platform/Developer/SDKs;
    done;
fi;

.appへのパスを指定するだけです。

./xcode.sh /Applications/Xcode-463.app

5.1にアップグレードすると、7.0.x SDKが削除され、7.1 SDKに置き換えられました。Xcode5-DP67.0.xを復元できた古いインストールがありますが、これは、最新のXcodeバージョンにアップグレードまたはインストールする前に、SDKディレクトリをバックアップする(またはアプリの名前を完全に変更する)ことをお勧めします。
ウェイン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.