programing

Firebase 아키텍처 x86_64에 대한 정의되지 않은 기호

closeapi 2023. 6. 5. 23:54
반응형

Firebase 아키텍처 x86_64에 대한 정의되지 않은 기호

iOS에서 작업 중인 프로젝트의 일부로 파이어베이스를 사용하고 있는데, 테스트를 위해 아이폰 6 또는 7 시뮬레이터에서 코드를 컴파일하려고 할 때 다음 링크 오류가 발생했습니다.

Undefined symbols for architecture x86_64:
  "_OBJC_CLASS_$_GTMSessionUploadFetcher", referenced from:
      objc-class-ref in FirebaseStorage(FIRStorageUploadTask_d5061b1e2b5f1bb249816cc5fc42ff62.o)
  "_OBJC_CLASS_$_GTMLogger", referenced from:
      objc-class-ref in FirebaseMessaging(GIPReachability_ae5504e4a6a28a1d8997c6f38e8bff8b.o)
  "_kGTMSessionUploadFetcherStandardChunkSize", referenced from:
      -[FIRStorageUploadTask enqueue] in FirebaseStorage(FIRStorageUploadTask_d5061b1e2b5f1bb249816cc5fc42ff62.o)
  "_GTMFetcherStandardUserAgentString", referenced from:
      -[FIRAuthBackendRPCIssuerImplementation init] in FirebaseAuth(FIRAuthBackend_ea73237c278bd1b78e1c76db2a16775a.o)
  "_OBJC_CLASS_$_GTMSessionFetcher", referenced from:
      objc-class-ref in FirebaseStorage(FIRStorageDownloadTask_c390366e83519f6636ca985ecb70e5d0.o)
      objc-class-ref in FirebaseStorage(FIRStorage_691ea9ac7cb4d224d37df2ff8a911989.o)
  "_OBJC_CLASS_$_GTMSessionFetcherService", referenced from:
      objc-class-ref in FirebaseAuth(FIRAuthBackend_ea73237c278bd1b78e1c76db2a16775a.o)
      objc-class-ref in FirebaseStorage(FIRStorage_691ea9ac7cb4d224d37df2ff8a911989.o)
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

저는 Xcode 8.2.1, swift 3.0을 사용하고 있으며, 제 프로젝트에도 다음과 같은 Pod 파일이 있습니다.

pod 'Braintree'
pod 'Firebase/Auth'
pod 'Firebase/Database'
pod 'Firebase/Core'
pod 'Firebase/Storage'
pod 'Firebase/Messaging'
pod 'Firebase/RemoteConfig'
pod 'GeoFire', :git=>'https://github.com/firebase/geofire-objc.git'
pod 'ObjectMapper', '~> 2.2'

뭔가 오래된 것에 대비해 팟 업데이트를 했지만, 운이 없습니다.코드는 제가 아이폰 4나 5 시뮬레이터를 사용할 때 잘 컴파일되고 실행됩니다.

편집:

했습니다. 아키텍처에서는, 했지만 이제 . 잘못된 아키텍처에서 arm64, armv7, armv7을 나열했지만 Objectmapper가 실패하고 있습니다.import ObjectMapper되어 있습니다.

 Use of undeclared type 'Mappable'

어떤 도움이라도 주시면 대단히 감사하겠습니다!잘 부탁드립니다.

조지.

유사한 문제를 발견하고 포드 캐시를 삭제하여 해결했습니다.

코코아 포드 캐시 지우기

포드 통합 해제 & & & 포드 캐시 정리 -- 모두

포드 다시 설치

포드 설치

저는 Xcode에 Firebase 프레임워크를 설치했을 뿐이며, 다른 해결할 수 없는 문제로 인해 코코아 포드를 사용하지 않았습니다.빌드 후 "x86_64 아키텍처에 대해 심볼을 찾을 수 없습니다."와 같은 유사한 오류가 발생합니다(VMWare에서 Xcode로 작업하고 있기 때문일 수 있음).

그런 다음 일반 - 연결된 프레임워크라이브러리로 수동으로 이동하여 다음을 추가해야 합니다.

libsqlite3.tbd, libz.tbd, libc++.tbd

프로젝트를 수행하기 위해.

파생 데이터의 결함인 것 같습니다.Xcode를 하고 Xcode의 했습니다./Users/USER_NAME/Library/Developer/Xcode/PROJECT_NAME

재시작된 및 것이하므로 Xcode에서 .Active Architecture Only뭐 그런 거.

저는 "Cocoapods 캐시 지우기"와 "파생 데이터 제거" 솔루션을 시도했지만 효과가 없었습니다.카르타고 설정에서 찾은 단계가 효과적이었습니다(나는 여전히 코코팟을 사용하고 있습니다).

더하다$(OTHER_LDFLAGS) -ObjC플래그를 "빌드 설정"의 "기타 링커 플래그"로 지정합니다.

다음 단계를 확인할 수 있습니다. https://github.com/firebase/firebase-ios-sdk/blob/master/Carthage.md

내 정보

설치:코코팟 | SDK: 파이어베이스Analytics (6.1.2) | IDE: Xcode 11.0 | macOS: Mojave 10.14.5 베타 | 언어:Swift 4.2 | 플랫폼 대상: iOS 11.0+

Firebase 사이트에서 설명한 대로 코코아 포드를 사용하여 Firebase용 포드를 설치한 후에도 이 문제가 발생했습니다.

https://firebase.google.com/docs/ios/setup?hl=es-419#prerequisites

포드 'Firebase/Analytics' 포드 'Firebase/Auth'

포드를 설치하는 동안 다음과 같은 경고를 받았습니다.

[!] The target `myTarget [Debug]` overrides the `OTHER_LDFLAGS` build setting defined in `Pods/Pods.xcconfig'.
    - Use the `$(inherited)` flag, or
    - Remove the build settings from the target.

[!] The target `myTarget [Release]` overrides the `OTHER_LDFLAGS` build setting defined in `Pods/Pods.xcconfig'.
    - Use the `$(inherited)` flag, or
    - Remove the build settings from the target.

컴파일할 때 여러 파일에 대한 오류가 발생했습니다.

Undefined symbols for architecture x86_64:

저는 이 답변보다 먼저 다음 답변의 해결을 시도했고, 그것은 매력적으로 작용했습니다.

대상...'Pods/Pods.xccconfig'에 정의된 'OTHER_LDFLAGS' 빌드 설정을 재정의합니다.

기본적으로 솔루션은 (@Ankish Jain이 설명한 바와 같이) 다음과 같습니다.

목표 빌드 설정 -> 기타 링커 플래그 -> 더블 클릭 -> + 버튼으로 이동합니다.새 줄에 $( 상속됨)를 추가합니다.

그런 다음 빌드 설정에 자동으로 추가되는 새 플래그를 성공적으로 컴파일했습니다.

또한 이 문제도 있었습니다...
된 된가 추가됨$(inherited)이 정상적으로 합니다.

저는 이 질문에 대한 해결책을 시도했지만 아무 것도 효과가 없었습니다.SO 및 GitHub 문제에서 다른 스레드도 발견했습니다.아무것도 도움이 되지 않았습니다.저는 코코아 포드의 최신 버전인 Xcode 9.2, Swift 4를 사용하고 있습니다.이건 나한테 효과가 있었어요

먼저, 현재 Analytics를 사용하고 있기 때문에 포드 파일에는 하나의 Firebase 포드만 포함되어 있지만, 추가로 사용하는 경우에도 솔루션 접근 방식은 동일해야 합니다.
는 '파이어베이스/코어'입니다.

둘째, 문서 상태와 마찬가지로 -ObjC가 기타 링커 플래그에 추가되었는지 확인합니다.프로젝트 및 목표 수준 빌드 설정 모두에서 이 작업을 수행했습니다.그들은 달랐습니다.

세 번째로 가장 중요한 것은 프로젝트 수준 빌드 설정인 기타 링커 플래그에서 다음을 추가하는 것입니다.

-재밌는

"파이어베이스 코어"

-재밌는

"파이어베이스분석"

-재밌는

"파이어베이스사례아이디"

-재밌는

"파이어베이스 나노PB"

-재밌는

"파이어베이스 코어 진단"

-재밌는

"tbb"

코코아 포드(https://firebase.google.com/docs/ios/setup#frameworks) 없이 통합하는 단계에서도 동일한 문제가 있었습니다. 다른 답변은 도움이 되지 않았습니다.

제게 도움이 된 것은 대상의 빌드 설정에 있는 다른 링커 플래그에서 -ObjC를 제거하는 것이었습니다.

이 깃발을 추가하는 단계에 명시되어 있음에도 불구하고 왜 그것이 효과가 있었는지 여전히 확신할 수 없습니다. 단지 다른 사람을 도우려는 시도에서 저를 위해 무엇이 효과가 있었는지 공유하고 싶었습니다.

동일한 문제가 있었는데, 문제는 전체 Firebase SDK를 다운로드한 다음 Messaging 프레임워크를 프로젝트로 수동으로 가져와서 Firebase Messaging 프레임워크를 수동으로 가져온 것입니다(Cocoapods 또는 Carthago를 사용하지 않았습니다).같은 폴더에 있는 다른 프레임워크 "Protobof"를 가져오지 않았습니다.틀".Protobof를 추가하고 타겟 멤버십에 내 프로젝트 타겟이 포함되었는지 확인한 후에 효과가 있었습니다.

이전에 이 문제가 발생한 적이 있습니다. 다음 작업이 필요한 것 같습니다.

rm -rf ios/Podfile ios/Podfile.lock ios/Pods ios/Runner.xcworkspace

그리고 나서 뛰어요.flutter run

출처: https://github.com/flutter/flutter/issues/41900

rm -f ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings

아무 것도 효과가 없다면, 소방서 포드를 다운그레이드해 보십시오.'6.27.0'으로 다운그레이드를 했더니 매력적으로 작동했습니다.저는 여기서 이 해결책을 읽었습니다.

pod 'Firebase/Core', '6.27.0'

카카오팟을 사용하지 않고 파이어베이스를 수동으로 통합하고 시뮬레이터용으로 구축했을 때도 같은 오류가 발생했습니다.(기기 제작에만 문제가 없습니다.)

이것은 오래된 질문이지만 관련이 있기 때문에 최근 해결책을 보여줍니다.

먼저, 저는 시뮬레이터만을 위한 건축을 포기했습니다.

빌드하는 데 너무 오랜 시간이 걸리지만 시뮬레이터를 포함한 모든 대상을 빌드하기 위해 "Build Active Architecture Only"를 "No"로 설정했습니다.

또한 내 Mac OS 아키텍처가 "arm64"가 아니라 "x86_64"이기 때문에 빌드 설정의 "제외된 아키텍처"에 "Any iOS Simulator SDK - arm64"를 추가했습니다.

필요한 경우 "Any iOS Simulator SDK - i386"도 추가해야 합니다.Firebase에는 "i386" 아키텍처가 포함되어 있지만 일부 다른 Ad SDK에서는 "i386"을 더 이상 지원하지 않습니다.

그게 제가 받아들일 수 있는 해결책입니다.

제 경우에는 제거한 후에 모든 것이 작동했습니다.$(inherited)Other Linker Flags

기타 링커 플래그 확인: 때때로 추가 또는 제거$(inherited)문제를 해결합니다.

나는 모든 조언을 시도했지만 이것만 효과가 있었습니다!!!파이어베이스 포드를 설치한 후 오류가 발생했습니다.

Undefined symbols for architecture x86_64
error: linker command failed with exit code 1 (use -v to see invocation)

그리고 여기 제게 효과가 있는 유일한 해결책이 있습니다.

pod deintegrate && pod cache clean --all

rm -rf ~/Library/Developer/Xcode/DerivedData

그런 다음 아래 버전의 Firebase를 포드 파일에 추가합니다.

pod 'Firebase', '6.27.0'

그리고 나서.

pod install

저에게 문제는 xCode가 새로운 프레임워크를 끌 때 버그가 있다는 것이었습니다. 이것은 목표 멤버쉽을 제대로 설정하지 못할 것입니다.

모든 폴더를 확장하고 이 작업이 시작되기 전에 끌어온 .framework 파일 또는 .m 파일로 이동한 다음 각 파일을 강조 표시하고 cmd+option+1을 누르고 대상 멤버 자격 상자가 선택되어 있고 필수로 설정되어 있는지 확인합니다.

저의 경우, Firebase Auth 및 Firebase Firestore만 사용하고, Cocoapods와 함께 설치하는 경우, 제가 해야 할 일은+양쪽 모두에 대한 서명Debug그리고.Release아래 섹션Other Linker Flags빌드 설정에 있습니다.$(inherited)플래그가 자동으로 추가되었습니다.그 후에 아주 잘 지어졌어요!

스크린샷

여기 있는 다른 답변에 있는 대부분의 제안을 시도했지만 아무도 해결하지 못했습니다.궁극적으로 이 문제를 해결한 것은 다음을 포드 파일의 맨 위에 추가하는 것이었습니다.

$RNFirebaseAsStaticFramework = true

이것은 여기에 있는 지침의 일부입니다. 하지만 제가 그것을 놓쳤음에 틀림없습니다: https://rnfirebase.io/ #http-delay-delayapods-delaya-delaya-delaya-delays-delay

이 문제가 발생했을 때 저는 파이어베이스 분석 포드에 종속된 포드를 만들었습니다.

이 문제를 해결하기 위해 포드 사양 파일에 다음 행을 추가해야 했습니다.

s.static_framework = true

그러면 전체 사양 파일이 이와 유사해야 합니다.

Pod::Spec.new do |s|
package = JSON.parse(File.read(File.join(File.dirname(__FILE__), 'package.json')))

s.name = 'NameOfMyGreatPod'
s.version = package['version']
s.summary = package['description']
s.license = package['license']
s.homepage = package['homepage']
s.author = package['author']
s.source = { :git => package['repository']['url'], :tag => s.version.to_s }
s.source_files = 'ios/Plugin/**/*.{swift,h,m,c,cc,mm,cpp}'
s.ios.deployment_target  = '13.0'
s.static_framework = true
s.dependency 'Capacitor'
s.dependency 'Firebase/Analytics'

끝.

언급URL : https://stackoverflow.com/questions/42292090/firebase-undefined-symbols-for-architecture-x86-64

반응형