M1 Mac 개발을 위한 React Native 프로젝트 업데이트
3025 단어 reactreactnative
먼저 작업할 기본 프로젝트를 가져오겠습니다.
npx react-native init rntest
추가 변경 없이 실행할 수 있는 몇 가지 일반적인 오류는 다음과 같습니다.
/Users/mngyuan/git/personal/rntest/ios/rntest.xcodeproj The linked library 'libPods-rntest.a' is missing one or more architectures required by this target: arm64.
Undefined symbol: protocol descriptor for Swift.ExpressibleByFloatLiteral
...
ld: in /Users/mngyuan/git/personal/rntest/ios/Pods/FirebaseAnalytics/Frameworks/FIRAnalyticsConnector.framework/FIRAnalyticsConnector(FIRAnalyticsConnector_e321ed8e3db06efc9803f6c008e67a34.o), building for iOS Simulator, but linking in object file built for iOS, file '/Users/mngyuan/git/personal/rntest/ios/Pods/FirebaseAnalytics/Frameworks/FIRAnalyticsConnector.framework/FIRAnalyticsConnector' for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
문제는 우리가 x86_64 iOS 시뮬레이터용으로 빌드하고 있지만 arm64 라이브러리 및 코드로 빌드하고 연결한다는 것입니다. 변경할 설정이 있습니다. 먼저 Xcode를 엽니다.
cd rntest
open ios/rntest.xcworkspace
# or xed -b ios
빌드에서 arm64 아키텍처를 제외할 것입니다. 대상 아래에서 프로젝트 -> 빌드 설정 -> 제외된 아키텍처를 선택하고 디버그 및 릴리스 모두에 대해 모든 IOS 시뮬레이터 SDK: arm64를 추가합니다. 포드 프로젝트에 대해 동일한 작업을 수행합니다.
어떤 이유로 프로젝트에
VALID_ARCHS
가 설정되어 있는 경우 이 단계에서 프로젝트(및 Pods 프로젝트)에서도 해당 키를 제거해야 합니다.거의 완료되었지만 포드에 설치된 Flipper 버전은 M1 mac용 수정 사항을 포함할 만큼 새롭지 않을 수 있습니다.
ios/Podfile
를 열고 다음을 적용합니다.- use_flipper!
+ use_flipper!({ 'Flipper' => '0.75.0' })
그리고 Pod를 업데이트하세요.
cd ios/
# optionally reinstall all your Pods if you're still having issues
# pod deintegrate
pod update
실패한 빌드를 수행한 경우 다음과 같이 DerivedData를 지우고 싶을 수 있습니다.
rm -rf ~/Library/Developer/Xcode/DerivedData/
이제 빌드 폴더를 지우고(Cmd+Shift+K) 빌드(Cmd+R)하여 클린 빌드를 수행합니다.
이제 모든 것이 작동합니다! 여전히 문제가 있는 경우 M1에서 아직 제대로 재생되지 않는 특정 포드와 관련이 있을 수 있습니다.
Reference
이 문제에 관하여(M1 Mac 개발을 위한 React Native 프로젝트 업데이트), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/mngyuan/updating-react-native-projects-for-m1-mac-development-1mk4텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)