[iOS] App with both GoogleAds-IMA-iOS-SDK and Firebase Auth have duplicate GTMSessionFetcher symbols

667 views
Skip to first unread message

Gabriel BESSON

unread,
Feb 25, 2020, 9:56:37 AM2/25/20
to Interactive Media Ads SDK
Hello,

My iOS app is using both Firebase Auth and GoogleAds-IMA-iOS-SDK, installed via Cocoapods.
During the application startup, iOS raises warnings about duplicate GTMSession symbols (GTMSessionFetcher, GTMSessionCookieStorage, GTMSessionFetcherService, GTMSessionFetcherSessionDelegateDispatcher and GTMSessionUploadFetcher).

My understanding is that GoogleAds-IMA-iOS-SDK does not rely on cocoapods to get GTMSessionFetcher.framework, but instead has its own copy of these classes embeded inside its Framework.

Sadly I did not find any app side solution; The only solution I can imagine requires Google to remove GTMSessionFetcher's classes from GoogleAds-IMA-iOS-SDK and declare them as a public dependency in GoogleAds-IMA-iOS-SDK's podspec file (since that GTMSessionFetcher is already available as a standalone pod). Doing so will enable Cocoapods to get only one shared instance of GTMSessionFetcher used by both FirebaseAuth and GoogleAds-IMA-iOS-SDK.

Has anyone encountered the same issue ? If so did you find any solution that does not require a fix from inside GoogleAds-IMA-iOS-SDK ?

Thank you!

Here's some technical data about my situation

Environment :
  - Xcode version 11.3.1 (11C504)
  - Cocoapods version 1.8.4
  - Firebase/Auth  version  6.17.0
  - GoogleAds-IMA-iOS-SDK version 3.11.3

Steps to reproduce :
1. In Xcode create a new iOS app
2. In your podfile, add dependency to both GoogleAds-IMA-iOS-SDK and Firebase/Auth
3. Install the pods.  (Note: Firebase/Auth (6.17.0)  has dependency onto  FirebaseAuth (6.4.3)  which has dependency onto  GTMSessionFetcher/Core (~> 1.1) )
4. Run the project

Expected result :
The application starts up, without warnings

Observed results :
The application starts up, with warnings about duplicate symbols in both GoogleInteractiveMediaAds.framework and GTMSessionFetcher.framework :

objc[42270]: Class GTMSessionFetcher is implemented in both /Users/somebody/Library/Developer/CoreSimulator/Devices/0D030C5C-C95C-4DAA-8711-89F77C4F9E72/data/Containers/Bundle/Application/676A51F2-1469-4949-ABAC-6625DBE8A5C8/mytest.app/Frameworks/GoogleInteractiveMediaAds.framework/GoogleInteractiveMediaAds (0x10bd94780) and /Users/somebody/Library/Developer/CoreSimulator/Devices/0D030C5C-C95C-4DAA-8711-89F77C4F9E72/data/Containers/Bundle/Application/676A51F2-1469-4949-ABAC-6625DBE8A5C8/mytest.app/Frameworks/GTMSessionFetcher.framework/GTMSessionFetcher (0x10bcbfe48). One of the two will be used. Which one is undefined.

objc[42270]: Class GTMSessionCookieStorage is implemented in both /Users/somebody/Library/Developer/CoreSimulator/Devices/0D030C5C-C95C-4DAA-8711-89F77C4F9E72/data/Containers/Bundle/Application/676A51F2-1469-4949-ABAC-6625DBE8A5C8/mytest.app/Frameworks/GoogleInteractiveMediaAds.framework/GoogleInteractiveMediaAds (0x10bd947a8) and /Users/somebody/Library/Developer/CoreSimulator/Devices/0D030C5C-C95C-4DAA-8711-89F77C4F9E72/data/Containers/Bundle/Application/676A51F2-1469-4949-ABAC-6625DBE8A5C8/mytest.app/Frameworks/GTMSessionFetcher.framework/GTMSessionFetcher (0x10bcbfe98). One of the two will be used. Which one is undefined.

objc[42270]: Class GTMSessionFetcherService is implemented in both /Users/somebody/Library/Developer/CoreSimulator/Devices/0D030C5C-C95C-4DAA-8711-89F77C4F9E72/data/Containers/Bundle/Application/676A51F2-1469-4949-ABAC-6625DBE8A5C8/mytest.app/Frameworks/GoogleInteractiveMediaAds.framework/GoogleInteractiveMediaAds (0x10bd94820) and /Users/somebody/Library/Developer/CoreSimulator/Devices/0D030C5C-C95C-4DAA-8711-89F77C4F9E72/data/Containers/Bundle/Application/676A51F2-1469-4949-ABAC-6625DBE8A5C8/mytest.app/Frameworks/GTMSessionFetcher.framework/GTMSessionFetcher (0x10bcbff38). One of the two will be used. Which one is undefined.

objc[42270]: Class GTMSessionFetcherSessionDelegateDispatcher is implemented in both /Users/somebody/Library/Developer/CoreSimulator/Devices/0D030C5C-C95C-4DAA-8711-89F77C4F9E72/data/Containers/Bundle/Application/676A51F2-1469-4949-ABAC-6625DBE8A5C8/mytest.app/Frameworks/GoogleInteractiveMediaAds.framework/GoogleInteractiveMediaAds (0x10bd94848) and /Users/somebody/Library/Developer/CoreSimulator/Devices/0D030C5C-C95C-4DAA-8711-89F77C4F9E72/data/Containers/Bundle/Application/676A51F2-1469-4949-ABAC-6625DBE8A5C8/mytest.app/Frameworks/GTMSessionFetcher.framework/GTMSessionFetcher (0x10bcbff60). One of the two will be used. Which one is undefined.

objc[42270]: Class GTMSessionUploadFetcher is implemented in both /Users/somebody/Library/Developer/CoreSimulator/Devices/0D030C5C-C95C-4DAA-8711-89F77C4F9E72/data/Containers/Bundle/Application/676A51F2-1469-4949-ABAC-6625DBE8A5C8/mytest.app/Frameworks/GoogleInteractiveMediaAds.framework/GoogleInteractiveMediaAds (0x10bd948c0) and /Users/somebody/Library/Developer/CoreSimulator/Devices/0D030C5C-C95C-4DAA-8711-89F77C4F9E72/data/Containers/Bundle/Application/676A51F2-1469-4949-ABAC-6625DBE8A5C8/mytest.app/Frameworks/GTMSessionFetcher.framework/GTMSessionFetcher (0x10bcbffd8). One of the two will be used. Which one is undefined.

IMA SDK

unread,
Feb 25, 2020, 2:33:51 PM2/25/20
to ima...@googlegroups.com
Hi Gabriel,

Thank you for reporting this to us. I was able to reproduce the behavior that you’re seeing with the warning being caused by Duplicate GTMSessionFetcher library. Our team is going to review the behavior. I will get back to you with more information as soon as possible.

Regards,
Arnaud Casame
IMA SDK Team


ref:_00D1U1174p._5001UXTAJO:ref

Eric Slosser

unread,
Sep 4, 2020, 2:52:47 PM9/4/20
to Interactive Media Ads SDK
This problem still occurs in the current shipping version of the SDK (v3.12.1).

It occurs whether IMA-SDK is installed via CocoaPods or by embedding.

My workaround is to create a post_install step to remove '-framework "GTMSessionFetcher"' from the OTHER_LDFLAGS of our app target's xcconfig files.

Eric Slosser

unread,
Sep 4, 2020, 4:02:26 PM9/4/20
to Interactive Media Ads SDK
sample project, includes workaround (see README)
IMA-SDK-duplicate-issue.zip

IMA SDK

unread,
Sep 6, 2020, 11:35:59 PM9/6/20
to eric.s...@nytimes.com, ima...@googlegroups.com

Hi Eric,

Thanks for your message. The team is already aware about this and I’m going to share this information with them for reference. Will give you an update as soon as possible.

Regards,

Google Logo
Sherwin Diesta
IMA SDK Team
 


ref:_00D1U1174p._5004Q24Z8TA:ref

Eric Slosser

unread,
Sep 9, 2020, 10:47:47 AM9/9/20
to Interactive Media Ads SDK
Thanks for the reply, Sherwin. 

As gently as possible, I'd like to point out that your answer ("the team knows, we'll get back to you") is the same thing that Arnaud said 6.5 months ago.

If the SDK can't be fixed, perhaps as a service to its users, the doc team could publish the workaround so the next person doesn't have to stumble across the bug?

Thanks,
Eric

IMA SDK

unread,
Sep 9, 2020, 4:46:45 PM9/9/20
to eric.s...@nytimes.com, ima...@googlegroups.com
Hi Eric,

Sherwin updated the bug ticket and the team is actively working on reviewing the issue so we can provide a fix or a workaround as soon as possible. In the meantime, rest assured that we'll get back to you on this thread as soon as we have our findings.

Regards,
Arnaud Casame
IMA SDK Team 


ref:_00D1U1174p._5004Q24Z8TA:ref
Message has been deleted

Eric Slosser

unread,
Sep 13, 2021, 3:13:51 PM9/13/21
to Interactive Media Ads SDK
Still broken.

Using sample app (above), these symbols are duplicated:
    CSAudioRecordContext,
    CSAudioFileManager,
    CSPlainAudioFileWriter,
    CSRemoteRecordClient,
    GTMSessionFetcher,
    GTMSessionFetcherSessionDelegateDispatcher,
    CSNNVADEndpointAnalyzer,
    GTMSessionCookieStorage,
    GTMSessionFetcherService,
    GTMSessionUploadFetcher,
    CSSelectiveChannelAudioFileWriter,
    CSServerEndpointFeatures
Podfile.lock

IMA SDK

unread,
Sep 14, 2021, 3:32:45 AM9/14/21
to ima...@googlegroups.com

Hi Eric,

 

Thank you for reaching out to us.

 

What sample apps are you referring to? You didn't seem to share any samples yet. Is this related to the previous forum thread you have opened? If yes, it would be best to continue our conversation on that thread for better tracking of the issue. If not, please elaborate the issue here and let us know which sample app exactly are you reporting?

Regards,

Google Logo
Michael Angelo Legaspi
IMA SDK Team
 


ref:_00D1U1174p._5004Q2NTlxR:ref

Eric Slosser

unread,
Sep 14, 2021, 9:05:42 AM9/14/21
to Interactive Media Ads SDK
Hi Michael.  

screen shot of sample app message.jpgI refer to the sample project I submitted, in this thread, on Sept 4, 2020 at 4:02:26 PM.

Do you not see it?

On Tuesday, September 14, 2021 at 3:32:45 AM UTC-4 imasdk wrote:

What sample apps are you referring to? 

ref:_00D1U1174p._5004Q2NTlxR:ref

IMA SDK

unread,
Sep 14, 2021, 12:38:52 PM9/14/21
to ima...@googlegroups.com
Hi Eric,

Thank you for responding to us. Unfortunately we do not see any appo file for us to test with. We see a Podfile and that's all. If you would like, you can share with us here via the "Reply to author" button. This will send it privately to us.

Regards,
Google Logo
William Pescherine
IMA SDK Team
 


ref:_00D1U1174p._5004Q2NTlxR:ref

Eric Slosser

unread,
Sep 14, 2021, 3:15:51 PM9/14/21
to IMA SDK, ima...@googlegroups.com
The instructions for how to run the test are in the README.md file. You will need Xcode, and have familiarity with Cocoapods.

--
You received this message because you are subscribed to a topic in the Google Groups "Interactive Media Ads SDK" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/ima-sdk/77mqpFwRYOs/unsubscribe.
To unsubscribe from this group and all its topics, send an email to ima-sdk+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/ima-sdk/GeFMP000000000000000000000000000000000000000000000QZFNKP00Gvzr9gftRKCDjHHj7NTbXQ%40sfdc.net.

IMA SDK

unread,
Sep 15, 2021, 2:45:44 AM9/15/21
to eric.s...@nytimes.com, ima...@googlegroups.com

Hi Eric,

 

Thank you for your response.

 

I have raised this the information you shared to the rest of the team to further investigate. We will provide more information once we have their feedbacks.

Regards,

Google Logo
Michael Angelo Legaspi
IMA SDK Team
 


ref:_00D1U1174p._5004Q2NTlxR:ref

IMA SDK

unread,
Sep 23, 2021, 1:39:36 PM9/23/21
to ima...@googlegroups.com

Hi Gabriel,

The request to isolate GTM session as a cocoapods dependency is an open feature request with the IMA team. I do not have a timeline for when such a change might be implemented, but for the time being, it is safe to continue using firebase and IMA together, despite the warnings, as GTMSession is a fairly static library, and both versions should be identical. For the time being, this warning is considered expected behavior.

If the feature request is implemented in a future version, it will be listed in our release notes.

Thanks,

Greg Schoppe
IMA SDK Team



ref:_00D1U1174p._5001UXTAJO:ref

IMA SDK

unread,
Jun 24, 2022, 5:03:16 AM6/24/22
to eric.s...@nytimes.com, ima...@googlegroups.com

Hello Eric,

 

Hope you are doing well.

 

I just want to get back here to let you know that a fixed had been released for this issue. Kindly update to the latest version of the iOS SDK and let us know should you encounter the same issue.

Regards,

 

Google Logo
Michael Angelo
IMA SDK Team
 


ref:_00D1U1174p._5004Q2NTlxR:ref
Reply all
Reply to author
Forward
0 new messages