cocoapods를 도입 한 프로젝트에서 아키텍처 주위의 빌드 오류가 될 때

2635 단어 iOSCocoaPods아이폰

해결 방법


  • 각 프로젝트 설정의 "Architectures"가 정렬되어 있는지 확인
  • 각 프로젝트 설정의 "Build Active Architecture Only"에서 불일치가 있는지 확인

  • 구체적인 이야기



    예제는 Mixpanel을 cocoapods를 통해 통합 할 때 빌드 오류
    "_OBJC_CLASS_$_Mixpanel", referenced from:
    objc-class-ref in STAnalytics.o
    

    오류 로그 위쪽을 보면 상당히 상세한 상태가 표시되었습니다.
    Pods was rejected as an implicit dependency for 'libPods.a' because its architectures 'armv7s' didn't contain all required architectures 'armv7 armv7s arm64'
    

    cocoapods를 사용하는 경우 Xcode는 작업 공간을 사용하지만 실제 프로젝트는 'armv7 armv7s arm64'로 빌드되어야 하는데 cocoapods의 프로젝트는 'armv7s'밖에 빌드하지 않았기 때문에 발생했던 모습.

    Stackoverflow에서 비슷한 증상과 해결책을 찾아 보면 pods 프로젝트의 "Build Active Architecture Only"를 YES에서 NO로 미끄러졌다.

    CocoaPods arm64 issue
    h tp : / / s t c ゔ rf ぉ w. 코 m / 쿠에 s 치온 s / 19419781 / 여기 아포 ds - rm64 - 이스에



    그림과 같이 아무래도 디폴트 YES가 되어 있고, 이것을 NO로 미끄러뜨리는 것 같다. 사실 아니오로 빌드 오류가 사라졌습니다.

    디폴트 YES인 이유가 있다



    "Build Active Architecture Only"는 빌드하려고 하고 있는 액티브 아키텍처만 바이너리를 생성할지 여부이므로, 예를 들어 iPhone5(armv7s)실기로 개발 작업의 검증을 실시하고 있을 때는 arm64의 빌드 등 하지 않아도 되는 것은 아니다 없을까 생각한다. 따라서 개발 프로젝트 측도 Debug의 "Build Active Architecture Only"를 pods 프로젝트와 함께 YES로 하면 빌드를 할 수 있게 되었다.

    아마 전부 NO에 통일해 버려도 개발은 할 수 있지만 특정의 단말로 동작을 확인하고 싶은 경우에서도 전부 NO에 통일하는 것은 빌드 시간이 낭비할 것.

    요약


  • Debug,Release마다 각 프로젝트의 "Build Active Architecture Only"를 정렬
  • Xcode로부터 특정의 실기로 검증하고 싶은 경우는 Debug 빌드의 "Build Active Architecture Only"는 YES
  • 그렇지 않으면 (예 : AdHoc 또는 Release) 경우 NO로 설정

  • 참고



    xcode armv7s 빌드 오류
    ht tp // s 파세치메부 b b. 네 t / 2012 / 12 / 26 / x 여기에서 % 3 % 81 % Ah rmv7s % E 3 % 83 % 93 % A 3 % 83 % A B % A 3 % 83 % 89 % A 3 % 82 % A 8%에 3% 83% 아 9%에 3% 83% BC/

    Xcode 4.2에서 armv6이 필요하다고 화내는 경우의 해결 방법
    htp://d. 하테나. 네. jp/파라치ぇs/20111029

    좋은 웹페이지 즐겨찾기