AppLovin / AppLovin-MAX-Flutter

MIT License
50 stars 28 forks source link

iOS app is not building on v4.0.0 #256

Open eli1stark opened 5 days ago

eli1stark commented 5 days ago

MAX Plugin Version

4.0.0

Flutter Version

3.24.3

Device/Platform Info

iOS 17.6.1

Current Behavior

When we updated AppLovin Flutter SDK to v4.0.0, the iOS app stopped building due to the error mentioned in this comment.

We can't reproduce this issue on v3.11.1.

Expected Behavior

The app should build without issues. Currently, when AppLovinMAX.initialize(apiKey) is called, the app build hangs indefinitely.

How to Reproduce

The correct way to manage AppLovin mediation adapter versions is to:

  1. Use the latest version of the AppLovinSDK.
  2. Let AppLovin manage the adapter versions automatically.

Our Podfile looks like this (scroll to CocoaPods section) as advised in official docs:

# Settings
use_frameworks!
inhibit_all_warnings!

# Pods
target 'Runner' do
  use_frameworks!
  use_modular_headers!

  pod 'AppLovinMediationByteDanceAdapter'
  pod 'AppLovinMediationFacebookAdapter'
  pod 'AppLovinMediationGoogleAdapter'
  pod 'AppLovinMediationVungleAdapter'
  pod 'AppLovinMediationInMobiAdapter'
  pod 'AppLovinSDK'

  flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
end

For some reason, the AppLovin SDK is not fetching the latest version of the Google Adapter when we are running pod update. Instead of v11.10.0, it's fetching v11.2.0.1.

We are also using the package google_mobile_ads: 5.1.0, which is required to enable the Google UMP flow. Could these packages conflict with each other? If so, there should be backward compatibility because there's no way to implement the UMP flow without it.

Reproducible in the demo app?

Yes

We followed instructions provided here but for some reason we are getting a different error from Google adapter:

*** Terminating app due to uncaught exception 'GADInvalidInitializationException', reason: 'The Google Mobile Ads SDK was initialized without an application ID. Google AdMob publishers, follow instructions at https://googlemobileadssdk.page.link/admob-ios-update-plist to set a valid application ID. Google Ad Manager publishers, follow instructions at https://googlemobileadssdk.page.link/ad-manager-ios-update-plist.'
*** First throw call stack:

However we are providing correct app id that we use in our main project.

Here's our complete Podfile and Info.plist for demo app (app-key is stripped):

Podfile ``` # Uncomment this line to define a global platform for your project platform :ios, '13.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' project 'Runner', { 'Debug' => :debug, 'Profile' => :release, 'Release' => :release, } def flutter_root generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__) unless File.exist?(generated_xcode_build_settings_path) raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first" end File.foreach(generated_xcode_build_settings_path) do |line| matches = line.match(/FLUTTER_ROOT\=(.*)/) return matches[1].strip if matches end raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get" end require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root) flutter_ios_podfile_setup target 'Runner' do use_frameworks! use_modular_headers! pod 'AppLovinMediationByteDanceAdapter' pod 'AppLovinMediationFacebookAdapter' pod 'AppLovinMediationGoogleAdapter' pod 'AppLovinMediationVungleAdapter' pod 'AppLovinMediationInMobiAdapter' pod 'AppLovinSDK' flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__)) end post_install do |installer| installer.pods_project.targets.each do |target| flutter_additional_ios_build_settings(target) end end ```
Info.plist ``` CADisableMinimumFrameDurationOnPhone CFBundleDevelopmentRegion $(DEVELOPMENT_LANGUAGE) CFBundleDisplayName AppLovin MAX CFBundleExecutable $(EXECUTABLE_NAME) CFBundleIdentifier $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion 6.0 CFBundleName applovin_max_example CFBundlePackageType APPL CFBundleShortVersionString $(FLUTTER_BUILD_NAME) CFBundleSignature ???? CFBundleVersion $(CURRENT_PROJECT_VERSION) LSRequiresIPhoneOS UILaunchStoryboardName LaunchScreen UIMainStoryboardFile Main UISupportedInterfaceOrientations UIInterfaceOrientationPortrait UISupportedInterfaceOrientations~ipad UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight UIViewControllerBasedStatusBarAppearance UIApplicationSupportsIndirectInputEvents GADApplicationIdentifier your-app-id ITSAppUsesNonExemptEncryption NSAdvertisingAttributionReportEndpoint https://postbacks-app.com UIApplicationSupportsIndirectInputEvents NSAppTransportSecurity NSAllowsArbitraryLoads SKAdNetworkItems SKAdNetworkIdentifier 22mmun2rn5.skadnetwork SKAdNetworkIdentifier 238da6jt44.skadnetwork SKAdNetworkIdentifier 24t9a8vw3c.skadnetwork SKAdNetworkIdentifier 24zw6aqk47.skadnetwork SKAdNetworkIdentifier 252b5q8x7y.skadnetwork SKAdNetworkIdentifier 275upjj5gd.skadnetwork SKAdNetworkIdentifier 294l99pt4k.skadnetwork SKAdNetworkIdentifier 2fnua5tdw4.skadnetwork SKAdNetworkIdentifier 2u9pt9hc89.skadnetwork SKAdNetworkIdentifier 32z4fx6l9h.skadnetwork SKAdNetworkIdentifier 3l6bd9hu43.skadnetwork SKAdNetworkIdentifier 3qcr597p9d.skadnetwork SKAdNetworkIdentifier 3qy4746246.skadnetwork SKAdNetworkIdentifier 3rd42ekr43.skadnetwork SKAdNetworkIdentifier 3sh42y64q3.skadnetwork SKAdNetworkIdentifier 424m5254lk.skadnetwork SKAdNetworkIdentifier 4468km3ulz.skadnetwork SKAdNetworkIdentifier 44jx6755aq.skadnetwork SKAdNetworkIdentifier 44n7hlldy6.skadnetwork SKAdNetworkIdentifier 47vhws6wlr.skadnetwork SKAdNetworkIdentifier 488r3q3dtq.skadnetwork SKAdNetworkIdentifier 4dzt52r2t5.skadnetwork SKAdNetworkIdentifier 4fzdc2evr5.skadnetwork SKAdNetworkIdentifier 4mn522wn87.skadnetwork SKAdNetworkIdentifier 4pfyvq9l8r.skadnetwork SKAdNetworkIdentifier 4w7y6s5ca2.skadnetwork SKAdNetworkIdentifier 523jb4fst2.skadnetwork SKAdNetworkIdentifier 52fl2v3hgk.skadnetwork SKAdNetworkIdentifier 54nzkqm89y.skadnetwork SKAdNetworkIdentifier 55644vm79v.skadnetwork SKAdNetworkIdentifier 578prtvx9j.skadnetwork SKAdNetworkIdentifier 5a6flpkh64.skadnetwork SKAdNetworkIdentifier 5l3tpt7t6e.skadnetwork SKAdNetworkIdentifier 5lm9lj6jb7.skadnetwork SKAdNetworkIdentifier 5tjdwbrq8w.skadnetwork SKAdNetworkIdentifier 6964rsfnh4.skadnetwork SKAdNetworkIdentifier 6g9af3uyq4.skadnetwork SKAdNetworkIdentifier 6p4ks3rnbw.skadnetwork SKAdNetworkIdentifier 6v7lgmsu45.skadnetwork SKAdNetworkIdentifier 6xzpu9s2p8.skadnetwork SKAdNetworkIdentifier 6yxyv74ff7.skadnetwork SKAdNetworkIdentifier 737z793b9f.skadnetwork SKAdNetworkIdentifier 74b6s63p6l.skadnetwork SKAdNetworkIdentifier 7953jerfzd.skadnetwork SKAdNetworkIdentifier 79pbpufp6p.skadnetwork SKAdNetworkIdentifier 7fmhfwg9en.skadnetwork SKAdNetworkIdentifier 7rz58n8ntl.skadnetwork SKAdNetworkIdentifier 7ug5zh24hu.skadnetwork SKAdNetworkIdentifier 84993kbrcf.skadnetwork SKAdNetworkIdentifier 89z7zv988g.skadnetwork SKAdNetworkIdentifier 8c4e2ghe7u.skadnetwork SKAdNetworkIdentifier 8m87ys6875.skadnetwork SKAdNetworkIdentifier 8r8llnkz5a.skadnetwork SKAdNetworkIdentifier 8s468mfl3y.skadnetwork SKAdNetworkIdentifier 97r2b46745.skadnetwork SKAdNetworkIdentifier 9b89h5y424.skadnetwork SKAdNetworkIdentifier 9nlqeag3gk.skadnetwork SKAdNetworkIdentifier 9rd848q2bz.skadnetwork SKAdNetworkIdentifier 9t245vhmpl.skadnetwork SKAdNetworkIdentifier 9vvzujtq5s.skadnetwork SKAdNetworkIdentifier 9yg77x724h.skadnetwork SKAdNetworkIdentifier a2p9lx4jpn.skadnetwork SKAdNetworkIdentifier a7xqa6mtl2.skadnetwork SKAdNetworkIdentifier a8cz6cu7e5.skadnetwork SKAdNetworkIdentifier av6w8kgt66.skadnetwork SKAdNetworkIdentifier b9bk5wbcq9.skadnetwork SKAdNetworkIdentifier bxvub5ada5.skadnetwork SKAdNetworkIdentifier c3frkrj4fj.skadnetwork SKAdNetworkIdentifier c6k4g5qg8m.skadnetwork SKAdNetworkIdentifier cg4yq2srnc.skadnetwork SKAdNetworkIdentifier cj5566h2ga.skadnetwork SKAdNetworkIdentifier cp8zw746q7.skadnetwork SKAdNetworkIdentifier cs644xg564.skadnetwork SKAdNetworkIdentifier cstr6suwn9.skadnetwork SKAdNetworkIdentifier dbu4b84rxf.skadnetwork SKAdNetworkIdentifier dkc879ngq3.skadnetwork SKAdNetworkIdentifier dzg6xy7pwj.skadnetwork SKAdNetworkIdentifier e5fvkxwrpn.skadnetwork SKAdNetworkIdentifier ecpz2srf59.skadnetwork SKAdNetworkIdentifier eh6m2bh4zr.skadnetwork SKAdNetworkIdentifier ejvt5qm6ak.skadnetwork SKAdNetworkIdentifier f38h382jlk.skadnetwork SKAdNetworkIdentifier f73kdq92p3.skadnetwork SKAdNetworkIdentifier f7s53z58qe.skadnetwork SKAdNetworkIdentifier feyaarzu9v.skadnetwork SKAdNetworkIdentifier g28c52eehv.skadnetwork SKAdNetworkIdentifier g2y4y55b64.skadnetwork SKAdNetworkIdentifier g6gcrrvk4p.skadnetwork SKAdNetworkIdentifier ggvn48r87g.skadnetwork SKAdNetworkIdentifier glqzh8vgby.skadnetwork SKAdNetworkIdentifier gta8lk7p23.skadnetwork SKAdNetworkIdentifier gta9lk7p23.skadnetwork SKAdNetworkIdentifier hb56zgv37p.skadnetwork SKAdNetworkIdentifier hdw39hrw9y.skadnetwork SKAdNetworkIdentifier hs6bdukanm.skadnetwork SKAdNetworkIdentifier k674qkevps.skadnetwork SKAdNetworkIdentifier kbd757ywx3.skadnetwork SKAdNetworkIdentifier kbmxgpxpgc.skadnetwork SKAdNetworkIdentifier klf5c3l5u5.skadnetwork SKAdNetworkIdentifier krvm3zuq6h.skadnetwork SKAdNetworkIdentifier lr83yxwka7.skadnetwork SKAdNetworkIdentifier ludvb6z3bs.skadnetwork SKAdNetworkIdentifier m297p6643m.skadnetwork SKAdNetworkIdentifier m5mvw97r93.skadnetwork SKAdNetworkIdentifier m8dbw4sv7c.skadnetwork SKAdNetworkIdentifier mlmmfzh3r3.skadnetwork SKAdNetworkIdentifier mls7yz5dvl.skadnetwork SKAdNetworkIdentifier mp6xlyr22a.skadnetwork SKAdNetworkIdentifier mqn7fxpca7.skadnetwork SKAdNetworkIdentifier mtkv5xtk9e.skadnetwork SKAdNetworkIdentifier n38lu8286q.skadnetwork SKAdNetworkIdentifier n66cz3y3bx.skadnetwork SKAdNetworkIdentifier n6fk4nfna4.skadnetwork SKAdNetworkIdentifier n9x2a789qt.skadnetwork SKAdNetworkIdentifier nzq8sh4pbs.skadnetwork SKAdNetworkIdentifier p78axxw29g.skadnetwork SKAdNetworkIdentifier ppxm28t8ap.skadnetwork SKAdNetworkIdentifier prcb7njmu6.skadnetwork SKAdNetworkIdentifier pwa73g5rt2.skadnetwork SKAdNetworkIdentifier pwdxu55a5a.skadnetwork SKAdNetworkIdentifier qqp299437r.skadnetwork SKAdNetworkIdentifier qu637u8glc.skadnetwork SKAdNetworkIdentifier r45fhb6rf7.skadnetwork SKAdNetworkIdentifier rvh3l7un93.skadnetwork SKAdNetworkIdentifier rx5hdcabgc.skadnetwork SKAdNetworkIdentifier s39g8k73mm.skadnetwork SKAdNetworkIdentifier s69wq72ugq.skadnetwork SKAdNetworkIdentifier su67r6k2v3.skadnetwork SKAdNetworkIdentifier t38b2kh725.skadnetwork SKAdNetworkIdentifier tl55sbb4fm.skadnetwork SKAdNetworkIdentifier u679fj5vs4.skadnetwork SKAdNetworkIdentifier uw77j35x4d.skadnetwork SKAdNetworkIdentifier v4nxqhlyqp.skadnetwork SKAdNetworkIdentifier v72qych5uu.skadnetwork SKAdNetworkIdentifier v79kvwwj4g.skadnetwork SKAdNetworkIdentifier v9wttpbfk9.skadnetwork SKAdNetworkIdentifier vcra2ehyfk.skadnetwork SKAdNetworkIdentifier vutu7akeur.skadnetwork SKAdNetworkIdentifier w9q455wk68.skadnetwork SKAdNetworkIdentifier wg4vff78zm.skadnetwork SKAdNetworkIdentifier wzmmz9fp6w.skadnetwork SKAdNetworkIdentifier x44k69ngh6.skadnetwork SKAdNetworkIdentifier x5l83yy675.skadnetwork SKAdNetworkIdentifier x8jxxk4ff5.skadnetwork SKAdNetworkIdentifier x8uqf25wch.skadnetwork SKAdNetworkIdentifier xy9t38ct57.skadnetwork SKAdNetworkIdentifier y45688jllp.skadnetwork SKAdNetworkIdentifier y5ghdn5j9k.skadnetwork SKAdNetworkIdentifier yclnxrl5pm.skadnetwork SKAdNetworkIdentifier ydx93a7ass.skadnetwork SKAdNetworkIdentifier z24wtl6j62.skadnetwork SKAdNetworkIdentifier zmvfpc5aq8.skadnetwork SKAdNetworkIdentifier zq492l623r.skadnetwork ``` We've also noticed that when we fetch pods without the `google_mobile_ads: 5.1.0` package, it fetches the latest version of the adapter (v.11.10.0.0). However, when we add `google_mobile_ads: 5.1.0`, it fetches v11.2.0.1 of the adapter.

Additional Info

Relevant links:

  1. AppLovin iOS SDK commit with the update in question.
  2. We tested extensively v4.0.0 on Android and didn't found any issues so far.
alhiwatan commented 2 days ago

@eli1stark, thank you for raising this issue. The AppLovin SDK should not be manually added to your Podfile, as our Flutter package already specifies the certified SDK version. Our documentation has incorrect information about this, which is currently being revised here. So, remove this from your Podfile.

  pod 'AppLovinSDK'

Additionally, the NSUserTrackingUsageDescription key is missing from your Info.plist, and this is required to enable tracking of user activity within the app. Please add it as specified in the documentation.

eli1stark commented 2 days ago

@alhiwatan Thank you so much for providing this information. Does removing pod 'AppLovinSDK' on iOS and implementation 'com.example.adapter:version' on Android apply only to v4.0.0, or to any version of AppLovin including v3.11.1?

alhiwatan commented 1 day ago

@eli1stark, it applies to all the plugin versions, including v3.11.1.

eli1stark commented 21 hours ago

@alhiwatan Thank you. It's still not building with the recommended changes, but I think this is due to a hard Google Ads version requirement set by AppLovin. The Google Ads plugin is not supporting it yet which causes fetching of the older version via pods.