Xcode 5.1-컴파일 할 아키텍처가 없습니다 (ONLY_ACTIVE_ARCH = YES, 활성 아치 = 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를 생략하는 것이 었습니다. 분명히, 그것은 당신의 특정 문제를 해결하지 못하지만 Apple이 무언가를 엉망으로 만들었다 고 믿을만한 이유가 있습니다.
dandan78

고마워, 그것은 말이됩니다, 애플이 업데이트를 릴리스 할 때까지 64 비트를 사용하지 않을 것 같습니다.
ebi


Xcode 6.1에서 동일한 문제가 아래 주어진 모든 솔루션을 시도했지만 작동하지 않습니다. 프로젝트에 CocoaPod가 있습니다. 엑스 코드 6.1에 문제를 해결하는 방법에 대한 모든 솔루션
Vinayaka Karjigi

답변:


102

XCode 5.1로 업그레이드 한 후 동일한 오류 메시지가 나타납니다. CocoaPods를 사용하고 있습니까? 그렇다면 문제를 해결해야합니다.

  1. Xcode의 왼쪽 분할 창에있는 작업 공간에서 "Pods"프로젝트를 삭제하고 Xcode를 닫으십시오.
  2. 명령 행에서 "pod install"을 실행하여 "Pods"프로젝트를 다시 작성하십시오.
  3. Xcode를 다시 열고 "Pods"프로젝트와 자신의 프로젝트의 빌드 설정에서 "Build Active Architecture Only"가 "No"로 설정되어 있는지 확인하십시오.
  4. 청소하고 건설하십시오.

1
포드 아키텍처에서 arm64를 제거하여 수정했습니다.
ebi

Cordova / PhoneGap 프로젝트에서도 같은 문제가 해결되었습니다. 감사합니다
Rocco

182

당신이해야 할 것은 단지를 설정 ONLY_ACTIVE_ARCH으로 NO(나를 위해 적어도 작품). 아래는 이에 대한 스크린 샷입니다.


편집하다:

내가 아는 한 ( 뭔가 잘못, 감사가 있다면 그것을 지적 해주십시오 설정 한 경우) ONLY_ACTIVE_ARCHYES, 그것은 엑스 코드는 (현재 엑스 코드에서 활동의 장치를 의미하는) 활성 아키텍처 구축을 의미합니다. Xcode의 기본 설정은 Debug로 설정 YES되어 있으므로 Mac에 연결된 특수 장치에만 빌드하려는 경우 다른 아키텍처에 대한 바이너리를 빌드하지 않습니다.

빌드하지 못한 이유는 프로젝트가 연결된 장치의 아키텍처를 지원하지 않기 때문일 수 있습니다. 따라서 최상의 솔루션은 장치에 적합한 아키텍처를 추가하는 것입니다. 아래는 지원하는 아키텍처 및 장치 목록입니다.

  • ARMv8 / ARM64 : iPhone 6, iPhone 5s, iPad Air,Retina iPad Mini
  • ARMv7s : iPhone 5, iPhone 5c,iPad 4
  • 하는 ARMv7 : iPhone 3GS, iPhone 4, iPhone 4S, iPod 3G/4G/5G, iPad, iPad 2, iPad 3,iPad Mini
  • ARMv6에 : iPhone, iPhone 3G,iPod 1G/2G

그런데 왜 "는 설정 ONLY_ACTIVE_ARCHNO" 작품? 장치는 추가 한 모든 아키텍처에 대해 빌드 된 이진 파일을 계속 실행할 수 있지만 (빌드 통과) 일부 성능이 저하됩니다. 이것은 단지 빠른 해결책이지만 최선은 아닙니다.


참고 : 아키텍처를 많이 추가할수록 바이너리가 더 많이 생성됩니다. 따라서 프로젝트에 적합한 아키텍처를 선택하는 것이 좋습니다. ;)


@EmilMarashliev는 빌드 대상입니다. 루트 프로젝트를 선택하면 파란색 아이콘이 표시됩니다.
Kjuly

@Praveen은 확실하지 않습니다.이 옵션은 Xcode 5.1에서 변경되는 것 같습니다.
Kjuly

이것은 정답입니다, 당신은 여기에 평생을 구해 주셔서 감사합니다 :)
Bikramjit Singh

2
이것은 가장 명확하고 완전한 답변입니다. 반드시 승인 된 것이어야합니다 !!! 감사합니다
MeV

1
이것은 매우 도움이되었습니다. 필요한 아키텍처를 다운로드하는 방법을 추가 할 수 있다면 답이 완성 될 것입니다.
Kalpesh Popat

29

arm64대상에 추가하십시오 valid architectures. x86-64시뮬레이터 유효한 아키텍처에도 아키텍처를 추가하는 것처럼 보입니다 .


27

당신이 CocoaPods를 사용하는 경우 포드가 빌드 설정 프로젝트 때문에, 가장 가능성있는 문제는 액티브 아키텍처 전용 빌드 로 설정되어 있음 디버그를.

해결책은 간단합니다. 아니오로 변경하십시오 .

마찬가지로 응용 프로그램 프로젝트의 경우 아니요 로 변경 하십시오.


12

비슷한 문제가있었습니다. 프로젝트 빌드 설정에서 "아키텍처" 를 " $ (ARCHS_STANDARD_32_BIT) " 로 변경하여 해결했습니다 .

애플은 64 비트 아키텍처에서 앱을 빌드 할 것을 권장하므로 표준 아키텍처 (armv7, arm64)-$ (ARCHS_STANDARD) 를 선택해야합니다 . 클릭 : 애플 문서


@JayprakashDubey, 이건 어때? $(ARCHS_STANDARD_INCLUDING_64_BIT)?
Hemang

$(ARCHS_STANDARD_32_BIT)또는 사용해야합니까 $(ARCHS_STANDARD_INCLUDING_64_BIT)?
Hemang

@hagile : $ (ARCHS_STANDARD_INCLUDING_64_BIT)로 이동
Jayprakash Dubey

10

추가 : 아키텍처 : $ (ARCHS_STANDARD_INCLUDING_64_BIT)

유효한 아키텍처 : arm64 armv7 armv7s


흠, 모든 것, 시뮬레이터 컨텐츠, 시뮬레이터, 프로젝트 정리, xCode 및 Mac 재시작, xCode5.1이 있고 시뮬레이터가 제대로 작동
하도록하려고 했습니까

iPhone 4 인치 64 비트를 사용하여 앱 / 시뮬레이터를 실행하고 있습니까?
ebi

5

위의 사항에도 불구하고 여전히 문제가 발생하는 경우 실행중인 시뮬레이터도 지원되는지 확인하십시오. arm7 및 arm7s를 지정했지만 64 비트 시뮬레이터에서 앱을 실행하려고했습니다.


+1 예, 이것이 바로 하나입니다! 모든 것이 여전히 정상인지 확인하고 다시 확인하고 세 번 확인한 후에는 이것이 문제였습니다!
JOM

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를 사용하고 있습니다.

이 문제를 해결하려면 프로젝트 탐색기에서 포드 프로젝트를 선택하고 포드 대상 노드가 아니라 포드 프로젝트 (PODs 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

나는 다음과 같은 추가했다 i386x86_64Valid Architectures. Xcode 7.2를 실행 중이며 iOS 8 이상을 대상으로합니다. 나는 이미 가지고 armv7, armv7s그리고 arm64거기에와 엑스 코드 6.4에서 작업하였습니다.


2

xcode 5.1을 사용하여 iPad에서 앱을 실행할 때도 같은 문제가 발생했습니다. '유효한 아키텍처'에서 armv7을 제거하고 '빌드 활성 아키텍처 만'값을 아니오로 설정하여 해결되었습니다.이 두 필드는 모두 앱-> 타겟-> 빌드 설정-> 아키텍처에서 찾을 수 있습니다.


2

Xcode 7.2에서 시뮬레이터의 명령 줄 빌드 문제로 인해이 질문에 도달했습니다. 다른 사람이 같은 문제로 여기에 오면 내가 찾은 해결책을 공유 할 것입니다.

분명히이 엑스 코드 7.2의 버그 가 발생 xcodebuild시뮬레이터 빌드 할 때 실패가. 해결책은 "대상"옵션을 지정하는 것입니다. 예 :

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

acrhiecture에서 때때로 6.0과 7.0을 지원하기 위해 arm64를 제외합니다.

아키텍처-> 아키텍처에서 표준 아키텍처 arm64 armv7 armv7을 선택하십시오. 유효한 아키텍처에서 아래에 사용자 arm64 armv7 armv7s가 포함되어 있습니다. 이것은 나를 위해 일했습니다.


0

@Kjuly의 답변과 특정 줄을 사용 하여이 문제를 해결했습니다.

"빌드에 실패한 이유는 프로젝트가 연결된 장치의 아키텍처를 지원하지 않기 때문입니다."

Xcode가로드되면 iPad 앱이 iPad Air로 자동 설정됩니다.

여기에 이미지 설명을 입력하십시오

이로 인해 종속성 분석 오류가 발생했습니다.

장치 유형을 변경하면 즉시 문제가 해결되었습니다.

여기에 이미지 설명을 입력하십시오

왜 이것이 효과가 있는지 모르겠지만 이것은 매우 빠른 답변으로 백그라운드에서 많은 시간을 절약하고 즉시 테스트 할 앱을 얻었습니다. 나는 이것이 일이 될 수 있다고 생각하지 않았고 너무 간단한 것이 그것을 고칠 것이지만이 경우에는 그랬습니다.


0

아키텍처 이름을 직접 입력해야한다는 것을 알았습니다.

여기에 이미지 설명을 입력하십시오

왜 이것이 필요한지, 즉 왜 이러한 값이 Xcode 자체에서 상속되지 않았는지 모르겠습니다. 그러나 내가 이것을하자마자 문제는 사라졌습니다.


0

유효한 아키텍처 : 각 항목 (릴리스, 디버그)을 선택하고 백 스페이스를 작성하고 누릅니다. 작동해야합니다

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.