AppLovin / AppLovin-MAX-SDK-iOS

84 stars 69 forks source link

Static Framework Mach-O Type #314

Closed 256p closed 1 week ago

256p commented 1 month ago

Feature Description

Previous AppLovin Framework versions were built static, but 12.4.1 is now dynamic. This creates a problem with Unity build. External Dependency Manager by default uses static linkage use_frameworks! :linkage -> :static. CocoaPods cannot mix different linkage types under one target, so by default Unity will not build with AppLovin 12.4.1, there will be runtime error: Library not loaded: @rpath/AppLovinSDK.framework/AppLovinSDK It is possible to turn off static linkage in External Dependency Manager settings and AppLovin 12.4.1 will work, but then other static libraries will not work, because they need static linkage.

Would be nice to continue to work with static framework, if it is possible.

andy-block commented 1 month ago

We hit this issue also - when we upgraded to 12.4.1, our Unity app (2022.3.22f1) failed to start, crashing instantly. I tried the suggestion from @256p to switch to static linking in the iOS resolver settings, but then the app fails to compile any more (Library 'FacebookAdapter' not found). This feels more like a blocking bug for us than an enhancement (unless there is something else I can do to get a working build?).

256p commented 1 month ago

@andy-block yes, maybe it is a bug. (Although it should be possible to deal with from the publisher side using pod-linkage plugin)

@JonathanLiuApp here is more info about the issue: For testing, try to use Unity plugin. For some reason, it works when AppLovin is added directly to the app target in the Podfile. But doesn't work if it is added to the framework target that later is used in the app, what is happening in Unity. Here is an example of generated Podfile

source 'https://cdn.cocoapods.org/'

platform :ios, '13.0'

target 'UnityFramework' do

  pod 'AppLovinMediationGoogleAdapter', '11.2.0.1'
  pod 'AppLovinMediationIronSourceAdapter', '7.9.1.0.0'
  pod 'AppLovinSDK', '12.4.1'
end
target 'Unity-iPhone' do
end
use_frameworks!

If use_frameworks! :linkage -> :static is used, then AppLovin will not be found at the runtime If just use_frameworks! is used, then there will be a bunch of Undefined symbol errors at the build time from other static frameworks

LatCui commented 1 month ago

I have same question

Vedant-Mehta39 commented 1 month ago

Hi @256p, we recently released the latest Unity Plugin v6.4.3, which allows publishers to use the latest AppLovinSDK (dynamic framework) with default External Dependency Manager options. Could you try that and let us know if it resolves the issue?

andy-block commented 1 month ago

Seems to have fixed the problem for me, for what it's worth - thanks for the quick response!

dmitrykurteanu commented 3 weeks ago

Hi @256p, we recently released the latest Unity Plugin v6.4.3, which allows publishers to use the latest AppLovinSDK (dynamic framework) with default External Dependency Manager options. Could you try that and let us know if it resolves the issue?

I've hit that same issue, but with AppLovin adapter for IronSource/LevelPlay. Is there anything I could do on my side to fix it, or is that something IronSource/LevelPlay should fix with their adapter?

Vedant-Mehta39 commented 3 weeks ago

Hi @dmitrykurteanu, you should reach out to the IronSource/LevelPlay team to resolve that for you.

256p commented 1 week ago

Hi @Vedant-Mehta39, yes, Unity Plugin v6.4.3 works for me, thanks

thomasmso commented 1 week ago

@256p - Let us know if any other issues arise. Thank you.