IMA SDK tvOS 4.2.1, 4.2.2, and 4.2.3 all fail during linking with undefined symbol for arm64

101 views
Skip to first unread message

Kyle Fox

unread,
Jul 17, 2020, 1:11:53 PM7/17/20
to Interactive Media Ads SDK
Hello!

I use GoogleAds-IMA-tvOS-SDK in Swift through Cocoapods, and this has not been an issue through version 4.2.0. After running pod update, beginning with version 4.2.1, builds started failing with this message:

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

I'm continuing to use 4.2.0 for now - let me know what other information I can provide to help find the source of this issue. I've checked and double checked architectures and linking in the project's build settings and all seems to be in order.

Thank you!

Kyle

Kyle Fox

unread,
Jul 17, 2020, 2:11:19 PM7/17/20
to Interactive Media Ads SDK
Of course, as soon as I ask this question, I stumble upon the answer.

I was calling:

IMAAdDisplayContainer(adContainer: view, companionSlots: nil)

AFAIK, IMACompanionAdSlot is supposed to be supported in the tvOS SDK, but since I'm not using it anyway, using this now compiles:

IMAAdDisplayContainer(adContainer: view)

---

I stumbled upon this when doing various experiments with creating a IMAAdsRequest with IMAAdDisplayContainer, using this initializer:

IMAAdsRequest(
    adTagUrl: link,
    adDisplayContainer: adDisplayContainer,
    avPlayerVideoDisplay: adsVideoDisplay,
    pictureInPictureProxy: IMAPictureInPictureProxy(),
    userContext: nil
)

This was an attempted (bad) workaround for pictureInPictureProxy being required, but IMAPictureInPictureProxy is not supported in tvOS, resulting in another undefined symbol build error.
Light bulb finally went off, and I found that parameter in IMAAdDisplayContainer.

So! I found the solution to my issue, but if that initializer for IMAAdsRequest is meant to be available on tvOS, then pictureInPictureProxy should be marked optional.

Thank you!

Kyle

Kyle Fox

unread,
Jul 17, 2020, 2:12:39 PM7/17/20
to Interactive Media Ads SDK
Last revision - IMACompanionAdSlot is not supported in the tvOS SDK. Forgot to edit as I was writing

IMA SDK

unread,
Jul 17, 2020, 8:50:21 PM7/17/20
to kyle....@gmail.com, ima...@googlegroups.com
Hi,

Thank you for reaching out to us. Can you confirm whether or not you were able to fix the issue?

Regards,
Arnaud Casame
IMA SDK Team


ref:_00D1U1174p._5004Q21mvP8:ref

Jason Tibbetts

unread,
Jul 20, 2020, 2:10:34 PM7/20/20
to Interactive Media Ads SDK
I have the same issue in the latest tvOS SDK (4.2.3), and came up with the same fix as Kyle--just drop the companion slot argument. But clearly the headers that the SDK publishes don't match the framework, because if that argument is unsupported on tvOS, we should be a compilation error, not a linker error.

IMA SDK

unread,
Jul 20, 2020, 6:07:11 PM7/20/20
to jason.tib...@gmail.com, ima...@googlegroups.com
Hi Jason,

The IMA SDK for tvOS doesn't support CompanionAds, therefore it is not recommend to initialize the IMAAdDisplayContainer passing a companionSlots, you should use the IMAAdDisplayContainer initialization used in our Getting Started guide.


Regards,
Arnaud Casame
IMA SDK Team


ref:_00D1U1174p._5004Q21mvP8:ref

Jason Tibbetts

unread,
Jul 24, 2020, 2:12:25 PM7/24/20
to Interactive Media Ads SDK
But that's what I said--I'm not passing companion slots. But if you do try to pass them, there's no compiler error. Instead, you get a linker error, which means that the headers that are published with your tvOS framework include the companion slots argument in the initializer, but the framework binary does not. That has to be fixed on your end.

IMA SDK

unread,
Jul 24, 2020, 5:05:31 PM7/24/20
to jason.tib...@gmail.com, ima...@googlegroups.com

Hi Jason,

It is expected that you get the linker error when you pass the companionSlots argument as this argument is a placeholder until we add companionAds support for tvOS. We would recommend you to not use this function definition in anyway for now.



Regards,
Arnaud Casame
IMA SDK Team



ref:_00D1U1174p._5004Q21mvP8:ref

Jason Tibbetts

unread,
Jul 27, 2020, 3:25:21 PM7/27/20
to Interactive Media Ads SDK
I understand that, but it would be much clearer if it were simply a compiler error, which is fairly self-explanatory. When something compiles but doesn't link, it looks like the distribution wasn't build correctly, because it wasn't. 

IMA SDK

unread,
Jul 27, 2020, 10:53:56 PM7/27/20
to jason.tib...@gmail.com, ima...@googlegroups.com

Hi there,

Thanks for your response. Would it be possible to reproduce this issue using one of our sample apps out of the box? If yes, kindly share with us the steps in order for us to replicate the behavior and so we could check the issue further.

Regards,
Sherwin Diesta
IMA SDK Team



ref:_00D1U1174p._5004Q21mvP8:ref

IMA SDK

unread,
Jul 27, 2020, 10:58:29 PM7/27/20
to jason.tib...@gmail.com, ima...@googlegroups.com
Hi Jason,

Allow me to create this feature request and pass it over to the rest of our team. However, I cannot guarantee if and when this would be made available.
In the meantime, you may continue to follow our release history and our blog for updates regarding this feature.

Regards,
Arnaud Casame
IMA SDK Team


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