Ibm MobileFirst Linker error at compile time - ios

I'm developing an Hybrid Application with IBM MobileFirst Platform Fondation 8.0, Ionic2 and Cordova.
On iOS I found a problem at compilation time, the same problem happens also using the default mobile first ionic template and so I cannot to upload software on emulator.
This is my configuration:
Cordova CLI: 6.3.1
Ionic Framework Version: 2.0.0-beta.11
Ionic CLI Version: 2.1.0
Ionic App Lib Version: 2.0.0-beta.20
ios-deploy version: 1.8.6
ios-sim version: 5.0.8
OS: Mac OS X Yosemite
Node Version: v4.4.3
Xcode version: Xcode 6.4 Build version 6E35b
At compile time I obtain the follow link error:
1] Undefined symbols for architecture x86_64:
std::terminate()", referenced from:
___clang_call_terminate in IBMMobileFirstPlatformFoundationHybrid(ZipArchive.o)
___cxa_begin_catch", referenced from:
___clang_call_terminate in IBMMobileFirstPlatformFoundationHybrid(ZipArchive.o)
___gxx_personality_v0", referenced from:
[...]
On internet I found an advice to add in Xcode linker option: -lc++
2] Undefined symbols for architecture x86_64:
_crc32", referenced from:
-[ZipArchive addFileToZip:newname:] in IBMMobileFirstPlatformFoundationHybrid(ZipArchive.o)
_deflate", referenced from:
_zipWriteInFileInZip in IBMMobileFirstPlatformFoundationHybrid(zip.o)
[...]
On internet I found an advice to add in Xcode linker option: -lc++
Resolved adding -lz into linker options.
3] duplicate symbol _llvm.cmdline in:
Torna a Casa/Plugins/cordova-plugin-mfp/IBMMobileFirstPlatformFoundationJSONStore.framework/IBMMobileFirstPlatformFoundationJSONStore(JSONStoreValidator.o)
Torna a Casa/Plugins/cordova-plugin-mfp/IBMMobileFirstPlatformFoundationJSONStore.framework/IBMMobileFirstPlatformFoundationJSONStore(JSONStoreIndexer.o)
It can be resolved removing -ObjC but removing it Application crash with the follow error:
[__NSDictionaryM cordovaSettingForKey:]: unrecognized selector sent to instance 0x7f814d2081a0
Somewhere I found a suggest to add ENABLE_BITCODE = NO but it is already.
Thanks.
Daniele

You need not do any of those workarounds.
Upgrade your Xcode to v7.0 at the very least.
Then make sure you follow these basic steps to use MobileFirst in Ionic apps: https://mobilefirstplatform.ibmcloud.com/blog/2016/07/19/integrating-mobilefirst-foundation-8-in-ionic-based-apps/

Related

React Native FBSDK IOS build is failing

Undefined symbols for architecture x86_64:
"___darwin_check_fd_set_overflow", referenced from:
_RAND_poll in libcrypto.a(rand_unix.o)
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
React Native version: 0.63
Xcode version: 11.3.1
react-native-fbsdk: 2.0.0
1° Solution (Recommended):
I also have this problem, it seems to occur in the Xcode 11.3.1 version. One way to fix is updating the version to 11.6.
2° Solution:
Comment all flipper function in podfile
Remove the function InitializeFlipper and Imports from appDelegate:
Run pod install:
Clean project;
Try again: react-native run-ios

Undefined symbols for architecture armv7: "query_call_back(callback_func_type)"

I've a problem to build iOS project after recently upgraded my project from Unity 5.6.4 to 2018.4.19f1. Everything is ok to export, build and run on my device, but if I archive the exported project, then the error occurs:
Undefined symbols for architecture armv7:
"query_call_back(callback_func_type)", referenced from:
il2cpp::vm::MetadataCache::Initialize() in
libil2cpp.a(External_il2cpp_il2cpp_libil2cpp_vm_6.o)
il2cpp::vm::MetadataCache::Initialize() in
libil2cpp.a(External_il2cpp_il2cpp_libil2cpp_vm_6.o) ld: symbol(s) not
found for architecture armv7 clang: error: linker command failed with
exit code 1 (use -v to see invocation)
Environments:
Unity 2018.4.19f1
Xcode 10.1 (10B61)
Appreciate if anyone can help!
Solution:
After hours of upgrade unity again to 2019.3.4f1 and fix mirror error.
Finally, Xcode archive the project successful!
This looks like a bug, try to upgrade Unity to the latest stable version.

Firebase FCM with google plus cordova plugin conflict - IOS

I am using
"cordova-plugin-fcm-with-dependecy-updated": "^2.4.0",
"cordova-plugin-googleplus": "^8.0.0",
I have added IOS platform
"cordova-ios": "^5.0.1",
and when I try to build it in XCode it fails with below error.
Undefined symbols for architecture x86_64:
"_OBJC_CLASS_$_GSDK_GTMLogger", referenced from:
objc-class-ref in GoogleIPhoneUtilities(GIPReachability.o)
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Note: I have tried everything mentioned in this question.
Firebase Undefined symbols for architecture x86_64
Build works if I remove any one of the plugins.
To anyone wondering, I solved it by downgrading to
`"cordova-plugin-googleplus": "^7.0.1",`
Latest version 8.0.0 is using Pods to manage dependencies which will be global/project-wide, while 7.0.1 handles dependencies locally i.e only for that plugin. So it won't affect any other plugin(s) using those same dependencies.
With this version it has worked perfectly.
"cordova-plugin-googleplus": "^7.0.1"
It should also be taken into account that sometimes it is necessary to add REVERSED_CLIENT_ID
Xcode -> info -> URL Types (add this)

Apple Mach-O Linker Error - Undefined symbols for architecture x86_64: "_UISceneWillEnterForegroundNotification" and "___isPlatformVersionAtLeast"

I am using https://github.com/tinycreative/react-native-intercom and went through the installation there and https://developers.intercom.com/installing-intercom/docs/ios-installation
This worked fine for a while and just started all of a sudden.
"_UISceneWillEnterForegroundNotification", referenced from:
+[ICMBridge load] in Intercom(ICMBridge.o)
"___isPlatformVersionAtLeast", referenced from:
-[IntercomSDK_IntercomConversationCollectionViewController insetsForAccessoryView] in Intercom(IntercomConversationCollectionViewController.o)
+[IntercomSDK_ITBUpload createUploadForMediaAsset:completion:] in Intercom(ITBUpload.o)
+[IntercomSDK_ITBUpload processImageDataForUpload:mediaAsset:info:imageUploadDataUTI:completion:] in Intercom(ITBUpload.o)
-[IntercomSDK_IIMInputAccessoryView createConstraints] in Intercom(IIMInputAccessoryView.o)
-[IntercomSDK_IIMInputButtonContainerView createConstraints] in Intercom(IIMInputButtonContainerView.o)
-[IntercomSDK_IIMMediaViewController updateCollectionViewContentInsets] in Intercom(IIMMediaViewController.o)
-[IntercomSDK_IIMMediaViewController layoutExpandButton] in Intercom(IIMMediaViewController.o)
...
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
On 12-09-2019, Intercom released sdk version 5.5.0, which supports iOS 13.
https://github.com/intercom/intercom-ios/releases/tag/5.5.0
UISceneWillEnterForegroundNotification and isPlatformVersionAtLeast are in iOS SDK 13, so would require Xcode 11 beta. I think you are getting the error because you are using an earlier Xcode version like Xcode 10.3 etc.
Ideally Intercom should have conditionally supported iOS 13 stuff so that the code wouldn't have broken on iOS sdk versions earlier than 13.0

Updating Google AdMob SDK from 7.7.0 to 7.8.0 Undefined Symbols Error

I have updated my Google AdMob SDK from 7.7.0 to 7.8.0. After that I am getting this error:
Undefined symbols for architecture x86_64:
"_OBJC_CLASS_$_SFSafariViewController", referenced from:
objc-class-ref in GoogleMobileAds(flat-x86_64)
ld: symbol(s) not found for architecture x86_64 clang: error: linker
command failed with exit code 1 (use -v to see invocation)
I have added all these frameworks:
AdSupport,
AudioToolbox,
AVFoundation,
CoreGraphics,
CoreMedia,
CoreTelephony,
EventKit,
EventKitUI,
MediaPlayer,
MessageUI,
StoreKit,
SystemConfiguration
Before I updated this SDK it was working fine. This is in my Framework Search Path in Build Phases
$(inherited)
$(PROJECT_DIR)/SDKs
$(PROJECT_DIR)
$(PROJECT_DIR)/SDKs/GoogleMobileAdsSdkiOS-7.8.0
I have added:
SafariServices.framework
CoreBluetooth.framework
It is working
In version 7.8.0 new dependencies to the frameworks CoreBluetooth and SafariServices were added, so adding these solved the issue this time.
The GoogleMobileAds SDK (aka AdMob SDK) has many dependencies and they are being added (and sometimes removed) in successive releases. For instance, JavaScriptCore framework is a new dependency starting with version 7.13.0 released on 2016-10-17. If you run into this issue again check for updates to the framework dependencies in the release notes log:
https://firebase.google.com/docs/admob/release-notes

Resources