it-source

Xcode 5.1 - 컴파일할 아키텍처 없음(ONLY_ACTIVE_ARCH=YES, 활성 arch=x86_64, VALID_ARCS=i386)

criticalcode 2023. 5. 6. 15:08
반응형

Xcode 5.1 - 컴파일할 아키텍처 없음(ONLY_ACTIVE_ARCH=YES, 활성 arch=x86_64, VALID_ARCS=i386)

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"로 변경하고 "Valid Architectures"에 "i386"을 추가하려고 했지만 안타깝게도 둘 다 작동하지 않았습니다.제안해 주셔서 감사합니다!

당신이 해야 할 일은 단지 설정하는 것입니다.ONLY_ACTIVE_ARCHNO(적어도 나한테는 효과가 있어요).다음은 이를 위한 스크린샷입니다.


편집:

제가 알기로는 (잘못된 부분이 있으면 지적해주세요, 감사합니다), 만약 당신이 설정했다면.ONLY_ACTIVE_ARCHYES즉, Xcode는 활성 아키텍처(현재 Xcode에서 활성화된 장치를 의미함)에 대해서만 빌드됩니다. to Xcode로 되어 있는 것 .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

그럼 왜 "set the"가 효과가 있을까요?장치는 추가한 모든 아키텍처에 대해 빌드된 이진 파일을 계속 실행할 수 있지만(빌드를 통과하면) 성능이 일부 손실됩니다.이것은 빠른 해결책일 뿐 최선은 아닙니다.


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

XCode 5.1로 업그레이드한 후에도 동일한 오류 메시지가 표시되었습니다.여러분은 코코아 포드를 사용하고 있나요?그렇다면 문제가 해결될 것입니다.

  1. Xcode의 왼쪽 창에 있는 작업 공간에서 "Pods" 프로젝트를 삭제하고 Xcode를 닫습니다.
  2. 명령줄에서 "Pod 설치"를 실행하여 "Pods" 프로젝트를 다시 만듭니다.
  3. Xcode를 다시 열고 "Build Active Architecture Only"가 "Pod" 프로젝트와 자신의 프로젝트 모두의 빌드 설정에서 "No"로 설정되었는지 확인합니다.
  4. 청소 및 빌드.

더하다arm64valid architectures추가되는 것처럼 보입니다.x86-64또한 유효한 아키텍처를 시뮬레이터하는 아키텍처입니다.

코코아 포드를 사용하는 경우 가장 가능성이 높은 문제는 포드 프로젝트의 빌드 설정(Build Active Architecture Only)이 디버그에 대해서만 예로 설정되어 있기 때문입니다.

해결책은 간단합니다.아니요로 변경합니다.

마찬가지로 응용 프로그램 프로젝트의 경우 아니요로 변경합니다.

저도 비슷한 문제가 있었어요."아키텍처""$(ARCS_STANDARD_32_B)"로 변경하여 해결했습니다."프로젝트의 빌드 설정"을 참조하십시오.

이제 Apple이 64비트 아키텍처로 앱을 빌드할 것을 권장하므로 Standard 아키텍처(armv7, arm64) - $(ARCHS_STANDARD)선택해야 합니다.클릭 : Apple 문서

추가: 아키텍처: $(ARCHS_STANDARD_)포함_64_BIT)

유효한 아키텍처: arm64 armv7 armv7s

위의 내용을 따르더라도 문제가 발생할 경우를 대비하여 실행 중인 시뮬레이터가 지원되는 시뮬레이터인지 확인합니다.나는 arm7과 arm7s에 내 것을 지정했지만 64비트 시뮬레이터에서 앱을 실행하려고 했습니다.

실행될 때마다 디버그를 위해 "pod install"만 재설정하지 않도록 하려면 다음을 포드 파일에 추가할 수 있습니다.

# 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

유효하지 않은 아키텍처에 arm64를 추가하면 됩니다. 당신에게 효과가 있기를 바랍니다.

는 제 팟에 OS X 파일이 있는데도 팟 X를 목표로 이었습니다.platform :ios저는 코코팟 0.35.0.rc2를 사용하고 있습니다.

이 문제를 해결하려면 프로젝트 탐색기에서 Pods 프로젝트를 선택하고 Pods PROJECT 노드(Pods 대상이 아닌 Pods PROJECT 노드)가 iOS를 대상으로 하는지 확인합니다.즉, 아키텍처 빌드 설정은 다음과 같아야 합니다.

  • 아텍처:$(ARCHS_STANDARD)
  • SDK: SDK:iOS 8.1
  • 되는 플랫폼: 지되는플:iOS
  • 유한아텍처:$(ARCHS_STANDARD)

또한 모든 아키텍처를 구축하고 싶었기 때문에 다음을 Pod 파일에 추가했습니다.

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

과 같은 해야 했습니다.i386그리고.x86_64Valid Architectures 7하고 있고 8+를 타겟으로 하고 저는 Xcode 7.2를 가지고 . 나는 이미 가지고 있었습니다.armv7,armv7s그리고.arm64Xcode 6.4에서 작동했습니다.

저는 xcode 5.1을 사용하여 iPad에서 앱을 실행할 때 동일한 문제에 직면했습니다.이 문제는 '유효한 아키텍처'에서 armv7을 제거하고 '활성 아키텍처 구축만' 값을 '아니오'로 설정하여 해결되었습니다.이 두 필드는 모두 앱->대상->빌드 설정->아키텍처에서 찾을 수 있습니다.

Xcode 7.2의 시뮬레이터용 명령줄 빌드 문제로 인해 이 질문에 도달했습니다.다른 사람이 같은 문제로 여기에 올 경우, 제가 찾은 솔루션을 공유하겠습니다.

Xcode 7.2에 다음과 같은 버그가 있습니다.xcodebuild시뮬레이터를 위해 빌드하려고 할 때 실패합니다.를 들어, "-destination" 옵션은 "-destination"입니다.

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

갱신하다

위의 예제 명령은 iPhone 6 전용 그래픽을 포함한 이진 파일을 만듭니다.바이너리가 다른 시뮬레이터에서 실행되는 경우 아이폰6 그래픽은 플랫폼에 맞게 조정됩니다.모든 플랫폼에 대한 모든 그래픽을 포함하는 더 나은 해결 방법은 매개 변수를 지정하는 것입니다.PLATFORM_NAME=iphonesimulator예:

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

i386을 Architectures에 추가하는 동시에 모든 이전 아키텍처(즉, ARCHS_STANDARD 설정 제거)를 제거해 보십시오.이렇게 하면 활성 아키텍처가 i386으로 변경됩니다.기본적으로 armv7용으로 빌드하려고 했지만 arm64용으로 빌드하려고 계속 시도했습니다.ARCHS_STANDARD를 ARCHS_STANDARD_32_B로 변경했습니다.IT는 선택된 활성 아키텍처를 변화시켰습니다.

아키텍처에서 - 때때로 6.0 및 7.0을 지원하기 위해 arm64를 제외합니다.

아키텍처 - > 아키텍처 - 표준 아키텍처 arm64 armv7 armv7s를 선택합니다.유효한 아키텍처의 바로 아래에 사용자 암 64 암 v7 암 v7이 포함되어 있습니다.이것은 저에게 효과가 있었습니다.

저는 @K7월의 답변과 구체적인 라인을 사용하여 이 문제를 해결했습니다.

"프로젝트가 연결한 장치의 아키텍처를 지원하지 않기 때문일 수 있습니다."

Xcode가 로드된 상태에서 자동으로 iPad 앱을 iPad Air로 설정합니다.

여기에 이미지 설명 입력

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

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

여기에 이미지 설명 입력

이것이 왜 효과가 있는지는 모르겠지만, 이것은 매우 빠른 답변으로 백그라운드에서 많은 시간을 낭비하는 것을 방지하고 즉시 앱을 테스트할 수 있게 되었습니다.저는 이것이 어떤 것이 될 수 있고 그렇게 간단한 것이 그것을 고칠 것이라고 결코 생각하지 못했을 것이지만, 이 경우에는 그것이 해결되었습니다.

아키텍처 이름을 손으로 입력해야 한다는 것을 알게 되었습니다.

여기에 이미지 설명 입력

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

잘못된 아키텍처:각 항목(릴리스, 디버그)과 빌드를 선택하고 백스페이스를 누릅니다.그건 작동할 거야.

언급URL : https://stackoverflow.com/questions/22328882/xcode-5-1-no-architectures-to-compile-for-only-active-arch-yes-active-arch-x

반응형