hansemannn / titanium-firebase-analytics

Use the Firebase Analytics SDK in Axway Titanium šŸš€
Other
35 stars 18 forks source link

iOS Build Errors - Could not find or use auto-linked framework 'GoogleAppMeasurement' #74

Closed efeder-amd closed 1 year ago

efeder-amd commented 1 year ago

My Environment: Operating System = macOS 12.6.2 Architecture = 64bit CPUs = 16

Node.js Version = 14.17.3 npm Version = 6.14.13 Titanium CLI = 6.1.1 Titanium SDK = 12.0.0.GA (also happened on 10.1.1.GA) firebase.analytics = 7.0.0 Xcode = 14.2

Platform iOS simulator = iPhone 14 Pro (iOS 16.2) device = iPhone 11 Pro (iOS 16.2)

When building for simulator or device, I am receiving the following error log:

[TRACE]     cd /Users/emilyfeder/Projects/TitaniumWorkspace/Phoenix/build/iphone
[TRACE]     /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -target arm64-apple-ios13.0 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.2.sdk -L/Users/emilyfeder/Projects/TitaniumWorkspace/Phoenix/build/iphone/build/Intermediates/EagerLinkingTBDs -L/Users/emilyfeder/Projects/TitaniumWorkspace/Phoenix/build/iphone/build/Products/Debug-iphoneos -L/Users/emilyfeder/Projects/TitaniumWorkspace/Phoenix/build/iphone/lib -L/Users/emilyfeder/Projects/TitaniumWorkspace/Phoenix/modules/iphone/bencoding.securely/2.2.1 -L/Users/emilyfeder/Projects/TitaniumWorkspace/Phoenix/modules/iphone/com.movatohealth.expansion/0.3 -L/Users/emilyfeder/Projects/TitaniumWorkspace/Phoenix/modules/iphone/com.movatohealth.touchid/1.0.0 -F/Users/emilyfeder/Projects/TitaniumWorkspace/Phoenix/build/iphone/build/Intermediates/EagerLinkingTBDs -F/Users/emilyfeder/Projects/TitaniumWorkspace/Phoenix/build/iphone/build/Products/Debug-iphoneos -FFrameworks -filelist /Users/emilyfeder/Projects/TitaniumWorkspace/Phoenix/build/iphone/build/Intermediates/Phoenix.build/Debug-iphoneos/Phoenix.build/Objects-normal/arm64/Phoenix.LinkFileList -Xlinker -rpath -Xlinker /usr/lib/swift -Xlinker -rpath -Xlinker @executable_path/Frameworks -dead_strip -Xlinker -object_path_lto -Xlinker /Users/emilyfeder/Projects/TitaniumWorkspace/Phoenix/build/iphone/build/Intermediates/Phoenix.build/Debug-iphoneos/Phoenix.build/Objects-normal/arm64/Phoenix_lto.o -Xlinker -export_dynamic -Xlinker -no_deduplicate -Xlinker -final_output -Xlinker /Applications/Phoenix.app/Phoenix -stdlib\=libc++ -fobjc-link-runtime -L/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos -L/usr/lib/swift -Xlinker -add_ast_path -Xlinker /Users/emilyfeder/Projects/TitaniumWorkspace/Phoenix/build/iphone/build/Intermediates/Phoenix.build/Debug-iphoneos/Phoenix.build/Objects-normal/arm64/Phoenix.swiftmodule -ObjC -weak_framework JavaScriptCore -framework Security -framework Security -framework LocalAuthentication -framework LocalAuthentication -framework AdSupport -framework Security -framework StoreKit -framework SystemConfiguration -framework AdSupport -framework Security -framework StoreKit -framework SystemConfiguration -lxml2 -weak_framework SwiftUI -framework CoreServices -framework Contacts -framework ContactsUI -framework CoreMedia -weak_framework CoreMotion -weak_framework CoreText -framework EventKit -framework EventKitUI -weak_framework Security -framework Foundation -weak_framework UIKit -framework CoreGraphics -framework CFNetwork -framework CoreLocation -weak_framework MapKit -framework MessageUI -framework QuartzCore -framework SystemConfiguration -framework AudioToolbox -weak_framework MediaPlayer -framework AVFoundation -lbencoding.securely -lcom.movatohealth.expansion -lcom.movatohealth.touchid -framework TitaniumKit -ltiverify -lfirebase.analytics -framework FirebaseAnalytics -Xlinker -no_adhoc_codesign -Xlinker -dependency_info -Xlinker /Users/emilyfeder/Projects/TitaniumWorkspace/Phoenix/build/iphone/build/Intermediates/Phoenix.build/Debug-iphoneos/Phoenix.build/Objects-normal/arm64/Phoenix_dependency_info.dat -o /Users/emilyfeder/Projects/TitaniumWorkspace/Phoenix/build/iphone/build/Products/Debug-iphoneos/Phoenix.app/Phoenix
[TRACE] ld: warning: directory not found for option '-L/Users/emilyfeder/Projects/TitaniumWorkspace/Phoenix/build/iphone/lib'
[TRACE] ld: warning: Could not find or use auto-linked framework 'GoogleAppMeasurement'
[TRACE] Undefined symbols for architecture arm64:
[TRACE]   "_APMAnalyticsConfiguration", referenced from:
[TRACE]       +[FIRAnalytics startWithConfiguration:options:] in FirebaseAnalytics(FIRAnalytics.o)
[TRACE]   "_APMAppMeasurementOriginFirebase", referenced from:
[TRACE]       +[FIRAnalytics startWithConfiguration:options:] in FirebaseAnalytics(FIRAnalytics.o)
[TRACE]   "_APMConsentSettings3P", referenced from:
[TRACE]       +[FIRAnalytics setConsent:] in FirebaseAnalytics(FIRAnalytics.o)
[TRACE]   "_APMFormattedEventName", referenced from:
[TRACE]       +[FIRAnalytics logEventWithOrigin:name:parameters:] in FirebaseAnalytics(FIRAnalytics.o)
[TRACE]   "_APMFormattedUserPropertyName", referenced from:
[TRACE]       +[FIRAnalytics setUserPropertyString:forName:] in FirebaseAnalytics(FIRAnalytics.o)
[TRACE]   "_APMIsAnalyticsCollectionDeactivated", referenced from:
[TRACE]       +[FIRAnalytics startWithConfiguration:options:] in FirebaseAnalytics(FIRAnalytics.o)
[TRACE]   "_APMIsAnalyticsCollectionEnabled", referenced from:
[TRACE]       +[FIRAnalytics startWithConfiguration:options:] in FirebaseAnalytics(FIRAnalytics.o)
[TRACE]   "_APMMonitorLogTagOptionKey", referenced from:
[TRACE]       +[FIRAnalytics startWithConfiguration:options:] in FirebaseAnalytics(FIRAnalytics.o)
[TRACE]   "_APMUserDataFieldEmailAddress", referenced from:
[TRACE]       +[FIRAnalytics initiateOnDeviceConversionMeasurementWithEmailAddress:] in FirebaseAnalytics(FIRAnalytics.o)
[TRACE]   "_FIRFirebaseVersion", referenced from:
[TRACE]       +[FIRAnalytics topLevelVersion] in FirebaseAnalytics(FIRAnalytics.o)
[TRACE]   "_FIRInstallationIDDidChangeNotification", referenced from:
[TRACE]       +[FIRAnalytics observeFirebaseInstallationIDChanges] in FirebaseAnalytics(FIRAnalytics.o)
[TRACE]   "_OBJC_CLASS_$_APMAdExposureReporter", referenced from:
[TRACE]       _OBJC_CLASS_$_FIRAAdExposureReporter in FirebaseAnalytics(FIRAAdExposureReporter.o)
[TRACE]   "_OBJC_CLASS_$_APMAnalytics", referenced from:
[TRACE]       objc-class-ref in FirebaseAnalytics(FIRAnalytics.o)
[TRACE]   "_OBJC_CLASS_$_APMConditionalUserProperty", referenced from:
[TRACE]       _OBJC_CLASS_$_FIRAConditionalUserProperty in FirebaseAnalytics(FIRAConditionalUserProperty.o)
[TRACE]   "_OBJC_CLASS_$_APMConditionalUserPropertyController", referenced from:
[TRACE]       _OBJC_CLASS_$_FIRAConditionalUserPropertyController in FirebaseAnalytics(FIRAConditionalUserPropertyController.o)
[TRACE]   "_OBJC_CLASS_$_APMEvent", referenced from:
[TRACE]       _OBJC_CLASS_$_FIRAEvent in FirebaseAnalytics(FIRAEvent.o)
[TRACE]   "_OBJC_CLASS_$_APMIdentifiers", referenced from:
[TRACE]       _OBJC_CLASS_$_FIRAIdentifiers in FirebaseAnalytics(FIRAIdentifiers.o)
[TRACE]   "_OBJC_CLASS_$_APMIdentity", referenced from:
[TRACE]       objc-class-ref in FirebaseAnalytics(FIRAnalytics.o)
[TRACE]   "_OBJC_CLASS_$_APMMeasurement", referenced from:
[TRACE]       objc-class-ref in FirebaseAnalytics(FIRAnalytics.o)
[TRACE]       objc-class-ref in FirebaseAnalytics(FIRAMeasurement.o)
[TRACE]       _OBJC_CLASS_$_FIRAMeasurement in FirebaseAnalytics(FIRAMeasurement.o)
[TRACE]   "_OBJC_CLASS_$_APMScreenViewReporter", referenced from:
[TRACE]       objc-class-ref in FirebaseAnalytics(FIRAScreenViewReporter.o)
[TRACE]       _OBJC_CLASS_$_FIRAScreenViewReporter in FirebaseAnalytics(FIRAScreenViewReporter.o)
[TRACE]   "_OBJC_CLASS_$_APMUserAttribute", referenced from:
[TRACE]       _OBJC_CLASS_$_FIRAUserAttribute in FirebaseAnalytics(FIRAUserAttribute.o)
[TRACE]   "_OBJC_CLASS_$_APMValue", referenced from:
[TRACE]       _OBJC_CLASS_$_FIRAValue in FirebaseAnalytics(FIRAValue.o)
[TRACE]   "_OBJC_CLASS_$_FIRApp", referenced from:
[TRACE]       objc-class-ref in FirebaseAnalytics(FIRAnalytics.o)
[TRACE]       objc-class-ref in FirebaseAnalytics(FIRAnalyticsConnector.o)
[TRACE]   "_OBJC_CLASS_$_FIRComponent", referenced from:
[TRACE]       objc-class-ref in FirebaseAnalytics(FIRAnalyticsConnector.o)
[TRACE]   "_OBJC_CLASS_$_FIRInstallations", referenced from:
[TRACE]       objc-class-ref in libfirebase.analytics.a(FirebaseAnalyticsModule.o)
[TRACE]       objc-class-ref in FirebaseAnalytics(FIRAnalytics.o)
[TRACE]   "_OBJC_METACLASS_$_APMAdExposureReporter", referenced from:
[TRACE]       _OBJC_METACLASS_$_FIRAAdExposureReporter in FirebaseAnalytics(FIRAAdExposureReporter.o)
[TRACE]   "_OBJC_METACLASS_$_APMConditionalUserProperty", referenced from:
[TRACE]       _OBJC_METACLASS_$_FIRAConditionalUserProperty in FirebaseAnalytics(FIRAConditionalUserProperty.o)
[TRACE]   "_OBJC_METACLASS_$_APMConditionalUserPropertyController", referenced from:
[TRACE]       _OBJC_METACLASS_$_FIRAConditionalUserPropertyController in FirebaseAnalytics(FIRAConditionalUserPropertyController.o)
[TRACE]   "_OBJC_METACLASS_$_APMEvent", referenced from:
[TRACE]       _OBJC_METACLASS_$_FIRAEvent in FirebaseAnalytics(FIRAEvent.o)
[TRACE]   "_OBJC_METACLASS_$_APMIdentifiers", referenced from:
[TRACE]       _OBJC_METACLASS_$_FIRAIdentifiers in FirebaseAnalytics(FIRAIdentifiers.o)
[TRACE]   "_OBJC_METACLASS_$_APMMeasurement", referenced from:
[TRACE]       _OBJC_METACLASS_$_FIRAMeasurement in FirebaseAnalytics(FIRAMeasurement.o)
[TRACE]   "_OBJC_METACLASS_$_APMScreenViewReporter", referenced from:
[TRACE]       _OBJC_METACLASS_$_FIRAScreenViewReporter in FirebaseAnalytics(FIRAScreenViewReporter.o)
[TRACE]   "_OBJC_METACLASS_$_APMUserAttribute", referenced from:
[TRACE]       _OBJC_METACLASS_$_FIRAUserAttribute in FirebaseAnalytics(FIRAUserAttribute.o)
[TRACE]   "_OBJC_METACLASS_$_APMValue", referenced from:
[TRACE]       _OBJC_METACLASS_$_FIRAValue in FirebaseAnalytics(FIRAValue.o)
[TRACE]   "_kFIRLoggerAnalytics", referenced from:
[TRACE]       +[FIRAnalytics startWithConfiguration:options:] in FirebaseAnalytics(FIRAnalytics.o)
[TRACE] ld: symbol(s) not found for architecture arm64
[TRACE] clang: error: linker command failed with exit code 1 (use -v to see invocation)
[ERROR] warning: conditional compilation flags do not have values in Swift; they are either present or absent (rather than 'DEPLOYTYPE=test')
[ERROR] warning: conditional compilation flags do not have values in Swift; they are either present or absent (rather than 'LAUNCHSCREEN_STORYBOARD=1')
[ERROR] warning: conditional compilation flags do not have values in Swift; they are either present or absent (rather than 'DEFAULT_BGCOLOR_RED=0.19607843137254902')
[ERROR] warning: conditional compilation flags do not have values in Swift; they are either present or absent (rather than 'DEFAULT_BGCOLOR_GREEN=0.2')
[ERROR] warning: conditional compilation flags do not have values in Swift; they are either present or absent (rather than 'DEFAULT_BGCOLOR_BLUE=0.2627450980392157')
[ERROR] warning: conditional compilation flags do not have values in Swift; they are either present or absent (rather than 'TI_LOG_SERVER_PORT=42320')
[ERROR] warning: conditional compilation flags do not have values in Swift; they are either present or absent (rather than 'TI_VERSION=12.0.0')
[ERROR] ** BUILD FAILED **
[ERROR] The following build commands failed:
[ERROR]         Ld /Users/emilyfeder/Projects/TitaniumWorkspace/Phoenix/build/iphone/build/Products/Debug-iphoneos/Phoenix.app/Phoenix normal (in target 'Phoenix' from project 'Phoenix')
[ERROR] (1 failure)
efeder-amd commented 1 year ago

I finally got this to work! I did all the following steps. I'm not 100% sure all are necessary.

I initially got rid of the Could not find or use auto-linked framework 'GoogleAppMeasurement' error by downloading the module source code and moved GoogleAppMeasurement.xcframework from the ios/shared directory to the ios/platform directory (and had to re-add GoogleAppMeasurement to the Framworks for the product in Xcode) and that particular error went away, However, I still received errors of the type: Undefined symbols for architecture x86_64.

I then followed suggestions in this stackoverflow post, including

I then ran carthage update, copied all the .xcframework folders to ios/platform and re-added the frameworks to the Xcode project. This resulted in a Cartfile.resolved with: binary "https://dl.google.com/dl/firebase/ios/carthage/FirebaseAnalyticsBinary.json" "10.4.0"

I committed the result to my fork. Let me know if you want me to clean this up and open a PR.

efeder-amd commented 1 year ago

Wow, silly me. I realized that the real issue is that I did not have the firebase.core module installed for my app. Once I listed both firebase.core (v8.0.0) and firebase.analytics (v7.0.0) in my tiapp.xml, my application built and ran fine. firebase.core has the other frameworks needed for firebase analytics to work. You do say that firebase.core is required on ios, but somehow I missed that.