Xcode 5にはiPhone 6.1シミュレータをダウンロードできる環境設定パネルがありますが、iOS 6 SDKをダウンロードできる場所が見つからないため、Xcode 5で開発するときにアクティブなSDKをiOS 6に設定することはできません。 Xcode 5でiOS 6 SDKをインストールできるようにするための回避策はありますか?
編集:
Xcode 5が一般に利用可能になり、以前のバージョンのSDKをダウンロードできるようになったため、回避策は必要なくなりました。
編集:2014年2月1日から、AppleはもはやApp Storeへの提出のためのiOS7以前のアプリを受け付けないでしょう。したがって、この手法はまだ機能しますが、ほとんどの読者には役立ちません。
はい、これで大丈夫です。私はまだ1つのプロジェクトのためにiOS 4.3で構築しています(私たちが更新してからしばらく経ちましたが、iOS 6が出てからもまだ受け入れています)。
設定方法の詳細については、 「基本SDK」として使用できるようにXcodeを古いSDKに設定する方法 を参照してください。アップグレードするたびに、私の fix-xcode スクリプトを使用してすべてのものをリンクできます。
唯一のトリックは古いSDKを入手することです。それらを持っていないのであれば、通常Xcodeの古いバージョンをダウンロードし(まだ developer.Apple.com で入手可能)、インストーラパッケージを開いて、SDKを見つけるために探し回る必要があります。あなたが必要です。
SDKは、インストーラパッケージ内の次の場所にあります。
Xcode.app/Contents/Developer/Platforms/
私はxcode 5にアップデートしたときにも同じ問題を実行していましたが、それは古いsdkを削除しました。しかし、私は別のコンピュータからあなたが以下のリンクからダウンロードすることができるのと同じ古いSDKのコピーを取った。
http://www.4shared.com/Zip/NlPgsxz6/iPhoneOS61sdk.html
(www.4shared.comテストアカウント[email protected]/test)
には2つの方法があります。
1)このフォルダを/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKsに解凍して貼り付け、xcodeを再起動します。
しかし、あなたがxcodeを更新するならば、これは再びXcodeによって取り除かれるかもしれません。
2)もう1つの方法は、解凍して好きな場所に貼り付けて/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKsに移動し、シンボリックリンクを作成することです。あなたはXcodeを更新します。
私が行ったもう1つの変更は、[ビルド設定]> [アーキテクチャ]> [標準](64ではなく)なので、Deployment Targetのすべてのバージョンを一覧表示します。
展開先を変更するだけの場合は、Zipをダウンロードする必要はありません。
これがスクリーンショットです。
はい、私は今日問題を解決しました。
次に、以下のようにSDKを選ぶことができます。
これがお役に立てば幸いです。
古いSDKを見つけてダウンロードします。 古いSDKがここにあります 。
Xcode.appディレクトリをXcode_4.6.3.appとしてコピーしました。
これで、両方のxcodeバージョンでテストとデバッグができます。対応するフォルダからそれらを実行するか、デスクトップにショートカットを作成する必要があります。コマンドラインからビルドする場合は、パラメータをiPhoneOS6.1
ではなくiPhoneOS7.0
として指定します。
これは私にとってXcode 5とiOSでとてもうまくいった。
Xcode 5の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
古いSDKをダウンロードしてにインストールすることができます。
Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/
フォルダ。ログアウト+ログインして変更を有効にし、新しいXCodeに古いSDKが表示されるようにします。
追加するだけで、あなたは実際にXcode 5自体でシミュレータの古いバージョンをダウンロードすることができます - ちょうど好みに行ってください、そしてあなたはDownloadsの下にそれらを見つけるでしょう:
端末ウィンドウを開く
$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/
システムフォルダの中にいるのでパスワードを入力するように促されます
私にとっては最も簡単な解決策:
あなたのシミュレータでiOS 6でアプリをテストするには: - あなたのアクティブなゲームでiOS 6.0を選ぶだけです。
IOS 6であなたのアプリを構築するために、あなたのアプリのデザインもiOS 7搭載のiPhone上で古いデザインになるでしょう: - TargetsでiOS6.1を選択します - Base SDK
ちょっと注意してください:あなたがあなたのターゲットのベースSDKを変更するとき、iOS 7.0はもうシミュレータ上に構築するために利用可能ではないでしょう!
これはできます、しかし必ずしも必要ではありません
ジェイソンリーは答えを得た。 xCodeをインストールするとき、私はそれらを置き換えるよりも以前のインストールを維持することを好みました。だから私は私のインストールフォルダにこれらを持っています
そのため/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs
は異なるsdkを含みます。 (Xcode.appを正しい番号に置き換えてください)以前のsdksをにコピーしてください
/Applications/Xcode 3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs
コピーした後の私のフォルダです。
XCodeを再起動すると、以前のバージョンのsdksをbase sdkとして設定できます。
アップルのドキュメントを参照する
Xcodeプロジェクトに特定のSDKを使用するには、プロジェクトのビルド設定で2つの選択を行います。
配置先を選択してください。
これはあなたのソフトウェアが走ることができる最も古いOSバージョンを識別します。
ベースSDKを選択してください
お使いのソフトウェアは、基本SDKに対応するものまでのOSバージョンで利用可能な機能を使用することができます。デフォルトでは、XcodeはこれをXcodeでサポートされている最新のOSに設定します。
たとえば、iOS 7を基本SDKとして使用し、iOS 6をデプロイメントターゲットとして設定できます。 iOS 6シミュレータ上で実行して、iOS 6上での動作をテストします。シミュレータのリストで利用できない場合はシミュレータをインストールします。
また、iOS 6までの機能を無条件で使用することができます。また、条件付きで、以前のバージョンをサポートしながら、新しい更新されたデバイスに対してiOS 7の新機能をサポートできます。
これは、弱連結クラス、弱連結メソッド、関数を使用して実行できます。 、および記号
Xcodeで、展開ターゲット(最低限必要なバージョン)をiOS6に、ターゲットSDK(最高許容バージョン)をiOS7に設定したとします。コンパイル中、コンパイラーはiOS 7で導入されたすべてのインターフェースを弱くリンクする一方で、以前のインターフェースを強力にリンクします。これはあなたのアプリケーションがiOS6上で動作し続けることを可能にするでしょうが、それらが利用可能であるときそれでも新しい機能を利用するでしょう。
ここでも他の答えは正しいですが、私は以下のステップが最も簡単であると思います:
「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を再起動すれば完了です。
私のアプリはXcode 5にシームレスに移行されました。これは、プロジェクトで設定した元のiOS Deployment Target(私の場合は5.1)を使用してもビルドできるためです。新しいSDKで解決できない問題が発生しない場合は、なぜそれを使用してビルドしないのですか?フードの下に確かに多くの改良があります。
例えば、私はXcode 4.6.3の代わりにXcode 5を使うほうが大好きです。どうして? Xcode 5のテキスト/コード領域をUIでスクロールしてもCPUスレッド全体が噛み込まれることがなくなったため、バッテリ寿命が大幅に延びます。
他の回答で説明されているように6.1 SDKをXcode 5にリンクすることは1つのステップです。しかしながら、これはまだiOS 7上で走る新しいUI要素が取られるという問題を解決しません、View Controllerはフルサイズ等にされます.
この答え で説明しているように、iOS 7でUIをレガシーモードに切り替えることも必要です。
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"UIUseLegacyUI"];
[[NSUserDefaults standardUserDefaults] synchronize];
注意:これは文書化されていないキーであり、App Storeのビルドにはお勧めできません。
また、デバイスのテスト中の経験から、+[AppDelegate initialize]
で、アプリの起動のかなり早い段階でコードを実行していても、アプリを2回目に起動したときにしか機能しないことがわかりました。 Xcode 4.6を使ってビルドされたバージョンとは微妙な違いもあります。たとえば、透明なナビゲーションバーは異なる動作をします(ビューがフルサイズになります)。
しかし、Xcode 4.6.3がMavericksでクラッシュするので(少なくとも私にとっては、 rdar:// 15318883 を参照)、これは少なくとも続けるための解決策です。デバッグにXcode 5を使用する。
2月1日からAppleはiOS6以下のために作られたアプリを拒絶するでしょう。これはAppleからの公式な コミュニケーション でもあります。 iOS7向けのビルドを開始しました。
私の声を明確にするために:あなたがiOS6以下のために造るならば、アップルはあなたのアプリを拒絶するでしょう。あなたがiOS7用にビルドしていて、すべてが下がっても大丈夫なら、これは次のことを意味します。
AppleのEメールの内容は私にはかなり明確だ
「アプリケーションがiOS 7の革新的なテクノロジとシームレスに連携することを確認してください。2月1日以降、App Storeに送信される新しいアプリケーションとアプリケーションのアップデートは、Xcode 5とiOS 7 SDKで構築する必要があります」
私はXCode 4をダウンロードし、それからiOS 6.1 SDKをXCode 5に持っていった。それから私はまたiOS 6.1 Simulatorをインストールしました(それは好みで利用可能でした)。また、プロジェクト設定でBase SDKをiOS 6.1に切り替えました。
これらすべての操作の後、6.1 base sdkのプロジェクトはiOS 7 Simulatorのコンプ機能モードで実行されます。
私は現在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