web-dev-qa-db-ja.com

Xcode 4.2およびiOS 5 SDKを使用している場合、古いiOSバージョンをターゲットにできますか?

最近、iOS 5 SDKパッケージを含むXcode 4.2をダウンロードしたところ、iOS 3.2.1をデバッグに使用することができないことにすぐに気付きました。 iOS 5がインストールされたiphone 4でのみデバッグとテストができます。

5.0未満のiOSを実行している私のデバイスの場合、Xcodeは「iPhone3GSの実行が終了しました」と表示し、実行しません。 3.0を超えるアプリで機能を使用しておらず、すべてのバージョン3.0以降をターゲットにできるようにするため、展開ターゲットを3.0に設定しています。すべてのプロビジョニングプロファイルがインストールされており、最新の状態です。

Xcodeを終了して再起動し、ビルドを複数回クリーンアップしました。アーキテクチャビルド設定にarmv6を追加しようとしましたが、ios 4.2.1を使用して古い携帯電話でアプリをビルドして実行することはできません。

私の質問は、新しいSDKを使用したアプリを5未満のiOSバージョンでも動作させることは可能ですか?古い携帯電話にアプリをインストールできない場合、アプリが以前のiOSバージョンで引き続き動作することを確認するにはどうすればよいですか?

編集:[OK] iOS SDK 5はデフォルトでarmv6のサポートを削除したようです。する必要があるのは、ターゲットとプロジェクトの両方のビルド設定の下にある[アーキテクチャ]フィールドにarmv6を追加することです。その後、アプリはiPhone 3Gデバイスで実行できるようになります。答えはここにあります iOS 5でarmv6およびarmv7アーキテクチャ用にビルドする方法

103
Greg Ellis

IPhone 3G 4.2.1で実行されている新しく作成されたXcode 4.2プロジェクトを取得しようとすると、同じ問題が発生していました。これがどのように実行できるようになったかです。

1)ターゲットの「ビルド設定」==>「アーキテクチャ」を「標準(armv7)」から「その他」に変更します。 armv6とarmv7を追加します。

2)ターゲットの「ビルド設定」==>「有効なアーキテクチャ」をarmv6およびarmv7に変更します。

3)ターゲットの「ビルド設定」==>「iOS展開ターゲット」をiOS 4.2に変更します。

enter image description here

4)プロジェクト* -Info.plistを開き、「必要なデバイス機能」の設定を削除します(armv7が必要であることに注意してください) enter image description here

ところで、私はオーガナイザーを介して手動でアプリを追加しようとしたときにこれを理解し、報告しました:

アプリケーションをインストールできません

/Users/.../TestsDebug.appのアプリケーションのInfo.plistは、Dev iPhone 3Gが満たしていないデバイス機能要件を指定します

その後はすべて動作するはずです。 PITAについて話します。

152
mmorris

Xcode> Preferences> Downloadsに移動して、古いiOSバージョンのデバッグサポートをインストールします。

12

mmorrisが問題の解決に近づきました... Info.plistで、Required Device Capabilitiesをarmv7ではなくarmv6に設定する必要がありました。これが他の人にも役立つことを願っています。

3
flizit

Armv6をアーキテクチャに追加する必要があることがわかりましたが、それでも機能しませんでした。そして今、必要な機能からarmv7を削除しました。動いた!

1
Greg

電話を接続してからオーガナイザーに移動する必要があります。 Xcodeは自動的に古いバージョンを要求するはずです。

詳細については、開発者のページを参照してください。 4.2ベータ版のノートに記載されていました

1
Foo Bah

古いiPod Touchでアプリを実行しようとすると、同様の問題が発生しました。 Xcode 4.3.3にアップグレードすると、古いハードウェアではデバッガーでアプリが実行されなくなりました。

ここでの「アーキテクチャ」と「必要なデバイス機能」に関する他のコメントは、正しく指定するための重要な詳細だと思います。残念ながら、彼らは私の問題を解決するのに十分ではありませんでした。

私の場合、ビルドスキームが原因であることがわかりました。 Xcode 4.3.3は、プロジェクトのアップグレード時にGDBデバッガーからLLDBに切り替えるように促しました。 スキームのRunアクションをGDBに戻したの場合、Xcodeから古いハードウェアでアプリを再度実行することができました。

1
otto

これは私にとってはうまくいきましたが、以前のバージョンのXcodeを使用していた場合はうまくいくはずです。そうでない場合は、他の人から与えられたアドバイスに従って、古いバージョンのSDKからSDKを取得する必要があります。

Sudo cp -a /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk

このコマンドは他のコマンドとは少し異なりますが、これらのコマンドはSDKフォルダー自体にファイルをドロップしました-適切な名前でサブディレクトリを作成する必要があります。

0
Tom Boutell

私の場合、必要なデバイス機能に冗長回線がありました enter image description here

削除しました...

enter image description here

うまくいけば、それは他の誰かを助けるでしょう。

0
Arkady