Unable to Build iOS w/Appodeal - BUILD ERROR: There was a problem linking the app.

Hi all,

Currently unable to build my iOS app with the Appodeal plugin, though i CAN build with the Appodeal Beta plugin.  I’m using 2019.3548.

Build fails with:

BUILD ERROR: There was a problem linking the app.

Build Settings: https://pastebin.com/tKHdLM8Q

Build output: https://pastebin.com/j2UcEgkf

Any assistance is appreciated.

Is there a reason you’re having to exclude all those files? I don’t think that’s the cause of your issue, but it certainly makes looking at your login and build.settings.

It would be really helpful if your build.settings was formatted properly, without indents it’s really hard to follow and I don’t know what the block of code around Fyber, and CrashAnalytics is about. I’m not familiar with that being added to the iphone.plist table. Can you point to where that code came from?

Rob

Hey Rob,

Formatted Build.settings: https://pastebin.com/ysKYy3bW

I’m excluding all those files because they’re included in a remote asset bundling solution I developed.  Need them to be included in Simulator but excluded on device. 

The Fabric and Crashlytics were leftovers from using the Crashlytics plugin in the marketplace, either way, I removed it and just got the same build result.

Filled with duplicate symbol errors like this one:

duplicate symbol '\_zipOpen2\_64' in: /Users/user916368/Desktop/Builds/Beta/Remember LITE.app/.build/plugin.appodeal.Flurry/FlurrySDK.framework/FlurrySDK(libExternalSDKs.a-armv7-master.o)

Oddly enough these look like the same errors I was getting when trying to build with Scott H’s Firebase plugin. Even though I removed the Firebase plugin the errors continue.

https://forums.coronalabs.com/topic/76483-the-plugin-firebaseanalytics-does-not-work-with-appodeal-admob-on-ios/#entry403866

I’m using MacInCloud, could my cloud mac be caching something perhaps?

It seems like some networks have collisions with zip plugin. Such issues are very hard to mitigate…

Hi Vlad,

Confirmed.  I removed “plugin.zip” block from my build.settings and it built perfectly fine.

I was going to launch this weekend but I 100% need the zip plugin to go live.  Can anything be done?

Note, building Appodeal w/zip plugin on Android works.

I was able to build successfully using Appodeal Beta plugin instead.

This should be fixed in live version now. Also, I’m working on updating Appodeal plugin, should be up soon.

Great. Thanks for the follow up. Are updates to plugins published anywhere?

Any plans to get Appodeal working with Amazon?

Yes. It is harder than it seems. Working on both right now.

Vlads, Appodeal plugin is updated but I still get linking errors. 

This is very weird. What version of Corona are you using? Can you please share you build.settings and what error you’re getting again (old links had expired)

Vlads, I’m using the latest Corona. However, when first got this error, I was using older versions of Corona. 

This is my build.settings:

-- -- For more information on build.settings, see the Project Build Settings guide at: -- https://docs.coronalabs.com/guide/distribution/buildSettings -- settings = { orientation = { -- Supported values for orientation: -- portrait, portraitUpsideDown, landscapeLeft, landscapeRight default = "portrait", supported = { "portrait", }, }, -- -- Android section -- android = { usesPermissions = { "android.permission.INTERNET", "android.permission.GET\_ACCOUNTS", "android.permission.ACCESS\_COARSE\_LOCATION", "android.permission.ACCESS\_FINE\_LOCATION", "android.permission.RECEIVE\_BOOT\_COMPLETED", "android.permission.VIBRATE", "android.permission.WRITE\_EXTERNAL\_STORAGE" }, applicationChildElements = { [[\<meta-data android:name="com.google.android.gms.ads.APPLICATION\_ID" android:value="ca-app-pub-000000-00000"/\>]], [[\<meta-data android:name="com.google.firebase.messaging.default\_notification\_icon" android:resource="@drawable/corona\_statusbar\_icon\_default"/\>]], }, strings = { ["google\_app\_id"]= "1:0000:android:00000" }, useGoogleServicesJson = true, }, -- -- iOS section -- iphone = { xcassets = "Images.xcassets", plist = { GADApplicationIdentifier = "ca-app-pub-00000~0000", UIStatusBarHidden = false, UILaunchStoryboardName = "LaunchScreen", NSAppTransportSecurity = { NSAllowsArbitraryLoads=true }, UIBackgroundModes = { "remote-notification" }, FirebaseAppDelegateProxyEnabled = false, CFBundleDisplayName = "Permainan Peribahasa", CFBundleName = "mybundlename", NSLocationAlwaysUsageDescription = "Ads code requires location data to show more related ad", NSBluetoothAlwaysUsageDescription = "This app would like to access bluetooth.", }, }, -- -- Plugins section -- plugins = { ["plugin.utf8"] = { publisherId = "com.coronalabs" }, ["plugin.gpgs.v2"] = { publisherId = "com.coronalabs", supportedPlatforms = { ["android"] = true, } }, ["plugin.notifications.v2"] = { publisherId = "com.coronalabs" }, ["plugin.firebaseAnalytics"] = { publisherId = "tech.scotth", }, ["CoronaProvider.native.popup.social"] = { publisherId = "com.coronalabs" }, ["CoronaProvider.native.popup.activity"] = { publisherId = "com.coronalabs", supportedPlatforms = { iphone=true } }, ['plugin.appodeal.base'] = { publisherId = 'com.coronalabs' }, ['plugin.appodeal.AdColony'] = { publisherId = 'com.coronalabs' }, ['plugin.appodeal.AmazonAds'] = { publisherId = 'com.coronalabs' }, ['plugin.appodeal.AppLovin'] = { publisherId = 'com.coronalabs' }, ['plugin.appodeal.Appnext'] = { publisherId = 'com.coronalabs' }, ['plugin.appodeal.Chartboost'] = { publisherId = 'com.coronalabs' }, ['plugin.appodeal.FacebookAudience'] = { publisherId = 'com.coronalabs' }, ['plugin.appodeal.Flurry'] = { publisherId = 'com.coronalabs' }, ['plugin.appodeal.GoogleAdMob'] = { publisherId = 'com.coronalabs' }, ['plugin.appodeal.InMobi'] = { publisherId = 'com.coronalabs' }, ['plugin.appodeal.IronSource'] = { publisherId = 'com.coronalabs' }, ['plugin.appodeal.Mobvista'] = { publisherId = 'com.coronalabs' }, ['plugin.appodeal.MyTarget'] = { publisherId = 'com.coronalabs' }, ['plugin.appodeal.Ogury'] = { publisherId = 'com.coronalabs' }, ['plugin.appodeal.StartApp'] = { publisherId = 'com.coronalabs' }, ['plugin.appodeal.Smaato'] = { publisherId = 'com.coronalabs' }, ['plugin.appodeal.Tapjoy'] = { publisherId = 'com.coronalabs' }, ['plugin.appodeal.TwitterMoPub'] = { publisherId = 'com.coronalabs' }, ['plugin.appodeal.Unity'] = { publisherId = 'com.coronalabs' }, ['plugin.appodeal.Vungle'] = { publisherId = 'com.coronalabs' }, ['plugin.appodeal.Yandex'] = { publisherId = 'com.coronalabs' }, }, -- -- Project section -- excludeFiles = { -- Exclude unnecessary files for each platform all = { "Icon.png", "Icon-\*dpi.png", "Images.xcassets", }, android = { "LaunchScreen.storyboardc", }, }, }

I’m including the last few lines of the log:

 /Users/ielmar/Desktop/Permainan Peribahasa.app/.build/plugin.firebaseAnalytics/libGoogleAppMeasurement.a(encoder\_common\_101f61bd209c1aca3aef10f6a9a8beb0.o) duplicate symbol '\_nano\_encode\_repeated\_bytes' in: /Users/ielmar/Desktop/Permainan Peribahasa.app/.build/plugin.appodeal.GoogleAdMob/GoogleAppMeasurement.framework/GoogleAppMeasurement(encoder\_common\_9b74fb4ee71a984d5435e89f7dbe85e7.o) /Users/ielmar/Desktop/Permainan Peribahasa.app/.build/plugin.firebaseAnalytics/libGoogleAppMeasurement.a(encoder\_common\_101f61bd209c1aca3aef10f6a9a8beb0.o) duplicate symbol '\_nano\_encode\_string' in: /Users/ielmar/Desktop/Permainan Peribahasa.app/.build/plugin.appodeal.GoogleAdMob/GoogleAppMeasurement.framework/GoogleAppMeasurement(encoder\_common\_9b74fb4ee71a984d5435e89f7dbe85e7.o) /Users/ielmar/Desktop/Permainan Peribahasa.app/.build/plugin.firebaseAnalytics/libGoogleAppMeasurement.a(encoder\_common\_101f61bd209c1aca3aef10f6a9a8beb0.o) duplicate symbol '\_nano\_encode\_repeated\_string' in: /Users/ielmar/Desktop/Permainan Peribahasa.app/.build/plugin.appodeal.GoogleAdMob/GoogleAppMeasurement.framework/GoogleAppMeasurement(encoder\_common\_9b74fb4ee71a984d5435e89f7dbe85e7.o) /Users/ielmar/Desktop/Permainan Peribahasa.app/.build/plugin.firebaseAnalytics/libGoogleAppMeasurement.a(encoder\_common\_101f61bd209c1aca3aef10f6a9a8beb0.o) duplicate symbol '\_nano\_two\_pass\_encoding' in: /Users/ielmar/Desktop/Permainan Peribahasa.app/.build/plugin.appodeal.GoogleAdMob/GoogleAppMeasurement.framework/GoogleAppMeasurement(encoder\_common\_9b74fb4ee71a984d5435e89f7dbe85e7.o) /Users/ielmar/Desktop/Permainan Peribahasa.app/.build/plugin.firebaseAnalytics/libGoogleAppMeasurement.a(encoder\_common\_101f61bd209c1aca3aef10f6a9a8beb0.o) duplicate symbol '\_nano\_encode\_repeated\_uint64' in: /Users/ielmar/Desktop/Permainan Peribahasa.app/.build/plugin.appodeal.GoogleAdMob/GoogleAppMeasurement.framework/GoogleAppMeasurement(encoder\_common\_9b74fb4ee71a984d5435e89f7dbe85e7.o) /Users/ielmar/Desktop/Permainan Peribahasa.app/.build/plugin.firebaseAnalytics/libGoogleAppMeasurement.a(encoder\_common\_101f61bd209c1aca3aef10f6a9a8beb0.o) ld: 964 duplicate symbols for architecture armv7 clang: error: linker command failed with exit code 1 (use -v to see invocation) Nov 26 07:59:01.961 BUILD ERROR: There was a problem linking the app. Check the console for more information. Nov 26 07:59:01.962 Nov 26 07:59:02.015 iOS build failed (12) after 816 seconds Nov 26 07:59:02.127 ERROR: Build Failed: There was a problem linking the app. Check the console for more information. Nov 26 07:59:02.128

Disable firebase analytics for now.

When I disable firebase analytics, I get the same error for Notification plugin. When I disable it, I get errors when launching the app. So for now the solution is to disable GoogleAdmob. 

Scott wrote on the other thread that he emailed you to ask about information about the build process so that he can adapt his plugins to it. It seems he hasn’t found a solution to the problem. 

Any progress? 

Hey. We’re working on it, but this is more complicated than it seems. For now I would recommend to use notification-v1 plugin for iOS, it does same, if you’re not using Firebase for notifications.

&nbsp;&nbsp;&nbsp; plugins = &nbsp;&nbsp;&nbsp; { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ["plugin.notifications.v2"] = &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; publisherId = "com.coronalabs", &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; supportedPlatforms = { android=true ,iphone=false, ["iphone-sim"]=false }, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }, &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ["plugin.notifications"] = &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; publisherId = "com.coronalabs", &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; supportedPlatforms = { android=false ,iphone=true, ["iphone-sim"]=true }, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }, &nbsp;&nbsp;&nbsp; },

Waiting for fix for AdMob to use it with firebaseAnalytics
How it’s going?

Vlads, this option didn’t work for me. I got the below errors which are similar to the previous ones: 

libNotificationsV2Plugin.a(IPhoneNotificationEvent.o) duplicate symbol 'IPhoneRemoteNotificationEvent::IPhoneRemoteNotificationEvent(NSDictionary\*, NotificationEvent::\_ApplicationState)' in: /Users/ielmar/Desktop/BurclerCL.app/.build/plugin.notifications/libnotifications.a(IPhoneNotificationEvent.o) /Users/ielmar/Desktop/BurclerCL.app/.build/plugin.notifications.v2/libNotificationsV2Plugin.a(IPhoneNotificationEvent.o) duplicate symbol 'IPhoneRemoteNotificationEvent::IPhoneRemoteNotificationEvent(NSDictionary\*, NotificationEvent::\_ApplicationState)' in: /Users/ielmar/Desktop/BurclerCL.app/.build/plugin.notifications/libnotifications.a(IPhoneNotificationEvent.o) /Users/ielmar/Desktop/BurclerCL.app/.build/plugin.notifications.v2/libNotificationsV2Plugin.a(IPhoneNotificationEvent.o) duplicate symbol 'IPhoneLocalNotificationEvent::IPhoneLocalNotificationEvent(UILocalNotification\*, NotificationEvent::\_ApplicationState)' in: /Users/ielmar/Desktop/BurclerCL.app/.build/plugin.notifications/libnotifications.a(IPhoneNotificationEvent.o) /Users/ielmar/Desktop/BurclerCL.app/.build/plugin.notifications.v2/libNotificationsV2Plugin.a(IPhoneNotificationEvent.o) duplicate symbol 'IPhoneLocalNotificationEvent::IPhoneLocalNotificationEvent(UILocalNotification\*, NotificationEvent::\_ApplicationState)' in: /Users/ielmar/Desktop/BurclerCL.app/.build/plugin.notifications/libnotifications.a(IPhoneNotificationEvent.o) /Users/ielmar/Desktop/BurclerCL.app/.build/plugin.notifications.v2/libNotificationsV2Plugin.a(IPhoneNotificationEvent.o) ld: 1009 duplicate symbols for architecture armv7 clang: error: linker command failed with exit code 1 (use -v to see invocation)

It seems like it is trying to bolt link v1 and v2 plugin on iOS.

Yeah, I also thought of it. I think it happens during the built process. So it doesn’t ignore plugin.notifications.v2 even if we use “iphone=false” for the plugin.