react-native-git-upgrade에서 Apple Mach-O Linker (ld) Error Group!이 나왔을 때 해결하는 방법
3383 단어 XcodeiOScocoapodsreact-native
발단
React Native 0.41.2 -> 0.45.0으로 ↓의 절차에 따라 react-native-git-upgrade를 사용하여 업그레이드했습니다.
Upgrading to new React Native versions
htps : // 펑세보오 k. 기주 b. 이오/레아ct-나치ゔぇ/도cs/우pg등ぢg. HTML
안드로이드는 문제없이 작동했지만, iOS가 오류 빈발. npm 패키지의 문제이거나, 여러가지 있었지만 할애.
어떻게 든 iOS 시뮬레이터에서 앱이 시작되게 되었다.

마지막으로, Archive하여 ipa 파일을 생성하려고 하면, "Apple Mach-O Linker (ld) Error Group!"라는 에러가 나와, Stack Overflow등에서 소개되고 있는 모든 방법을 시도했지만 해결하지 않고 .
오류 자세히
이미 버전을 낮춘 채로 갈까 절망했지만, 뭔가 기본적인 것을 간과하고 있는 감각이 있었으므로, Xcode의 에러의 견해에 대해 조사했다.
그래서 실은 Xcode에는 Error의 상세를 보는 방법이 있었다.

빨간색 원으로 표시된 곳을 누르면 다음 화면으로.

ArchiveIntermediates/hohoho/BuildProductsPath/Release-iphoneos/libReact.a(RCTWebSocketModule.o)
/Users/deguchi/Library/Developer/Xcode/DerivedData/hohoho-gbncvuhsltiqyzdxdmgvxwlfsfdm/Build/Intermediates/ArchiveIntermediates/hohoho/BuildProductsPath/Release-iphoneos/libRCTWebSocket.a(RCTWebSocketModule.o)
ld: 279 duplicate symbols for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
원인
cocoapod의 pod install이 통과하지 않기 때문에, 조사한 바 이하의 쓰는 방법이 필요했다.
react_path = '../node_modules/react-native'
yoga_path = File.join(react_path, 'ReactCommon/yoga')
pod 'React', :path => react_path, :subspecs => [
'Core',
'RCTText',
'RCTImage',
'RCTWebSocket', # needed for debugging
'RCTNetwork',
]
pod 'Yoga', :path => yoga_path
잘 모르는 채, 이것을 써서 pod install하고 있었지만, "Apple Mach-O Linker (ld) Error Group!"의 의미는, React 이하에, 라이브러리가 들어갔기 때문에, Xcode로 라이브러리를 읽고 있다 라고 , Archive 때에 이중에 읽혀지고 있다고 하는 것은 틀림없다고 하는 것이었다.
해결 방법
앱 -> general -> Linked Frameworks and Libraries

아카마루의 라이브러리를 삭제하고, Archive한 곳 무사히 다녔다! 길었다…
이제 Archive는 성공하지만 앱이 떨어지는 문제가 나왔다.
결국, 아래와 같이 Podfile을 변경했는데, 문제가 해소되었다. 너무 길었다…
react_path = '../node_modules/react-native'
yoga_path = File.join(react_path, 'ReactCommon/yoga')
pod 'React', :path => react_path
pod 'Yoga', :path => yoga_path
React Native는, 여러가지 간단하게 해 주는 것이지만, 기초가 되고 있는 곳을 모르면, 이런 곳에서 대가를 지불하게 된다고 하는 예였습니다.
Reference
이 문제에 관하여(react-native-git-upgrade에서 Apple Mach-O Linker (ld) Error Group!이 나왔을 때 해결하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/deguchi/items/cec85d4df42d21517de3
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
ArchiveIntermediates/hohoho/BuildProductsPath/Release-iphoneos/libReact.a(RCTWebSocketModule.o)
/Users/deguchi/Library/Developer/Xcode/DerivedData/hohoho-gbncvuhsltiqyzdxdmgvxwlfsfdm/Build/Intermediates/ArchiveIntermediates/hohoho/BuildProductsPath/Release-iphoneos/libRCTWebSocket.a(RCTWebSocketModule.o)
ld: 279 duplicate symbols for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
react_path = '../node_modules/react-native'
yoga_path = File.join(react_path, 'ReactCommon/yoga')
pod 'React', :path => react_path, :subspecs => [
'Core',
'RCTText',
'RCTImage',
'RCTWebSocket', # needed for debugging
'RCTNetwork',
]
pod 'Yoga', :path => yoga_path
react_path = '../node_modules/react-native'
yoga_path = File.join(react_path, 'ReactCommon/yoga')
pod 'React', :path => react_path
pod 'Yoga', :path => yoga_path
Reference
이 문제에 관하여(react-native-git-upgrade에서 Apple Mach-O Linker (ld) Error Group!이 나왔을 때 해결하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/deguchi/items/cec85d4df42d21517de3텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)