[ios] “Mapping architecture arm64 to x86_64”경고는 무엇을 의미합니까?

내 프레임 워크를 Xcode 10 베타 (10L176w)로 마이그레이션 한 후 다음과 같은 경고를 받기 시작했습니다.

arm64 아키텍처를 x86_64에 매핑합니다. 이 대상의 아키텍처 및 유효한 아키텍처 빌드 설정이 iOS 시뮬레이터 플랫폼에 대해 올바르게 구성되었는지 확인하십시오.

… 그리고 :

armv7 아키텍처를 i386에 매핑합니다. 이 대상의 아키텍처 및 유효한 아키텍처 빌드 설정이 iOS 시뮬레이터 플랫폼에 대해 올바르게 구성되었는지 확인하십시오.

이러한 경고에도 불구하고 빌드 및 단위 테스트는 모두 Ok를 통과합니다. Swift 4.2를 사용하고 있습니다.

그래도 이러한 경고는 무엇입니까?



답변

빌드 설정으로 이동하여 아래와 같이 수행 하십시오.

여기에 이미지 설명 입력


답변

아키텍처 설정과 일치하는 유효한 아키텍처 설정을 변경하여 이러한 경고를 음소거 할 수있었습니다 .$(ARCHS_STANDARD)

이상하게도 armv7 arm64기본 설정 인과 비교하여 로 표시 armv7 armv7s arm64되었지만 수동으로 해당 값으로 설정하면 여전히 경고가 발생했습니다. 그 의미가 무엇인지 확실하지 않지만 아직 테스트에서 문제를 발견하지 못했습니다.


답변

대상 또는 프로젝트에 대해 VALID_ARCHS ( “유효한 아키텍처”) 빌드 설정이 재정의되었을 수 있습니다. 빌드하려는 실행 대상에 따라 자동으로 값을 가져와야하는 빌드 설정입니다. 이 재정의의 출처를 파악하면 (재정의시 빌드 설정이 굵게 표시됨)이를 선택하고 삭제 키를 눌러 기본값으로 복원합니다.


답변

경고를보고하는 TARGET의 경우 “Valid Architecture”설정을 다음으로 변경하십시오.

$(VALID_ARCHS)
x86_64

여기에 이미지 설명 입력


답변

다른 답변과 마찬가지로 $(VALID_ARCHS)(Valid Architectures)를 으로 변경하여 경고를 제거 할 수있었습니다 $(ARCHS_STANDARD). 거기에서 모든 파생 데이터를 지우고 Xcode 10.0을 다시 시작했습니다. 이로 인해 경고가 완전히 사라졌습니다. 유효한 아키텍처에서 모든 것을 삭제하면 다른 경고가 나타납니다 ( “유효한 아키텍처를 찾을 수 없음”).


답변

솔루션은 더 간단합니다. 유효한 아키텍처에서는 arm64를 x86_64로 바꾸면됩니다. .

내 프로젝트에서 비슷한 문제와 다음 세 가지 경고가있었습니다.
내 프로젝트에서 비슷한 문제와 다음 경고가 발생했습니다.

유효한 아키텍처는 원래
내 ** 유효한 아키텍처 **는 원래

교체 :

  • i386이있는 armv7,
  • i386이있는 armv7s,
  • 그리고 x86_64가있는 arm64

(경고에서 언급했듯이) 내 해결책이었습니다. 유효한 아키텍처 설정 의 결과 는 다음과 같습니다.

경고에 언급 된대로 armv7을 i386으로, armv7s를 i386으로, arm64를 x86_64로 대체하는 것이 내 해결책이었습니다.

교체 후 위의 세 가지 경고가 사라졌습니다.

아키텍처에 대한 더 자세한 정보는 https://docs.elementscompiler.com/Platforms/Cocoa/CpuArchitectures/ 에서 찾을 수 있습니다.

Xcode에서이 경고의 공식화가 약간 혼란 스럽다고 생각합니다.


답변

Flutter에서 문제가 발생하는 경우 :

  1. Podfile, Podfile.lock, Pods 폴더, Runner.xcworkspace, Flutter.framework를 삭제합니다.

  2. 을 실행 flutter clean합니다.

  3. 을 실행 flutter build ios합니다.