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


103

最近、iOS 5 SDKパッケージのXcode 4.2をダウンロードしましたが、iOS 4.2.1でiPhone 3Gをデバッグに使用できないことにすぐに気付きました。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アーキテクチャ用にビルドする方法


編集は、iOSバージョンとは別の問題であるアーキテクチャに関係していることに注意してください。また、編集を回答として追加して、見つけたソリューションを受け入れ、この質問に回答済みのマークを付けることができるようにしてください。

回答:


153

新しく作成したXcode 4.2プロジェクトをiPhone 3G 4.2.1で実行しようとすると、同じ問題が発生しました。ここに私がそれを走らせることができた方法があります。

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

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

3)ターゲットの「ビルド設定」==>「iOSデプロイメントターゲット」をiOS 4.2に変更します。

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

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

ところで、主催者を介して手動でアプリを追加しようとすると、これがわかり、報告されました:

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

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

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


どうもありがとうございました!ビールを借りているよ!これは確かに私の問題を解決しました。PITAは確かに:D
グレッグエリス

4
ありがとうございました!アーキテクチャの設定については他で読みましたが、「必要なデバイス機能」の設定については誰も触れていません。
バニーヒーロー

追加する必要があります。新しいプロジェクトと古いプロジェクトの両方がアップグレードの影響を受けます!私はグーグルする前に古いものをテストしましたが、それらも機能しませんでした!私もあなたにビールを借りています!:)
エドゥアルドコスタ

1
同じ問題がありますが、プロジェクトの設定がアーキテクチャの「標準armv7」であったとしても、有効なアーキテクチャはすでに「armv6 armv7」を示していました。さらに、Info.plistに「必要なデバイス機能」プロパティがありませんでした。それでもトリックを試しますが、うまくいくことを願っています!
シャンパーリア

「必要なデバイス機能」も私に与えられました
codecaffeine 2012年

12

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


私は環境設定に行き、古いOSのデバッグサポートをダウンロードしてインストールし、xcodeを終了し、xcodeを再度開いて、クリーンでビルドしましたが、古いデバイスにアプリがインストールされません。私は今、完全に途方に暮れています。あなたの返答を見たとき、私はそれが私の問題を解決するだろうと確信していました:(
Greg Ellis

1
私もあなたにビールを借りています!これにより、Xcode 4のアップグレード後に発生した別の問題が解決しました!iOS 4.2デバイス(iPod Touch第2世代)をデバッグできるようになりました!
エドゥアルドコスタ

3

mmorrisは問題の解決に近づきました... Info.plistで、必要なデバイス機能をarmv7ではなくarmv6に設定する必要がありました。これが他のユーザーにも役立つことを願っています。


1

電話を接続し、主催者に行く必要があります。Xcodeは古いバージョンを自動的に要求するはずです。

詳細については、デベロッパーページをご覧ください。4.2ベータ版のメモに記載されていました


私はこれを行い、「このデバイスを開発に使用する」をクリックすると、本来の機能を果たしているように見えましたが、それでもxcodeから古いデバイスでアプリを実行できません。
グレッグエリス

1

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

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

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


1

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


0

これは私にとってはうまくいき、以前に古いバージョンの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

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


0

私の場合、必要なデバイス機能に冗長ラインがありました ここに画像の説明を入力してください

削除しました...

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

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.