Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Undefined symbols when integrating a package containing FirebaseAnalytics into a Tuist project with a target containing FirebaseAnalytics #6256

Open
TheInkedEngineer opened this issue May 6, 2024 · 3 comments
Labels
type:bug Something isn't working

Comments

@TheInkedEngineer
Copy link
Contributor

What happened?

While migrating to Tuist we faced a problem where when we add a package containing FirebaseAnalytics to our main project containing a target that depends on FirebaseAnalytics the project will not build due to Undefined Symbols

How do we reproduce it?

  1. clone https://github.com/YAtechnologies/tmp-testing-ios
  2. run tuist generate
  3. build the project and you will get the errors

Error log

Showing Recent Messages
Ld /Users/theinkedengineer/Library/Developer/Xcode/DerivedData/BugDemo-fmtgaelopldjngdbkdhcijvcdeqa/Build/Products/Debug-iphonesimulator/DependenciesWithFirebaseIncluded.framework/DependenciesWithFirebaseIncluded normal (in target 'DependenciesWithFirebaseIncluded' from project 'TestProject')
cd /Users/theinkedengineer/Code/Yassir/tmp/tmp-testing-ios/TestProject
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -Xlinker -reproducible -target arm64-apple-ios17.4-simulator -dynamiclib -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator17.4.sdk -O0 -L/Users/theinkedengineer/Library/Developer/Xcode/DerivedData/BugDemo-fmtgaelopldjngdbkdhcijvcdeqa/Build/Intermediates.noindex/EagerLinkingTBDs/Debug-iphonesimulator -L/Users/theinkedengineer/Library/Developer/Xcode/DerivedData/BugDemo-fmtgaelopldjngdbkdhcijvcdeqa/Build/Products/Debug-iphonesimulator -F/Users/theinkedengineer/Library/Developer/Xcode/DerivedData/BugDemo-fmtgaelopldjngdbkdhcijvcdeqa/Build/Intermediates.noindex/EagerLinkingTBDs/Debug-iphonesimulator -F/Users/theinkedengineer/Library/Developer/Xcode/DerivedData/BugDemo-fmtgaelopldjngdbkdhcijvcdeqa/Build/Products/Debug-iphonesimulator/PackageFrameworks -F/Users/theinkedengineer/Library/Developer/Xcode/DerivedData/BugDemo-fmtgaelopldjngdbkdhcijvcdeqa/Build/Products/Debug-iphonesimulator/PackageFrameworks -F/Users/theinkedengineer/Library/Developer/Xcode/DerivedData/BugDemo-fmtgaelopldjngdbkdhcijvcdeqa/Build/Products/Debug-iphonesimulator/PackageFrameworks -F/Users/theinkedengineer/Library/Developer/Xcode/DerivedData/BugDemo-fmtgaelopldjngdbkdhcijvcdeqa/Build/Products/Debug-iphonesimulator/PackageFrameworks -F/Users/theinkedengineer/Library/Developer/Xcode/DerivedData/BugDemo-fmtgaelopldjngdbkdhcijvcdeqa/Build/Products/Debug-iphonesimulator/PackageFrameworks -F/Users/theinkedengineer/Library/Developer/Xcode/DerivedData/BugDemo-fmtgaelopldjngdbkdhcijvcdeqa/Build/Products/Debug-iphonesimulator/PackageFrameworks -F/Users/theinkedengineer/Library/Developer/Xcode/DerivedData/BugDemo-fmtgaelopldjngdbkdhcijvcdeqa/Build/Products/Debug-iphonesimulator/PackageFrameworks -F/Users/theinkedengineer/Library/Developer/Xcode/DerivedData/BugDemo-fmtgaelopldjngdbkdhcijvcdeqa/Build/Products/Debug-iphonesimulator/PackageFrameworks -F/Users/theinkedengineer/Library/Developer/Xcode/DerivedData/BugDemo-fmtgaelopldjngdbkdhcijvcdeqa/Build/Products/Debug-iphonesimulator/PackageFrameworks -F/Users/theinkedengineer/Library/Developer/Xcode/DerivedData/BugDemo-fmtgaelopldjngdbkdhcijvcdeqa/Build/Products/Debug-iphonesimulator/PackageFrameworks -F/Users/theinkedengineer/Library/Developer/Xcode/DerivedData/BugDemo-fmtgaelopldjngdbkdhcijvcdeqa/Build/Products/Debug-iphonesimulator/PackageFrameworks -F/Users/theinkedengineer/Library/Developer/Xcode/DerivedData/BugDemo-fmtgaelopldjngdbkdhcijvcdeqa/Build/Products/Debug-iphonesimulator/PackageFrameworks -F/Users/theinkedengineer/Library/Developer/Xcode/DerivedData/BugDemo-fmtgaelopldjngdbkdhcijvcdeqa/Build/Products/Debug-iphonesimulator/PackageFrameworks -F/Users/theinkedengineer/Library/Developer/Xcode/DerivedData/BugDemo-fmtgaelopldjngdbkdhcijvcdeqa/Build/Products/Debug-iphonesimulator/PackageFrameworks -F/Users/theinkedengineer/Library/Developer/Xcode/DerivedData/BugDemo-fmtgaelopldjngdbkdhcijvcdeqa/Build/Products/Debug-iphonesimulator/PackageFrameworks -F/Users/theinkedengineer/Library/Developer/Xcode/DerivedData/BugDemo-fmtgaelopldjngdbkdhcijvcdeqa/Build/Products/Debug-iphonesimulator/PackageFrameworks -F/Users/theinkedengineer/Library/Developer/Xcode/DerivedData/BugDemo-fmtgaelopldjngdbkdhcijvcdeqa/Build/Products/Debug-iphonesimulator/PackageFrameworks -F/Users/theinkedengineer/Library/Developer/Xcode/DerivedData/BugDemo-fmtgaelopldjngdbkdhcijvcdeqa/Build/Products/Debug-iphonesimulator/PackageFrameworks -F/Users/theinkedengineer/Library/Developer/Xcode/DerivedData/BugDemo-fmtgaelopldjngdbkdhcijvcdeqa/Build/Products/Debug-iphonesimulator/PackageFrameworks -F/Users/theinkedengineer/Library/Developer/Xcode/DerivedData/BugDemo-fmtgaelopldjngdbkdhcijvcdeqa/Build/Products/Debug-iphonesimulator/PackageFrameworks -F/Users/theinkedengineer/Library/Developer/Xcode/DerivedData/BugDemo-fmtgaelopldjngdbkdhcijvcdeqa/Build/Products/Debug-iphonesimulator -filelist /Users/theinkedengineer/Library/Developer/Xcode/DerivedData/BugDemo-fmtgaelopldjngdbkdhcijvcdeqa/Build/Intermediates.noindex/TestProject.build/Debug-iphonesimulator/DependenciesWithFirebaseIncluded.build/Objects-normal/arm64/DependenciesWithFirebaseIncluded.LinkFileList -install_name @rpath/DependenciesWithFirebaseIncluded.framework/DependenciesWithFirebaseIncluded -Xlinker -rpath -Xlinker /Users/theinkedengineer/Library/Developer/Xcode/DerivedData/BugDemo-fmtgaelopldjngdbkdhcijvcdeqa/Build/Products/Debug-iphonesimulator/PackageFrameworks -Xlinker -rpath -Xlinker @executable_path/Frameworks -Xlinker -rpath -Xlinker @loader_path/Frameworks -dead_strip -Xlinker -object_path_lto -Xlinker /Users/theinkedengineer/Library/Developer/Xcode/DerivedData/BugDemo-fmtgaelopldjngdbkdhcijvcdeqa/Build/Intermediates.noindex/TestProject.build/Debug-iphonesimulator/DependenciesWithFirebaseIncluded.build/Objects-normal/arm64/DependenciesWithFirebaseIncluded_lto.o -Xlinker -export_dynamic -Xlinker -no_deduplicate -Xlinker -objc_abi_version -Xlinker 2 -fobjc-link-runtime -L/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphonesimulator -L/usr/lib/swift -Xlinker -add_ast_path -Xlinker /Users/theinkedengineer/Library/Developer/Xcode/DerivedData/BugDemo-fmtgaelopldjngdbkdhcijvcdeqa/Build/Intermediates.noindex/TestProject.build/Debug-iphonesimulator/DependenciesWithFirebaseIncluded.build/Objects-normal/arm64/DependenciesWithFirebaseIncluded.swiftmodule -Wl,-no_warn_duplicate_libraries -Wl,-no_warn_duplicate_libraries -Wl,-no_warn_duplicate_libraries -Wl,-no_warn_duplicate_libraries -Wl,-no_warn_duplicate_libraries -Wl,-no_warn_duplicate_libraries -Wl,-no_warn_duplicate_libraries -Wl,-no_warn_duplicate_libraries -Wl,-no_warn_duplicate_libraries -Wl,-no_warn_duplicate_libraries -Wl,-no_warn_duplicate_libraries -Wl,-no_warn_duplicate_libraries -Wl,-no_warn_duplicate_libraries -Wl,-no_warn_duplicate_libraries -Wl,-no_warn_duplicate_libraries -Wl,-no_warn_duplicate_libraries -Wl,-no_warn_duplicate_libraries -Wl,-no_warn_duplicate_libraries -Wl,-no_warn_duplicate_libraries -Wl,-no_warn_duplicate_libraries -framework UIKit -framework Security -lsqlite3 -lc++ -lz -framework StoreKit -lz -lsqlite3 -lc++ -lz -framework StoreKit -framework TargetContainingFirebase /Users/theinkedengineer/Library/Developer/Xcode/DerivedData/BugDemo-fmtgaelopldjngdbkdhcijvcdeqa/Build/Products/Debug-iphonesimulator/PackageFrameworks/FirebaseAnalytics_-1C7815A27AB74526_PackageProduct.framework/FirebaseAnalytics_-1C7815A27AB74526_PackageProduct -Xlinker -no_adhoc_codesign -compatibility_version 1 -current_version 1 -Xlinker -dependency_info -Xlinker /Users/theinkedengineer/Library/Developer/Xcode/DerivedData/BugDemo-fmtgaelopldjngdbkdhcijvcdeqa/Build/Intermediates.noindex/TestProject.build/Debug-iphonesimulator/DependenciesWithFirebaseIncluded.build/Objects-normal/arm64/DependenciesWithFirebaseIncluded_dependency_info.dat -o /Users/theinkedengineer/Library/Developer/Xcode/DerivedData/BugDemo-fmtgaelopldjngdbkdhcijvcdeqa/Build/Products/Debug-iphonesimulator/DependenciesWithFirebaseIncluded.framework/DependenciesWithFirebaseIncluded -Xlinker -add_ast_path -Xlinker /Users/theinkedengineer/Library/Developer/Xcode/DerivedData/BugDemo-fmtgaelopldjngdbkdhcijvcdeqa/Build/Intermediates.noindex/PackageContainingFirebase.build/Debug-iphonesimulator/PackageContainingFirebase.build/Objects-normal/arm64/PackageContainingFirebase.swiftmodule

Undefined symbols for architecture arm64:
"_GULIsLoggableLevel", referenced from:
-[APMMonitor isLoggableLevel:] in GoogleAppMeasurement[arm64]68
"_GULLogBasic", referenced from:
-[APMASLLogger logMessage:logTag:messageCode:withLogLevel:] in GoogleAppMeasurement[arm64]12
"_GULLogError", referenced from:
-[APMPersistentDictionary initWithFileName:] in GoogleAppMeasurement[arm64]257
_APMWriteDictionaryToURL in GoogleAppMeasurement[arm64]257
-[APMUserDefaults synchronize] in GoogleAppMeasurement[arm64]311
"_GULLogInfo", referenced from:
___44+[UIViewController(APMScreenClassName) load]_block_invoke in GoogleAppMeasurement[arm64]330
"_GULLogWarning", referenced from:
+[APMMeasurement sharedInstance] in GoogleAppMeasurement[arm64]62
-[APMPersistentDictionary objectForKey:] in GoogleAppMeasurement[arm64]257
-[APMPersistentDictionary setObject:forKey:] in GoogleAppMeasurement[arm64]257
-[APMUserDefaults objectForKey:] in GoogleAppMeasurement[arm64]311
-[APMUserDefaults setObject:forKey:] in GoogleAppMeasurement[arm64]311
-[APMUserDefaults synchronize] in GoogleAppMeasurement[arm64]311
___44+[UIViewController(APMScreenClassName) load]_block_invoke in GoogleAppMeasurement[arm64]330
...
"_GULSetLoggerLevel", referenced from:
-[APMMonitor setDebugModeEnabled:] in GoogleAppMeasurement[arm64]68
-[APMMonitor setDebugModeEnabled:] in GoogleAppMeasurement[arm64]68
-[APMMonitor setVerboseLoggingEnabled:] in GoogleAppMeasurement[arm64]68
"OBJC_CLASS$_GULAppDelegateSwizzler", referenced from:
in GoogleAppMeasurement[arm64]7
"OBJC_CLASS$_GULAppEnvironmentUtil", referenced from:
in GoogleAppMeasurement[arm64]5
"OBJC_CLASS$_GULMutableDictionary", referenced from:
in GoogleAppMeasurement[arm64]35
"OBJC_CLASS$_GULNetwork", referenced from:
in GoogleAppMeasurement[arm64]7
"OBJC_CLASS$_GULSwizzler", referenced from:
in GoogleAppMeasurement[arm64]330
"_kGULNetworkHTTPStatusCodeCannotAcceptTraffic", referenced from:
-[APMETaskManager handleFetchingExperimentsResponse:data:error:] in GoogleAppMeasurement[arm64]42
-[APMMeasurement networkUploadCompletionHandlerWithResponse:error:] in GoogleAppMeasurement[arm64]62
-[APMMeasurement networkRemoteConfigFetchCompletionHandler:data:error:] in GoogleAppMeasurement[arm64]62
"_kGULNetworkHTTPStatusCodeNotFound", referenced from:
-[APMMeasurement networkRemoteConfigFetchCompletionHandler:data:error:] in GoogleAppMeasurement[arm64]62
"_kGULNetworkHTTPStatusCodeNotModified", referenced from:
___37-[APMMeasurement retrievePSMResponse]_block_invoke in GoogleAppMeasurement[arm64]62
-[APMMeasurement networkRemoteConfigFetchCompletionHandler:data:error:] in GoogleAppMeasurement[arm64]62
-[APMMeasurement(SKAN) handleSKANFetchResponse:data:error:] in GoogleAppMeasurement[arm64]66
___46-[APMMeasurement(URL) requestDeferredDeepLink]_block_invoke in GoogleAppMeasurement[arm64]67
"_kGULNetworkHTTPStatusCodeUnavailable", referenced from:
-[APMETaskManager handleFetchingExperimentsResponse:data:error:] in GoogleAppMeasurement[arm64]42
-[APMMeasurement networkUploadCompletionHandlerWithResponse:error:] in GoogleAppMeasurement[arm64]62
-[APMMeasurement networkRemoteConfigFetchCompletionHandler:data:error:] in GoogleAppMeasurement[arm64]62
"_kGULNetworkHTTPStatusNoContent", referenced from:
-[APMETaskManager handleFetchingExperimentsResponse:data:error:] in GoogleAppMeasurement[arm64]42
-[APMMeasurement networkUploadCompletionHandlerWithResponse:error:] in GoogleAppMeasurement[arm64]62
___37-[APMMeasurement retrievePSMResponse]_block_invoke in GoogleAppMeasurement[arm64]62
-[APMMeasurement networkRemoteConfigFetchCompletionHandler:data:error:] in GoogleAppMeasurement[arm64]62
___46-[APMMeasurement(URL) requestDeferredDeepLink]_block_invoke in GoogleAppMeasurement[arm64]67
"_kGULNetworkHTTPStatusOK", referenced from:
-[APMETaskManager handleFetchingExperimentsResponse:data:error:] in GoogleAppMeasurement[arm64]42
-[APMMeasurement networkUploadCompletionHandlerWithResponse:error:] in GoogleAppMeasurement[arm64]62
___37-[APMMeasurement retrievePSMResponse]_block_invoke in GoogleAppMeasurement[arm64]62
-[APMMeasurement networkRemoteConfigFetchCompletionHandler:data:error:] in GoogleAppMeasurement[arm64]62
-[APMMeasurement(SKAN) handleSKANFetchResponse:data:error:] in GoogleAppMeasurement[arm64]66
___46-[APMMeasurement(URL) requestDeferredDeepLink]_block_invoke in GoogleAppMeasurement[arm64]67
"_pb_decode", referenced from:
_apmpb_decode_app_property in GoogleAppMeasurement[arm64]78
_apmpb_decode_audience in GoogleAppMeasurement[arm64]81
_apmpb_decode_audience in GoogleAppMeasurement[arm64]81
_apmpb_decode_audience_leaf_filter_result in GoogleAppMeasurement[arm64]84
_apmpb_decode_audience_leaf_filter_result in GoogleAppMeasurement[arm64]84
_apmpb_decode_client_property in GoogleAppMeasurement[arm64]87
_apmpb_decode_client_property in GoogleAppMeasurement[arm64]87
...
"_pb_decode_varint", referenced from:
_nano_decode_repeated_uint64 in GoogleAppMeasurement[arm64]315
"_pb_encode", referenced from:
_nano_two_pass_encoding in GoogleAppMeasurement[arm64]316
_nano_two_pass_encoding in GoogleAppMeasurement[arm64]316
"_pb_encode_string", referenced from:
_nano_encode_string in GoogleAppMeasurement[arm64]316
"_pb_encode_submessage", referenced from:
_apmpb_encode_repeated_app_property in GoogleAppMeasurement[arm64]79
_apmpb_encode_repeated_audience in GoogleAppMeasurement[arm64]82
_apmpb_encode_repeated_audience_leaf_filter_result in GoogleAppMeasurement[arm64]85
_apmpb_encode_repeated_client_property in GoogleAppMeasurement[arm64]88
_apmpb_encode_repeated_consent_config in GoogleAppMeasurement[arm64]91
_apmpb_encode_repeated_consent_default_entry in GoogleAppMeasurement[arm64]94
_apmpb_encode_repeated_consent_delegation_entry in GoogleAppMeasurement[arm64]97
...
"_pb_encode_tag_for_field", referenced from:
_apmpb_encode_repeated_app_property in GoogleAppMeasurement[arm64]79
_apmpb_encode_repeated_audience in GoogleAppMeasurement[arm64]82
_apmpb_encode_repeated_audience_leaf_filter_result in GoogleAppMeasurement[arm64]85
_apmpb_encode_repeated_client_property in GoogleAppMeasurement[arm64]88
_apmpb_encode_repeated_consent_config in GoogleAppMeasurement[arm64]91
_apmpb_encode_repeated_consent_default_entry in GoogleAppMeasurement[arm64]94
_apmpb_encode_repeated_consent_delegation_entry in GoogleAppMeasurement[arm64]97
...
"_pb_encode_varint", referenced from:
_nano_encode_repeated_uint64 in GoogleAppMeasurement[arm64]316
"_pb_istream_from_buffer", referenced from:
_apmpb_decode_app_property in GoogleAppMeasurement[arm64]78
_apmpb_decode_audience in GoogleAppMeasurement[arm64]81
_apmpb_decode_audience in GoogleAppMeasurement[arm64]81
_apmpb_decode_audience_leaf_filter_result in GoogleAppMeasurement[arm64]84
_apmpb_decode_audience_leaf_filter_result in GoogleAppMeasurement[arm64]84
_apmpb_decode_client_property in GoogleAppMeasurement[arm64]87
_apmpb_decode_client_property in GoogleAppMeasurement[arm64]87
...
"_pb_ostream_from_buffer", referenced from:
_nano_two_pass_encoding in GoogleAppMeasurement[arm64]316
"_pb_read", referenced from:
_apmpb_decode_repeated_app_property in GoogleAppMeasurement[arm64]78
_apmpb_decode_repeated_app_property in GoogleAppMeasurement[arm64]78
_apmpb_decode_repeated_audience in GoogleAppMeasurement[arm64]81
_apmpb_decode_repeated_audience in GoogleAppMeasurement[arm64]81
_apmpb_decode_repeated_audience_leaf_filter_result in GoogleAppMeasurement[arm64]84
_apmpb_decode_repeated_audience_leaf_filter_result in GoogleAppMeasurement[arm64]84
_apmpb_decode_repeated_client_property in GoogleAppMeasurement[arm64]87
_apmpb_decode_repeated_client_property in GoogleAppMeasurement[arm64]87
...
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Undefined symbol: _GULIsLoggableLevel

Undefined symbol: _GULLogBasic

Undefined symbol: _GULLogError

Undefined symbol: _GULLogInfo

Undefined symbol: _GULLogWarning

Undefined symbol: _GULSetLoggerLevel

Undefined symbol: OBJC_CLASS$_GULAppDelegateSwizzler

Undefined symbol: OBJC_CLASS$_GULAppEnvironmentUtil

Undefined symbol: OBJC_CLASS$_GULMutableDictionary

Undefined symbol: OBJC_CLASS$_GULNetwork

Undefined symbol: OBJC_CLASS$_GULSwizzler

Undefined symbol: _kGULNetworkHTTPStatusCodeCannotAcceptTraffic

Undefined symbol: _kGULNetworkHTTPStatusCodeNotFound

Undefined symbol: _kGULNetworkHTTPStatusCodeNotModified

Undefined symbol: _kGULNetworkHTTPStatusCodeUnavailable

Undefined symbol: _kGULNetworkHTTPStatusNoContent

Undefined symbol: _kGULNetworkHTTPStatusOK

Undefined symbol: _pb_decode

Undefined symbol: _pb_decode_varint

Undefined symbol: _pb_encode

Undefined symbol: _pb_encode_string

Undefined symbol: _pb_encode_submessage

Undefined symbol: _pb_encode_tag_for_field

Undefined symbol: _pb_encode_varint

Undefined symbol: _pb_istream_from_buffer

Undefined symbol: _pb_ostream_from_buffer

Undefined symbol: _pb_read

Linker command failed with exit code 1 (use -v to see invocation)

macOS version

14.4.1

Tuist version

4.11.0

Xcode version

15.3

@TheInkedEngineer TheInkedEngineer added the type:bug Something isn't working label May 6, 2024
@danibachar
Copy link
Collaborator

You are consuming the internal swift package as a tuist project. This is not the way to consume swift packages with Tuist.
I suggest on following this guide on how to consume external dependencies.

You can also look in the fixtures folder for examples on how to setup a project that is structured like yours.

@TheInkedEngineer
Copy link
Contributor Author

@danibachar that was just an example, in the actual project, the package in an external dependency. that being said, I will check those links out and get back to you later today, thanks.

@MouadBenjrinija
Copy link

You are consuming the internal swift package as a tuist project. This is not the way to consume swift packages with Tuist. I suggest on following this guide on how to consume external dependencies.

You can also look in the fixtures folder for examples on how to setup a project that is structured like yours.

@danibachar
If the suggested approach is to use the Tuist's XcodeProj-based integration then it doesn't work for all external packages.. as some of them is not compatible with this method, (e.g. XMPPFramework , previously reported by someone here)
So only Xcode's default integration works for these packages.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
type:bug Something isn't working
Projects
None yet
Development

No branches or pull requests

3 participants