iOS build fails: ld: 191 duplicate symbols for architecture arm64


#1

Hello,
I am getting the duplicate symbols error, when trying to do an ios build. The cordova-plugin-console has been removed. I can create an iOS build for a new project. I can also create an iOS build for a new project when it has the same package.json file as the project with the build that fails. I have added and removed the platform many times.

Here is the last part of the error message:

duplicate symbol OBJC_METACLASS$_GCDWebServerStreamedResponse in:
/Users/ptangen/Library/Developer/Xcode/DerivedData/VersaMed-epqygypepiwhdwggwesytxwaoxpb/Build/Intermediates.noindex/ArchiveIntermediates/VersaMed/IntermediateBuildFilesPath/VersaMed.build/Debug-iphoneos/VersaMed.build/Objects-normal/arm64/GCDWebServerStreamedResponse-4E83BA1E4CB49ABD.o
/Users/ptangen/Library/Developer/Xcode/DerivedData/VersaMed-epqygypepiwhdwggwesytxwaoxpb/Build/Intermediates.noindex/ArchiveIntermediates/VersaMed/IntermediateBuildFilesPath/VersaMed.build/Debug-iphoneos/VersaMed.build/Objects-normal/arm64/GCDWebServerStreamedResponse-3CA0A943E48E5960.o
ld: 191 duplicate symbols for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

** ARCHIVE FAILED **

The following build commands failed:
Ld /Users/ptangen/Library/Developer/Xcode/DerivedData/VersaMed-epqygypepiwhdwggwesytxwaoxpb/Build/Intermediates.noindex/ArchiveIntermediates/VersaMed/InstallationBuildProductsLocation/Applications/VersaMed.app/VersaMed normal arm64
(1 failure)
Error: Error code 65 for command: xcodebuild with args: -xcconfig,/Users/ptangen/Development/versamed/platforms/ios/cordova/build-debug.xcconfig,-workspace,VersaMed.xcworkspace,-scheme,VersaMed,-configuration,Debug,-destination,generic/platform=iOS,-archivePath,VersaMed.xcarchive,archive,CONFIGURATION_BUILD_DIR=/Users/ptangen/Development/versamed/platforms/ios/build/device,SHARED_PRECOMPS_DIR=/Users/ptangen/Development/versamed/platforms/ios/build/sharedpch

[ERROR] An error occurred while running cordova build ios (exit code 1).

Here is the package.json file:

{
“name”: “cemsApp”,
“version”: “0.0.1”,
“author”: “Ionic Framework”,
“homepage”: “http://ionicframework.com/”,
“private”: true,
“scripts”: {
“clean”: “ionic-app-scripts clean”,
“preinstall”: “./switch-to-preprod.sh”,
“build”: “ionic-app-scripts build”,
“lint”: “ionic-app-scripts lint”,
“ionic:build”: “ionic-app-scripts build”,
“ionic:serve”: “ionic-app-scripts serve”
},
“dependencies”: {
"@angular/common": “5.0.3”,
"@angular/compiler": “5.0.3”,
"@angular/compiler-cli": “5.0.3”,
"@angular/core": “5.0.3”,
"@angular/forms": “5.0.3”,
"@angular/http": “5.0.3”,
"@angular/platform-browser": “5.0.3”,
"@angular/platform-browser-dynamic": “5.0.3”,
"@ionic-native/app-version": “^4.4.2”,
"@ionic-native/device": “^4.1.0”,
"@ionic-native/file": “^4.2.1”,
"@ionic-native/core": “4.4.0”,
"@ionic-native/splash-screen": “4.4.0”,
"@ionic-native/status-bar": “4.4.0”,
"@ionic/storage": “2.1.3”,
“angular2-signaturepad”: “^2.6.1”,
“cordova-android”: “6.3.0”,
“cordova-ios”: “4.5.4”,
“cordova-plugin-app-version”: “^0.1.9”,
“cordova-plugin-compat”: “^1.2.0”,
“cordova-plugin-device”: “^1.1.7”,
“cordova-plugin-file”: “^4.3.3”,
“cordova-plugin-splashscreen”: “^4.1.0”,
“cordova-plugin-statusbar”: “^2.3.0”,
“cordova-plugin-whitelist”: “^1.3.3”,
“cordova-plugin-wkwebview-engine”: “git+https://github.com/ionic-team/cordova-plugin-wkwebview-engine.git”,
“file”: “^0.2.2”,
“font-awesome”: “^4.7.0”,
“ionic-angular”: “3.9.2”,
“ionic-native”: “^2.9.0”,
“ionic-plugin-keyboard”: “^2.2.1”,
“ionic2-auto-complete”: “^1.6.0-alpha”,
“ionic2-mask-directive”: “^1.0.3”,
“ionicons”: “3.0.0”,
“json-logic-js”: “^1.2.1”,
“lie”: “^3.1.1”,
“ng2-pdf-viewer”: “^1.1.5”,
“pouchdb”: “^6.3.4”,
“rxjs”: “5.5.2”,
“sw-toolbox”: “3.6.0”,
“zone.js”: “0.8.18”,
“cordova-plugin-ionic-webview”: “^1.1.16”,
“webpack”: “^3.10.0”
},
“devDependencies”: {
"@ionic/app-scripts": “3.1.5”,
“typescript”: “2.4.2”
},
“description”: “Versamed”,
“cordova”: {
“plugins”: {
“cordova-plugin-whitelist”: {},
“cordova-plugin-file”: {},
“cordova-plugin-splashscreen”: {},
“cordova-plugin-device”: {},
“cordova-plugin-statusbar”: {},
“ionic-plugin-keyboard”: {},
“cordova-plugin-app-version”: {},
“cordova-plugin-ionic-webview”: {}
},
“platforms”: [
“ios”
]
},
“config”: {
“ionic_copy”: “./config/copy.config.js”,
“ionic_sass”: “./config/sass.config.js”
}
}

I have tried eliminating the dependencies and plugins one by one to see if that would allow the build to run, but no luck.

Any help would be appreciated.

Paul


#2

What is your ionic info output?
What is your ionic cordova plugins list output?


#3

Hi Sujan,
Thanks for the reply. here is the Ionic Info:

cli packages: (/usr/local/lib/node_modules)

@ionic/cli-utils  : 1.19.0
ionic (Ionic CLI) : 3.19.0

global packages:

cordova (Cordova CLI) : 7.1.0 

local packages:

@ionic/app-scripts : 3.1.5
Cordova Platforms  : ios 4.5.4
Ionic Framework    : ionic-angular 3.9.2

System:

Android SDK Tools : 26.1.1
ios-deploy        : 1.9.2 
ios-sim           : 6.0.0 
Node              : v8.6.0
npm               : 5.5.1 
OS                : macOS Sierra
Xcode             : Xcode 9.2 Build version 9C40b 

Environment Variables:

ANDROID_HOME : /usr/local/share/android-sdk

Misc:

backend : pro

and the list of plugins:

cordova-plugin-app-version 0.1.9 "AppVersion"
cordova-plugin-compat 1.2.0 "Compat"
cordova-plugin-device 1.1.7 "Device"
cordova-plugin-file 4.3.3 "File"
cordova-plugin-ionic-webview 1.1.16 "cordova-plugin-ionic-webview"
cordova-plugin-splashscreen 4.1.0 "Splashscreen"
cordova-plugin-statusbar 2.3.0 "StatusBar"
cordova-plugin-whitelist 1.3.3 "Whitelist"
cordova-plugin-wkwebview-engine 1.1.6 "Cordova WKWebView Engine"
ionic-plugin-keyboard 2.2.1 “Keyboard”

What do you think?

Paul


#4

I read here that some one found plugins were conflicting.

cordova-plugin-ionic-webview
and
cordova-plugin-wkwebview-engine

look similar, so I removed one and the build worked!!! Then I added it again, just to see and the build still works. I am not sure what is going on, but happy the build is running again.

Thanks for your help.

Paul


#5

Yep, those two plugins shouldn’t really be installed at the same time as the ionic-webview one is actually a enhanced version of the other one.