EddyVerbruggen / cordova-plugin-googleplus

:heavy_plus_sign: Cordova plugin to login with Google Sign-In on iOS and Android
567 stars 628 forks source link

Build error on IOS - Conflict with cordova-firebase-plugin #553

Open misterjojo opened 5 years ago

misterjojo commented 5 years ago

After upgrading cordova-firebase-plugin to the latest version (2.0.5), my app don't build anymore on IOS : `Undefined symbols for architecture arm64: "_GULLoggerInitializeASL", referenced from: _FIRLoggerInitializeASL_block_invoke in FirebaseCore(FIRLogger.o) "_GULLoggerEnableSTDERR", referenced from: ___FIRLoggerInitializeASL_block_invoke in FirebaseCore(FIRLogger.o) "OBJC_CLASS$_GULSwizzler", referenced from: objc-class-ref in GoogleAppMeasurement(UIViewController+APMScreenClassName_bb34840e14481f32c5ecb9ffcac15bff.o) objc-class-ref in FirebasePerformance(FPRSelectorInstrumentor_43661c322536eae9342dbd4edb53bf7b.o) objc-class-ref in FirebasePerformance(FPRProxyObjectHelper_cae8c79ce5179c4587d285c87421f26f.o) "GULLogInfo", referenced from: 44+[UIViewController(APMScreenClassName) load]_block_invoke in GoogleAppMeasurement(UIViewController+APMScreenClassName_bb34840e14481f32c5ecb9ffcac15bff.o) "_GULLoggerForceDebug", referenced from: _FIRLoggerInitializeASL_block_invoke in FirebaseCore(FIRLogger.o) "_kGULNetworkHTTPStatusCodeNotModified", referenced from: -[APMMeasurement networkRemoteConfigFetchCompletionHandler:data:error:] in GoogleAppMeasurement(APMMeasurement_a76ff61c6b4ca85ef91462a646f323a0.o) "_kGULNetworkHTTPStatusCodeNotFound", referenced from: -[APMMeasurement networkRemoteConfigFetchCompletionHandler:data:error:] in GoogleAppMeasurement(APMMeasurement_a76ff61c6b4ca85ef91462a646f323a0.o) "_kGULNetworkHTTPStatusCodeCannotAcceptTraffic", referenced from: -[APMMeasurement networkUploadCompletionHandlerWithResponse:error:] in GoogleAppMeasurement(APMMeasurement_a76ff61c6b4ca85ef91462a646f323a0.o) -[APMMeasurement networkRemoteConfigFetchCompletionHandler:data:error:] in GoogleAppMeasurement(APMMeasurement_a76ff61c6b4ca85ef91462a646f323a0.o) "_GULLogWarning", referenced from: -[APMUserDefaults objectForKey:] in GoogleAppMeasurement(APMUserDefaults_cec267d1ff21df5a0ffda1a71af1431f.o) -[APMUserDefaults setObject:forKey:] in GoogleAppMeasurement(APMUserDefaults_cec267d1ff21df5a0ffda1a71af1431f.o) -[APMUserDefaults synchronize] in GoogleAppMeasurement(APMUserDefaults_cec267d1ff21df5a0ffda1a71af1431f.o) +[APMMeasurement sharedInstance] in GoogleAppMeasurement(APMMeasurementa76ff61c6b4ca85ef91462a646f323a0.o) 44+[UIViewController(APMScreenClassName) load]_block_invoke in GoogleAppMeasurement(UIViewController+APMScreenClassName_bb34840e14481f32c5ecb9ffcac15bff.o) "_kGULNetworkHTTPStatusNoContent", referenced from: -[APMMeasurement networkUploadCompletionHandlerWithResponse:error:] in GoogleAppMeasurement(APMMeasurement_a76ff61c6b4ca85ef91462a646f323a0.o) -[APMMeasurement networkRemoteConfigFetchCompletionHandler:data:error:] in GoogleAppMeasurement(APMMeasurement_a76ff61c6b4ca85ef91462a646f323a0.o) "_GULLoggerRegisterVersion", referenced from: ___FIRLoggerInitializeASL_block_invoke in FirebaseCore(FIRLogger.o) "_kGULNetworkHTTPStatusCodeUnavailable", referenced from: -[APMMeasurement networkUploadCompletionHandlerWithResponse:error:] in GoogleAppMeasurement(APMMeasurement_a76ff61c6b4ca85ef91462a646f323a0.o) -[APMMeasurement networkRemoteConfigFetchCompletionHandler:data:error:] in GoogleAppMeasurement(APMMeasurement_a76ff61c6b4ca85ef91462a646f323a0.o) "_kGULNetworkHTTPStatusOK", referenced from: -[APMMeasurement networkUploadCompletionHandlerWithResponse:error:] in GoogleAppMeasurement(APMMeasurement_a76ff61c6b4ca85ef91462a646f323a0.o) -[APMMeasurement networkRemoteConfigFetchCompletionHandler:data:error:] in GoogleAppMeasurement(APMMeasurement_a76ff61c6b4ca85ef91462a646f323a0.o) "_GULLogBasic", referenced from: -[APMASLLogger logMessage:logTag:messageCode:withLogLevel:] in GoogleAppMeasurement(APMASLLogger_b06c35e24aea4d3ad666632e11e79ef6.o) _FIRLogBasic in FirebaseCore(FIRLogger.o) "OBJC_CLASS$_GULObjectSwizzler", referenced from: objc-class-ref in FirebasePerformance(FPRObjectInstrumentor_e851288d6b6849d0b0294fa10cb31cfe.o) objc-class-ref in FirebasePerformance(FPRNetworkTrace_f6900b74cf65074de701b7de7866f471.o) objc-class-ref in FirebasePerformance(FPRNSURLConnectionInstrument_e1f5d400ad96be0ff646f570493cefd7.o) "OBJC_CLASS$_GULAppEnvironmentUtil", referenced from: objc-class-ref in FirebaseInstanceID(FIRMessagingLog_831659faf16f8906538fbfc3d5822ecc.o) objc-class-ref in FirebaseCoreDiagnostics(FIRDiagnostics_afb9975b7573ce8caa0e4380e6bfbe31.o) objc-class-ref in FirebaseAuth(FIRAuth.o) objc-class-ref in FirebaseAuth(FIRAuthAPNSTokenManager.o) objc-class-ref in FirebaseAuth(FIRAuthAppDelegateProxy.o) objc-class-ref in FirebaseAuth(FIRAuthDefaultUIDelegate.o) objc-class-ref in FirebaseRemoteConfig(RCNConfigSettings_32ebbc1ad7e48275f60b4ddc4a3b6e39.o) ... "OBJC_CLASS$_GULMutableDictionary", referenced from: objc-class-ref in GoogleAppMeasurement(APMRemoteConfig_a87cea1e5d19294f87a4448795cd24c6.o) objc-class-ref in GoogleAppMeasurement(APMMeasurement_a76ff61c6b4ca85ef91462a646f323a0.o) "OBJC_CLASS$_GULNetwork", referenced from: objc-class-ref in GoogleAppMeasurement(APMAnalytics_f5f2b01aed09e7d23917a3e8a400242e.o) objc-class-ref in GoogleAppMeasurement(APMMeasurement_a76ff61c6b4ca85ef91462a646f323a0.o) objc-class-ref in GoogleAppMeasurement(APMAppDelegateInterceptor_d25c2dc381ddbd5008199366846aae05.o) objc-class-ref in FirebaseCoreDiagnostics(FIRClearcutLogger_45763904baa6658ff86b47cac2ab23e7.o) "_GULIsLoggableLevel", referenced from: -[APMMonitor isLoggableLevel:] in GoogleAppMeasurement(APMMonitor_405c5a637e87914c89c37652996d219d.o) "_GULLogError", referenced from: +[APMAnalytics startWithAppID:origin:options:] in GoogleAppMeasurement(APMAnalytics_f5f2b01aed09e7d23917a3e8a400242e.o) -[APMUserDefaults synchronize] in GoogleAppMeasurement(APMUserDefaults_cec267d1ff21df5a0ffda1a71af1431f.o) "_GULSetLoggerLevel", referenced from: -[APMMonitor setDebugModeEnabled:] in GoogleAppMeasurement(APMMonitor_405c5a637e87914c89c37652996d219d.o) _FIRSetLoggerLevel in FirebaseCore(FIRLogger.o) "OBJC_CLASS$_GULReachabilityChecker", referenced from: objc-class-ref in FirebaseMessaging(FIRMessaging.o) "OBJC_CLASS$_GULAppDelegateSwizzler", referenced from: objc-class-ref in GoogleAppMeasurement(APMAnalytics_f5f2b01aed09e7d23917a3e8a400242e.o) ld: symbol(s) not found for architecture arm64 clang: error: linker command failed with exit code 1 (use -v to see invocation)

ARCHIVE FAILED `

There is an open issue on the cordova-firebase-plugin repo : https://github.com/arnesson/cordova-plugin-firebase/issues/949

I need both of those plugins, is there anyone who succeeded resolving this conflict ?

zabaat commented 5 years ago

not sure if it helps, I was using cordova-plugin-firebase-authentication library in addition to the same 2 you were using. I removed the 'cordova-plugin-firebase-authentication' and I am up and running.

devotebest commented 5 years ago

I got exact same problem when use with cordova-firebase plugin. please help

mogupta commented 5 years ago

@dpa99c thank you for pointing the right direction. I tried this fork https://github.com/EddyVerbruggen/cordova-plugin-googleplus/pull/586 by @guylando. He has upgraded the google utilities to v6.2 . I tried but it didn't work. I get the same error when click on google signin. I understand that the fork won't resolve the conflicting Google Utilities version issue. How do I go about solving the clash issue between firebase and googleplus as you described in https://github.com/dpa99c/cordova-plugin-firebase/issues/31

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSDictionaryI gtm_httpArgumentsString]: unrecognized selector sent to instance 0x280333800'

dpa99c commented 5 years ago

PR #586 still bundles the Google libraries as a static bundle inside the plugin repo so it will still conflict with cordova-plugin-firebasex which uses Cocopods to satisfy its dependencies. To resolve the problem, this plugin must be updated to also use Cocopods for dependency resolution so there is a single canonical source (in the same way Gradle is used to satisfy Android build dependencies rather than bundling libraries as static JAR files).

mogupta commented 5 years ago

@dpa99c is there a workaround for now ? basically you would always need firebase to send notifications and google sign in is needed in most apps. I am pretty sure most people will find the solution helpful. I will be happy to dig into it but being a IOS / Android novice not sure where to start.

dpa99c commented 5 years ago

Fork this plugin and use replace the static frameworks with the equivalent podspecs

mogupta commented 5 years ago

Resolved by adding cordova-plugin-firebase on IOS instead of cordova-plugin-firebasex for Android cordova-plugin-firebasex works great with googleplus plugin Steps

  1. ionic cordova platform remove ios
  2. ionic cordova plugin remove cordova-plugin-googleplus
  3. ionic cordova plugin remove cordova-plugin-firebasex
  4. ionic cordova plugin remove cordova-plugin-androidx-adapter
  5. ionic cordova plugin add https://github.com/vash15/cordova-plugin-firebase.git#master
  6. ionic cordova plugin add cordova-plugin-cocoapod-support
  7. ionic cordova plugin add cordova-plugin-googleplus --save --variable REVERSED_CLIENT_ID=myreversedclientid
  8. Add the following to the config.xml
    <platform name="ios">
        <preference name="pods_ios_min_version" value="9.0" />
        <preference name="pods_use_frameworks" value="true" />
        <pod name="Firebase/Core" version="5.20.0" />
        <pod name="Firebase/Auth" version="5.20.0" />
        <pod name="Firebase/Messaging" version="5.20.0" />
        <pod name="Firebase/Performance" version="5.20.0" />
        <pod name="Firebase/RemoteConfig" version="5.20.0" />
        <pod name="Firebase/DynamicLinks" version="5.20.0" />
        <pod name="Fabric" version="1.9.0" />
        <pod name="Crashlytics" version="3.12.0" />
        <pod name="GoogleSignIn" version="4.4.0" />
    </platform>
peterpeterparker commented 5 years ago

I provided a PR to use Cocoapods for Google dependencies: https://github.com/EddyVerbruggen/cordova-plugin-googleplus/pull/615

Till the PR is merged, you could install it like the following:

cordova plugin add https://github.com/peterpeterparker/cordova-plugin-googleplus#cocoapods  ...
peterpeterparker commented 5 years ago

PR https://github.com/EddyVerbruggen/cordova-plugin-googleplus/pull/615 has been merged (to fetch dependencies from cocoapods) and @EddyVerbruggen has released a new version of the plugin v8.0.0

Therefore, except if someone is still facing the above error after updating the plugin, I think this issue could be closed

mogupta commented 5 years ago

@peterpeterparker worked for me .Thanks. Issue can be closed

yashpatelyk commented 4 years ago

I am having this issue with cordova-plugin-fcm. can someone help?

Undefined symbols for architecture x86_64: "_OBJCCLASS$_GSDK_GTMLogger", referenced from: objc-class-ref in GoogleIPhoneUtilities(GIPReachability.o) ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation)

amit777 commented 4 years ago

@yashpatelyk did you every find a resolution to this with codova-plugin-fcm?

yashpatelyk commented 4 years ago

@amit777 yes I got the solution. See, https://stackoverflow.com/a/57765904/3855048

bhavik103 commented 4 years ago

@yashpatelyk Will google plus login work fine after downgrading the version as given in the link?

akadebnath commented 4 years ago

For all who are facing issue with fcm plugin, I have switched to cordova-plugin-firebase-messaging and they are now working fine codova-plugin-fcm is quite old and the repo is no longer maintained. It is better to switch to a more recent plugin.

okandeb commented 4 years ago

problem persists on cordova 9, ionic 3, cordova-ios 5.1.1 and "cordova-plugin-firebasex": "7.0.2". I removed the googleplus plugin until fixing this issue. Is there any alternative for google sign in? Or any plugin like gradle-version-plugin?