Xcode 5には、iPhone 6.1シミュレーターをダウンロードできる設定ペインがありますが、iOS 6 SDKのダウンロードを許可する場所が見つからないため、Xcode 5で開発する場合、アクティブなSDKをiOS 6に設定できません。 Xcode 5でiOS 6 SDKをインストールできる回避策はありますか?
編集:
Xcode 5が一般提供され、以前のバージョンのSDKをダウンロードできるようになったため、回避策は必要なくなりました。
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は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/
古いコードを削除して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をダウンロードする必要はありません。
ここにいくつかのスクリーンショットがあります。
はい、私は今日問題を解決しました。
次に、以下のようなSDKを選択できます。
これがお役に立てば幸いです。
古い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
古いSDKをダウンロードしてインストールできます
Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/
フォルダ。ログアウト+ログインして、変更が反映されていることを確認します。新しいXCodeに古いSDKが表示されます。
追加するだけで、Xcode 5自体でシミュレータの古いバージョンを実際にダウンロードできます-設定に行くだけで、ダウンロードの下にあります:
ターミナルウィンドウを開く
$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でもアプリのデザインが古いデザインになるようにします。-ターゲットでiOS6.1を選択します-ベースSDK
注意:ターゲットのベースSDKを変更すると、iOS 7.0はシミュレーターでのビルドに使用できなくなります。
これはできますが、実際には必要ありません
ジェイソン・リーは答えを得ました。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つの選択を行います。
展開ターゲットを選択するます。
これは、ソフトウェアを実行できる最も古いOSバージョンを識別します。
ベースSDKを選択
ソフトウェアは、ベースSDKに対応するものまでのOSバージョンで利用可能な機能を使用できます。デフォルトでは、XcodeはこれをXcodeがサポートする最新のOSに設定します。
たとえば、iOS 7をベースSDKとして使用し、iOS 6を展開ターゲットとして設定できます。iOS 6シミュレーターで実行して、iOS 6での動作をテストします。シミュレーターのリストで使用できない場合は、シミュレーターをインストールします。
さらに、iOS 6までの機能を無条件で使用でき、条件付きで、以前のバージョンをサポートしながら、新しい更新されたデバイス用のiOS 7の新機能をサポートできます。
これは、弱くリンクされたクラス、弱くリンクされたメソッド、関数、およびシンボルを使用して行うことができます
Xcodeで、展開ターゲット(最小必要バージョン)をiOS6に設定し、ターゲットSDK(最大許容バージョン)をiOS7に設定するとします。コンパイル中に、コンパイラはiOS7で導入されたインターフェイスを弱くリンクし、以前のインターフェイスを強くリンクします。これにより、アプリケーションを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を再起動すれば完了です。
私のアプリは、プロジェクトで設定した元のiOS展開ターゲット(私の場合は5.1)で引き続きビルドできるため、Xcode 5にシームレスに移行しました。新しいSDKで解決できない問題が発生しない場合は、それを使用してビルドしないでください。確かに、内部には多くの改善点があります。
たとえば、私はXcode 4.6.3の代わりにXcode 5を使用することを好みます。どうして?Xcode 5のテキスト/コード領域のUIスクロールがCPUスレッド全体を消費しないため、バッテリー寿命が大幅に長くなります。
他の回答に記載されているように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をデバッグに使用し続けるためのソリューションです。
2月1日以降、AppleはiOS6以下向けにビルドされたアプリを拒否します。こちらも公式通信ですアップルからです。iOS7向けのビルドを開始してください。
私の声明を明確にするために:iOS6以前向けにビルドすると、アップルはあなたのアプリを拒否します。iOS7向けにビルドし、すべてを下げても問題ない場合、これは次のことを意味します。
Appleメールの内容は私にはかなり明確です
「アプリがiOS 7の革新的なテクノロジーとシームレスに連携することを確認してください。2月1日から、App Storeに送信される新しいアプリとアプリのアップデートは、Xcode 5とiOS 7 SDKでビルドする必要があります。」
現在、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
Xcode5-DP6
7.0.xを復元できた古いインストールがありますが、これは、最新のXcodeバージョンにアップグレードまたはインストールする前に、SDKディレクトリをバックアップする(またはアプリの名前を完全に変更する)ことをお勧めします。