Xcode 5.1-コンパイルするアーキテクチャはありません(ONLY_ACTIVE_ARCH = YES、active arch = x86_64、VALID_ARCHS = i386)


168

Xcode 5.1に更新した後、64ビットシミュレータ用のプロジェクトをビルドできなくなり、次のエラーが表示されます。

 No architectures to compile for (ONLY_ACTIVE_ARCH=YES, active arch=x86_64, VALID_ARCHS=i386).

これらは私のターゲットビルド設定です:

Xcodeターゲットのビルド設定

「Build Active Architecture」を「No」に変更し、「i386」を「Valid Architectures」に追加してみましたが、どちらも機能しませんでした。提案をありがとう!


4
私は、最新のiOS 7.1アップデートの結果としてかなりの数の同様の質問を見てきましたが、解決策はarm64を除外することでした。確かに、それはあなたの特定の問題を解決しませんが、アップルが何かを台無しにしたと信じる理由があります。
dandan78 14

ありがとう、それは理にかなっています、私はAppleがこのためのアップデートをリリースするまで64ビットを使用しないと思います。
ebi 2014年


Xcode 6.1で同じ問題が発生しました。以下の解決策をすべて試しましたが、機能しません。プロジェクトにCocoaPodsがあります。Xcode 6.1での修正方法に関する解決策
Vinayaka Karjigi 14年

回答:


102

XCode 5.1にアップグレードした後、同じエラーメッセージが表示されました。CocoaPodsを使用していますか?もしそうなら、これは問題を解決するはずです:

  1. Xcodeの左ペインのワークスペースから「Pods」プロジェクトを削除し、Xcodeを閉じます。
  2. コマンドラインから「pod install」を実行して、「Pods」プロジェクトを再作成します。
  3. Xcodeを再度開き、「ポッド」プロジェクトと独自のプロジェクトの両方のビルド設定で「ビルドアクティブアーキテクチャのみ」が「いいえ」に設定されていることを確認します。
  4. クリーンでビルドします。

1
ポッドアーキテクチャからarm64を削除することで修正しました。
ebi 2014年

Cordova / PhoneGapプロジェクトでも同じ問題を解決しました。ありがとう
Rocco

182

あなたがする必要があるのは単にに設定するONLY_ACTIVE_ARCHことですNO(少なくとも私にとってはうまくいきます)。以下はそのスクリーンショットです:


編集:

私の知る限り(何か問題がある場合は指摘してください、ありがとうございます)、に設定ONLY_ACTIVE_ARCHした場合YES、Xcodeはアクティブなアーキテクチャ(現在Xcodeでアクティブなデバイスを指します)に対してのみビルドすることを意味します。Xcodeのデフォルト設定は[デバッグ]に設定YESされているようです。Macに接続されている特別なデバイス用にビルドするだけの場合、他のアーキテクチャのバイナリはビルドされません。

ビルドに失敗した理由は、プロジェクトが接続したデバイスのアーキテクチャをサポートしていないことが原因である可能性があります。したがって、最適なソリューションは、デバイスに適切なアーキテクチャを追加することです。以下は、サポートするアーキテクチャとデバイスのリストです。

  • ARMv8 / ARM64: 、iPhone 6、、iPhone 5siPad AirRetina iPad Mini
  • ARMv7s: 、、iPhone 5iPhone 5ciPad 4
  • ARMv7: 、iPhone 3GSiPhone 4iPhone 4SiPod 3G/4G/5GiPad、、iPad 2iPad 3iPad Mini
  • ARMv6の:iPhoneiPhone 3GiPod 1G/2G

なぜ「設定ONLY_ACTIVE_ARCHNO作品?デバイスは、追加したすべてのアーキテクチャ用にビルドされたバイナリを実行できますが(ビルドに合格します)、パフォーマンスがいくらか失われます。これは簡単な解決策ですが、最善ではありません。


:追加したアーキテクチャが多いほど、生成されるバイナリは大きくなります。したがって、プロジェクトに適したアーキテクチャを選択することをお勧めします。;)


@EmilMarashlievはビルドターゲットのみです。ルートプロジェクト(青色のアイコン付き)を選択すると表示されます。
Kjuly

@Praveenはわかりません。このオプションはXcode 5.1で変更されるようです。
Kjuly 2014

これは正解です。あなたは私に一生をかけてくれたおかげで、おかげで:)
Bikramjit Singh 2014

2
これが最も明確で完全な答えです。間違いなく承認されたものであるべきです!!! ありがとう
MeV

1
これはとても役に立ちました。必要なアーキテクチャをダウンロードする方法を追加できれば、答えは完全になります。
Kalpesh Popat

29

arm64ターゲットのに追加しvalid architecturesます。x86-64シミュレーターの有効なアーキテクチャーにもアーキテクチャーを追加するように見えます。


27

CocoaPodsを使用している場合、最も可能性の高い問題は、ビルドアクティブアーキテクチャのみのポッドプロジェクトのビルド設定がデバッグで[ はい]に設定されていることです。

解決策は簡単です。いいえに変更します。

同様に、アプリケーションプロジェクトの[ いいえ]に変更します。


12

同様の問題がありました。プロジェクトのビルド設定で「アーキテクチャ」を「$(ARCHS_STANDARD_32_BIT)」に変更することで解決しました。

Appleはアプリを64ビットアーキテクチャでビルドすることを推奨しているため、ここで、標準アーキテクチャ(armv7、arm64)-$(ARCHS_STANDARD)を選択する必要があります。クリック:Appleドキュメント


@JayprakashDubey、これはどうですか?$(ARCHS_STANDARD_INCLUDING_64_BIT)
Hemang、2015

$(ARCHS_STANDARD_32_BIT)または使用する必要がありますか$(ARCHS_STANDARD_INCLUDING_64_BIT)
Hemang、2015

@hagile:$(ARCHS_STANDARD_INCLUDING_64_BIT)で行く
Jayprakash Dubey

10

追加:アーキテクチャ:$(ARCHS_STANDARD_INCLUDING_64_BIT)

有効なアーキテクチャ:arm64 armv7 armv7s


うーん、すべてをリセットしようとしましたか、シミュレータコンテンツ、シミュレータ、クリーンプロジェクト、xCodeとMacを再起動しました。原因はxCode5.1で、シミュレータはうまく機能しています
AntonijoDev

iPhone 4インチ64ビットを使用してアプリ/シミュレータを実行していますか?
ebi

5

念のため、上記の方法を試しても問題が解決しない場合は、実行中のシミュレータもサポートされているものであることを確認してください。私はarm7とarm7sを指定しましたが、64ビットシミュレータでアプリを実行しようとしました。


+1はい、これが1つです。すべてがまだ問題がないことを確認し、再確認し、トリプルチェックした後、これが問題でした!
JOM 2014

1
ワオ。適切なターゲットコードをコンパイルするために、ビルドするデバイスを実際に接続する必要がありますか?口の中で少し吐きました。あなたの投稿は私にこの問題を解決しました、ありがとう。

5

「ポッドインストール」が実行されるたびにデバッグのためにonly_active_archをリセットしないようにするには、ポッドファイルに以下を追加します。

# Append to your Podfile
post_install do |installer_representation|
    installer_representation.project.targets.each do |target|
        target.build_configurations.each do |config|
            config.build_settings['ONLY_ACTIVE_ARCH'] = 'NO'
        end
    end
end


3

私の問題は、Podfileにがあるにもかかわらず、PodsプロジェクトがOS Xをターゲットにしていることplatform :iosでした。私はcocoapods 0.35.0.rc2を使用しています。

これを修正するには、プロジェクトナビゲーターでポッドプロジェクトを選択し、ポッドPROJECTノード(ポッドターゲットではなく注意)がiOSをターゲットにしていることを確認します。つまり、アーキテクチャのビルド設定は次のようになります。

  • アーキテクチャ: $(ARCHS_STANDARD)
  • 基本SDK: iOS 8.1
  • サポートされているプラ​​ットフォーム: iOS
  • 有効なアーキテクチャ: $(ARCHS_STANDARD)

また、すべてのアーキテクチャを構築したかったので、Podfileに以下を追加しました。

post_install do | installer |
    installer.project.build_configurations.each do |config|
        config.build_settings['ONLY_ACTIVE_ARCH'] = 'NO'
    end
end

3

以下を追加する必要がi386ありx86_64ましたValid Architectures。Xcode 7.2を実行していて、iOS 8以降をターゲットにしています。私はすでに持っていましたarmv7armv7sそしてarm64そこでそれはXcode 6.4で動作していました。


2

xcode 5.1を使用してiPadでアプリを実行すると、同じ問題に直面しました。「有効なアーキテクチャ」からarmv7sを削除し、「アクティブなアーキテクチャのみをビルド」の値を「いいえ」に設定することで解決しました。これらのフィールドは両方とも、アプリ->ターゲット->ビルド設定->アーキテクチャにあります。


2

Xcode 7.2のシミュレーターのコマンドラインビルドに問題があるため、この質問に到達しました。他の誰かが同じ問題でここに来た場合、私が見つけた解決策を共有します:

どうやらそこにあるのXcode 7.2のバグが発生xcodebuildシミュレータ用にビルドしようとすると失敗するが。解決策は、オプション "-destination"を指定することです。例:

xcodebuild -project TestBuildCmd.xcodeproj -scheme TestBuildCmd -sdk iphonesimulator -destination 'platform=iOS Simulator,name=iPhone 6' build

更新

上記のコマンド例は、iPhone 6のグラフィックのみを含むバイナリをビルドします。バイナリが他のシミュレータで実行される場合、iPhone 6グラフィックスはプラットフォームに合わせてスケーリングされます。より良い回避策はすべてのプラットフォームのすべてのグラフィックスが含まれているパラメータを指定することでPLATFORM_NAME=iphonesimulator、たとえば、:

xcodebuild -project TestBuildCmd.xcodeproj -scheme TestBuildCmd -sdk iphonesimulator -arch i386 PLATFORM_NAME=iphonesimulator build

0

アーキテクチャにi386を追加すると同時に、以前のすべてのアーキテクチャを削除(つまり、ARCHS_STANDARD設定を削除)してみてください。これにより、アクティブなアーキテクチャがi386に変更されます。デフォルトでarmv7用にビルドしようとしたときに同様の問題が発生しましたが、arm64用にビルドしようとし続けました。ARCHS_STANDARDをARCHS_STANDARD_32_BITに変更したところ、選択したアクティブアーキテクチャが変更されました。


0

アーキテクチャでは-時々6.0と7.0をサポートするために、arm64を除外します

アーキテクチャー->アーキテクチャー-標準アーキテクチャーarm64 armv7 armv7sを選択します。有効なアーカイブのすぐ下に、ユーザーarm64 armv7 armv7s makeが含まれています。これでうまくいきました。


0

@Kjulyの答えと特定の行を使用してこの問題を解決しました:

「ビルドに失敗した理由は、プロジェクトが接続したデバイスのアーキテクチャをサポートしていないことが原因である可能性があります。」

Xcodeが読み込まれると、iPadアプリがiPad Airに自動的に設定されます

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

これにより、依存関係分析エラーが発生しました。

デバイスの種類を変更すると、すぐに問題が解決しました:

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

なぜこれが機能するのかはわかりませんが、これは非常に迅速な回答であり、バックグラウンドでいじくりまわす手間を省き、すぐにアプリをテストして動作させることができました。これで問題が解決する可能性があるとは思いもしませんでした。とても簡単な方法で修正できましたが、この場合は修正しました。


0

アーキテクチャ名を手動で入力する必要があることがわかりました。

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

なぜこれが必要なのか、つまりこれらの値がXcode自体から継承されなかった理由はわかりません。しかし、これを行うとすぐに、問題はなくなりました。


0

有効なアーキテクチャ:各エントリ(リリース、デバッグ)を選択し、ビルドしてバックスペースを押します。うまくいくはず

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