googleads/googleads-mobile-ios-mediation

GoogleMobileAdsMediationChartboost 9.1.0 has undefined symbols for os.Logger in ChartboostSDK

Closed this issue · 5 comments

I've recently upgraded my project to Firebase 10.4.0 and got the following linking error from GoogleMobileAdsMediationChartboost dependencies:

Undefined symbols for architecture arm64:
  "nominal type descriptor for os.Logger", referenced from:
      _symbolic _____ 2os6LoggerV in ChartboostSDK(OSLogProccesor.o)
  "type metadata accessor for os.Logger", referenced from:
      type metadata completion function for ChartboostSDK.LoggerLogProcessor in ChartboostSDK(OSLogProccesor.o)
      ChartboostSDK.LoggerLogProcessor.__deallocating_deinit in ChartboostSDK(OSLogProccesor.o)
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

My Podfile:

def shared_mac_pods
  platform :osx, '11.00'

  # Uncomment the next line if you're using Swift or would like to use dynamic frameworks
  use_frameworks!

  # Pods for App-desktop
  pod 'FirebaseOSX', '>= 2.5.1'
end

target 'App-desktop' do
  shared_mac_pods
end

target 'Metal-App-desktop' do
  shared_mac_pods
end

def shared_ios_pods
  platform :ios, '12.1'
  # Uncomment the next line if you're using Swift or would like to use dynamic frameworks
  use_frameworks!

  # Pods for App-mobile
  pod 'Google-Mobile-Ads-SDK'
  pod 'GoogleMobileAdsMediationAdColony'
  pod 'GoogleMobileAdsMediationChartboost'
  pod 'FirebaseAnalytics'
  pod 'FirebaseAuth'
  pod 'FirebaseCrashlytics'
  pod 'FirebaseDynamicLinks'
  pod 'FirebasePerformance'
  pod 'FirebaseRemoteConfig'
  pod 'FirebaseStorage'
  #pod 'FirebaseUI' # Significantly increases build time! Let's use individual ones
  pod 'FirebaseUI/Google'
  pod 'FirebaseUI/Facebook'
  pod 'FirebaseUI/OAuth' # Used for Sign in with Apple, Twitter, etc
  pod 'FBSDKCoreKit', :modular_headers => true
end

target 'App-mobile' do
  shared_ios_pods
end

target 'Metal-App-mobile' do
  shared_ios_pods
end

When I fix the version to the previous one like:

pod 'GoogleMobileAdsMediationChartboost', '9.0.0.0'

the linker error goes away. I tried fixing version of ChartboostSDK to 9.0.0 but you seem to have a hard dependency there on version 9.1.0 so I had to downgrade version of GoogleMobileAdsMediationChartboost.

macOS Big Sur 11.6.5
XCode Version 13.2.1 (13C100)
Firebase C++ SDK 10.4.0
Google-Mobile-Ads-SDK 9.14.0

HI , @solodon4! Chartboost iOS Adapter v9.2.0.0 was just released. Could you verify if that solve this issue.
https://developers.google.com/admob/ios/mediation/chartboost#chartboost-ios-mediation-adapter-changelog.

Hi @chlandacastro,

It is likely fixed as I don't see those two symbols among the undefined symbols, however, I cannot fully validate it for you as I get a large number of other undefined symbols, which are caused by both Google and Chartboost using XCode 14 to build your sources, while I use XCode 13 to link to them:

Undefined symbols for architecture arm64:
  "_objc_msgSend$initWithName:libraryVersion:adapterVersion:", referenced from:
      _GADMAdapterChartboostMediation in ChartboostAdapter(GADMAdapterChartboostUtils.o)
  "_objc_msgSend$sharedApplication", referenced from:
      -[CHBSharedApplication app] in ChartboostSDK(CHBApplication.o)
...
  many many more all starting with _objc_msgSend$

According to the explanation provided here both Google and Chartboost would have to use -fno-objc-msgsend-selector-stubs during the build for it to link with code produced by older XCode versions.

Thanks,
Yuriy

P.S. I am using XCode 14 for CI with GitHub Actions, however, the build is broken there right now, so I can't validate it there either until I figure out how.

P.P.S. I have just realized that I can't even say it is likely fixed because the errors stopped after 100 undefined symbols, so those 2 might have been still undefined.

@solodon4

Does the issue still persist and prevent you to load and render ads from Chartboost? Can you also check the Architectures and Valid Architectures settings in your project/target?

The next Chartboost iOS adapter release would require Xcode minimum version of 14.1.

Closed as the issue wasn't reproducible and there wasn't an update from the reporter.