AppLovin / AppLovin-MAX-SDK-iOS

86 stars 70 forks source link

iOS Crash with Verve Group(Pubnative) Adapter When Static Linking Is Enabled #178

Open rselimsahin opened 1 year ago

rselimsahin commented 1 year ago

MAX SDK Version

5.6.0

Device/Platform Info

iOS

Current Behavior

We are experiencing a crash on app launch on iOS when static framework linking is enabled and Verve adapter is installed(version 2.16.1.1). XCode version 14.1. Xcode logs are provided below:

2022-12-16 15:05:56.778238+0300 MonsterDraft[1983:54505] AppLovinQualityService top: AppLovinQualityService Client Version: 6.7.1 2022-12-16 15:05:56.778326+0300 MonsterDraft[1983:54505] AppLovinQualityService top: AppLovinQualityService Device ID: F4F33D2B-08F1-4FF3-948E-7D4D7861026A 2022-12-16 15:05:56.869503+0300 MonsterDraft[1983:54505] Error loading /var/containers/Bundle/Application/A5AE0649-9100-492D-93F1-5D5A77DA0FAD/MonsterDraft.app/Frameworks/UnityFramework.framework/UnityFramework: dlopen(/var/containers/Bundle/Application/A5AE0649-9100-492D-93F1-5D5A77DA0FAD/MonsterDraft.app/Frameworks/UnityFramework.framework/UnityFramework, 0x0109): Library not loaded: '@rpath/OMSDK_Pubnativenet.framework/OMSDK_Pubnativenet' Referenced from: '/private/var/containers/Bundle/Application/A5AE0649-9100-492D-93F1-5D5A77DA0FAD/MonsterDraft.app/Frameworks/UnityFramework.framework/UnityFramework' Reason: tried: '/usr/lib/swift/OMSDK_Pubnativenet.framework/OMSDK_Pubnativenet' (no such file), '/usr/lib/swift/OMSDK_Pubnativenet.framework/OMSDK_Pubnativenet' (no such file), '/private/var/containers/Bundle/Application/A5AE0649-9100-492D-93F1-5D5A77DA0FAD/MonsterDraft.app/Frameworks/OMSDK_Pubnativenet.framework/OMSDK_Pubnativenet' (no such file), '/private/var/containers/Bundle/Application/A5AE0649-9100-492D-93F1-5D5A77DA0FAD/MonsterDraft.app/Frameworks/UnityFramework.framework/Frameworks/OMSDK_Pubnativenet.framework/OMSDK_Pubnativenet' (no such file), '/private/var/containers/Bundle/Application/A5AE0649-9100-492D-93F1-5D5A77DA0FAD/MonsterDraft.app/../../Frameworks/OMSDK_Pubnativenet.framework/OMSDK_Pubnativenet' (no such file), '/private/var/containers/Bundle/Application/A5AE0649-9100-492D-93F1-5D5A77DA0FAD/MonsterDraft.app/Frameworks/OMSDK_Pubnativenet.framework/OMSDK_Pubnativenet' (no such file), '/private/var/containers/Bundle/Application/A5AE0649-9100-492D-93F1-5D5A77DA0FAD/MonsterDraft.app/Frameworks/UnityFramework.framework/Frameworks/OMSDK_Pubnativenet.framework/OMSDK_Pubnativenet' (no such file), '/usr/lib/swift/OMSDK_Pubnativenet.framework/OMSDK_Pubnativenet' (no such file), '/usr/lib/swift/OMSDK_Pubnativenet.framework/OMSDK_Pubnativenet' (no such file), '/private/var/containers/Bundle/Application/A5AE0649-9100-492D-93F1-5D5A77DA0FAD/MonsterDraft.app/Frameworks/OMSDK_Pubnativenet.framework/OMSDK_Pubnativenet' (no such file), '/private/var/containers/Bundle/Application/A5AE0649-9100-492D-93F1-5D5A77DA0FAD/MonsterDraft.app/Frameworks/UnityFramework.framework/Frameworks/OMSDK_Pubnativenet.framework/OMSDK_Pubnativenet' (no such file), '/private/var/containers/Bundle/Application/A5AE0649-9100-492D-93F1-5D5A77DA0FAD/MonsterDraft.app/../../Frameworks/OMSDK_Pubnativenet.framework/OMSDK_Pubnativenet' (no such file), '/private/var/containers/Bundle/Application/A5AE0649-9100-492D-93F1-5D5A77DA0FAD/MonsterDraft.app/Frameworks/OMSDK_Pubnativenet.framework/OMSDK_Pubnativenet' (no such file), '/private/var/containers/Bundle/Application/A5AE0649-9100-492D-93F1-5D5A77DA0FAD/MonsterDraft.app/Frameworks/UnityFramework.framework/Frameworks/OMSDK_Pubnativenet.framework/OMSDK_Pubnativenet' (no such file), '/private/var/containers/Bundle/Application/A5AE0649-9100-492D-93F1-5D5A77DA0FAD/MonsterDraft.app/Frameworks/OMSDK_Pubnativenet.framework/OMSDK_Pubnativenet' (no such file), '/private/var/containers/Bundle/Application/A5AE0649-9100-492D-93F1-5D5A77DA0FAD/MonsterDraft.app/Frameworks/OMSDK_Pubnativenet.framework/OMSDK_Pubnativenet' (no such file), '/System/Library/Frameworks/OMSDK_Pubnativenet.framework/OMSDK_Pubnativenet' (no such file) 2022-12-16 15:05:56.871397+0300 MonsterDraft[1983:54505] Error loading /var/containers/Bundle/Application/A5AE0649-9100-492D-93F1-5D5A77DA0FAD/MonsterDraft.app/Frameworks/UnityFramework.framework/UnityFramework: dlopen(/var/containers/Bundle/Application/A5AE0649-9100-492D-93F1-5D5A77DA0FAD/MonsterDraft.app/Frameworks/UnityFramework.framework/UnityFramework, 0x0109): Library not loaded: '@rpath/OMSDK_Pubnativenet.framework/OMSDK_Pubnativenet'

Expected Behavior

No response

How to Reproduce

Enable static linking frameworks and install vervegroup adapter. Build project and test on iOS device.

Additional Info

Everything works without problem when verve adapter is uninstalled.

santoshbagadi commented 1 year ago

Hi @rselimsahin , just to confirm for Enable static linking frameworks, how are you enabling this. Is this through the External Dependency Manager settings?

If so, we currently don't support use_frameworks! setting and should disable it in the External Dependency Manager settings to avoid this issue.

rselimsahin commented 1 year ago

Hi @santoshbagadi ! Yes this is through the External Dependency Manager(version 1.2.174) settings.

santoshbagadi commented 1 year ago

Is there a specific reason for enabling Add use_frameworks! to Podfile setting? Could you try disabling it and see if the issue still exists?

rselimsahin commented 1 year ago

We enable statically linking frameworks setting because otherwise we can not compile our code using latest version of google ads adapter. Here is the google ads adapter issue we experience when the setting is disabled: https://github.com/googleads/googleads-mobile-unity/issues/2094. In addition to this, when setting is disabled we experience some issues with Firebase SDKs, especially with Remote Config. It is recommended to enable this setting when using Firebase SDKs.

santoshbagadi commented 1 year ago

Are you using both MAX and Google AdMob mediation? If you are using our Google AdMob adapter, you shouldn't need to enable this setting and that should fix the issue.

Could you share more specific regarding the Firebase config issues?

rselimsahin commented 1 year ago

@santoshbagadi Here is the build error we are experiencing with admob adapter when we disable static linking.

warning: linking module flags 'SDK Version': IDs have conflicting values ('[2 x i32] [i32 15, i32 2]' from /Users/rselimsahin/Desktop/mdbt/Pods/BURelyFoundation/Frameworks/SDK/HM/libHM.a(HMDBUCrashExtraDynamicData.o)721 with '[2 x i32] [i32 15, i32 0]' from /Users/rselimsahin/Desktop/mdbt/Pods/Ads-CN/SDK/CSJAdSDK.framework/CSJAdSDK(UGYGNodePrint.o)1554)
warning: linking module flags 'SDK Version': IDs have conflicting values ('[2 x i32] [i32 15, i32 2]' from /Users/rselimsahin/Desktop/mdbt/Pods/BURelyFoundation/Frameworks/SDK/HM/libHM.a(HMDBUCrashExtraDynamicData.o)721 with '[2 x i32] [i32 15, i32 0]' from /Users/rselimsahin/Desktop/mdbt/Pods/Ads-CN/SDK/CSJAdSDK.framework/CSJAdSDK(UGYGKitLayout.o)1551)
Undefined symbols for architecture arm64:
  "_GADAdLoaderAdTypeNative", referenced from:
      ___73-[ALGoogleMediationAdapter loadAdViewAdForParameters:adFormat:andNotify:]_block_invoke in libGoogleAdapter.a(ALGoogleMediationAdapter.o)
      ___64-[ALGoogleMediationAdapter loadNativeAdForParameters:andNotify:]_block_invoke in libGoogleAdapter.a(ALGoogleMediationAdapter.o)
  "_GADAdSizeBanner", referenced from:
      -[ALGoogleMediationAdapter adSizeFromAdFormat:isAdaptiveBanner:] in libGoogleAdapter.a(ALGoogleMediationAdapter.o)
  "_GADAdSizeLeaderboard", referenced from:
      -[ALGoogleMediationAdapter adSizeFromAdFormat:isAdaptiveBanner:] in libGoogleAdapter.a(ALGoogleMediationAdapter.o)
  "_GADAdSizeMediumRectangle", referenced from:
      -[ALGoogleMediationAdapter adSizeFromAdFormat:isAdaptiveBanner:] in libGoogleAdapter.a(ALGoogleMediationAdapter.o)
  "_GADCurrentOrientationAnchoredAdaptiveBannerAdSizeWithWidth", referenced from:
      ___64-[ALGoogleMediationAdapter adSizeFromAdFormat:isAdaptiveBanner:]_block_invoke in libGoogleAdapter.a(ALGoogleMediationAdapter.o)
      +[ALGoogleMediationAdapter currentOrientationAchoredAdaptiveBannerSizeWithWidth:] in libGoogleAdapter.a(ALGoogleMediationAdapter.o)
  "_OBJC_CLASS_$_GADAdLoader", referenced from:
      objc-class-ref in libGoogleAdapter.a(ALGoogleMediationAdapter.o)
  "_OBJC_CLASS_$_GADAppOpenAd", referenced from:
      objc-class-ref in libGoogleAdapter.a(ALGoogleMediationAdapter.o)
  "_OBJC_CLASS_$_GADBannerView", referenced from:
      objc-class-ref in libGoogleAdapter.a(ALGoogleMediationAdapter.o)
  "_OBJC_CLASS_$_GADExtras", referenced from:
      objc-class-ref in libGoogleAdapter.a(ALGoogleMediationAdapter.o)
  "_OBJC_CLASS_$_GADInterstitialAd", referenced from:
      objc-class-ref in libGoogleAdapter.a(ALGoogleMediationAdapter.o)
     (maybe you meant: _OBJC_CLASS_$_GADInterstitialAdBridgeV8)
  "_OBJC_CLASS_$_GADMediaView", referenced from:
      objc-class-ref in libGoogleAdapter.a(ALGoogleNativeAdDelegate.o)
  "_OBJC_CLASS_$_GADMobileAds", referenced from:
      objc-class-ref in libGoogleAdapter.a(ALGoogleMediationAdapter.o)
     (maybe you meant: _OBJC_CLASS_$_GADMobileAdsBridge)
  "_OBJC_CLASS_$_GADNativeAdImageAdLoaderOptions", referenced from:
      objc-class-ref in libGoogleAdapter.a(ALGoogleMediationAdapter.o)
  "_OBJC_CLASS_$_GADNativeAdView", referenced from:
      objc-class-ref in libGoogleAdapter.a(ALGoogleNativeAd.o)
  "_OBJC_CLASS_$_GADNativeAdViewAdOptions", referenced from:
      objc-class-ref in libGoogleAdapter.a(ALGoogleMediationAdapter.o)
  "_OBJC_CLASS_$_GADQueryInfo", referenced from:
      objc-class-ref in libGoogleAdapter.a(ALGoogleMediationAdapter.o)
     (maybe you meant: _OBJC_CLASS_$_GADQueryInfoBridge)
  "_OBJC_CLASS_$_GADRequest", referenced from:
      objc-class-ref in libGoogleAdapter.a(ALGoogleMediationAdapter.o)
     (maybe you meant: _OBJC_CLASS_$_GADRequestBridge)
  "_OBJC_CLASS_$_GADRewardedAd", referenced from:
      objc-class-ref in libGoogleAdapter.a(ALGoogleMediationAdapter.o)
     (maybe you meant: _OBJC_CLASS_$_GADRewardedAdBridge, _OBJC_CLASS_$_GADRewardedAdBridgeV8 )
  "_OBJC_CLASS_$_GADRewardedInterstitialAd", referenced from:
      objc-class-ref in libGoogleAdapter.a(ALGoogleMediationAdapter.o)
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

About the Firebase issue, we experience some unexpected behavior with Remote Config where app is not able to fetch Remote Config sometimes. We tested it on multiple devices and networks. This problem only occurs only when static linking is disabled. When we enable static linking as suggested by Firebase, we do not encounter this problem.