If the project uses react-native-zip-archive and CodePush with Cocoapods, the SSZipArchive will have the duplicate issue.
duplicate symbol _fill_fopen_filefunc in:
.../SSZipArchive/libSSZipArchive.a(mz_compat.o)
.../RNZipArchive/libRNZipArchive.a(ioapi.o)
duplicate symbol _fill_fopen64_filefunc in:
.../SSZipArchive/libSSZipArchive.a(mz_compat.o)
.../RNZipArchive/libRNZipArchive.a(ioapi.o)
duplicate symbol _zipCloseFileInZipRaw in:
.../RNZipArchive/libRNZipArchive.a(zip.o)
.../SSZipArchive/libSSZipArchive.a(mz_compat.o)
duplicate symbol _unzGetGlobalComment in:
.../RNZipArchive/libRNZipArchive.a(unzip.o)
.../SSZipArchive/libSSZipArchive.a(mz_compat.o)
duplicate symbol _unzSetOffset in:
.../RNZipArchive/libRNZipArchive.a(unzip.o)
.../SSZipArchive/libSSZipArchive.a(mz_compat.o)
duplicate symbol _unzGetOffset in:
.../RNZipArchive/libRNZipArchive.a(unzip.o)
.../SSZipArchive/libSSZipArchive.a(mz_compat.o)
duplicate symbol _unzGetFilePos in:
.../RNZipArchive/libRNZipArchive.a(unzip.o)
.../SSZipArchive/libSSZipArchive.a(mz_compat.o)
duplicate symbol _unzGoToFilePos in:
.../RNZipArchive/libRNZipArchive.a(unzip.o)
.../SSZipArchive/libSSZipArchive.a(mz_compat.o)
duplicate symbol _zipWriteInFileInZip in:
.../RNZipArchive/libRNZipArchive.a(zip.o)
.../SSZipArchive/libSSZipArchive.a(mz_compat.o)
duplicate symbol _zipCloseFileInZip in:
.../RNZipArchive/libRNZipArchive.a(zip.o)
.../SSZipArchive/libSSZipArchive.a(mz_compat.o)
duplicate symbol _unzGetGlobalInfo in:
.../RNZipArchive/libRNZipArchive.a(unzip.o)
.../SSZipArchive/libSSZipArchive.a(mz_compat.o)
duplicate symbol _unzGetCurrentFileInfo in:
.../RNZipArchive/libRNZipArchive.a(unzip.o)
.../SSZipArchive/libSSZipArchive.a(mz_compat.o)
duplicate symbol _unzOpen in:
.../RNZipArchive/libRNZipArchive.a(unzip.o)
.../SSZipArchive/libSSZipArchive.a(mz_compat.o)
duplicate symbol _zipOpen in:
.../RNZipArchive/libRNZipArchive.a(zip.o)
.../SSZipArchive/libSSZipArchive.a(mz_compat.o)
duplicate symbol _unztell in:
.../RNZipArchive/libRNZipArchive.a(unzip.o)
.../SSZipArchive/libSSZipArchive.a(mz_compat.o)
duplicate symbol _unzClose in:
.../RNZipArchive/libRNZipArchive.a(unzip.o)
.../SSZipArchive/libSSZipArchive.a(mz_compat.o)
duplicate symbol _zipClose in:
.../RNZipArchive/libRNZipArchive.a(zip.o)
.../SSZipArchive/libSSZipArchive.a(mz_compat.o)
duplicate symbol _unzGoToNextFile in:
.../RNZipArchive/libRNZipArchive.a(unzip.o)
.../SSZipArchive/libSSZipArchive.a(mz_compat.o)
duplicate symbol _unzGoToFirstFile in:
.../RNZipArchive/libRNZipArchive.a(unzip.o)
.../SSZipArchive/libSSZipArchive.a(mz_compat.o)
duplicate symbol _unzOpenCurrentFile in:
.../RNZipArchive/libRNZipArchive.a(unzip.o)
.../SSZipArchive/libSSZipArchive.a(mz_compat.o)
duplicate symbol _unzCloseCurrentFile in:
.../RNZipArchive/libRNZipArchive.a(unzip.o)
.../SSZipArchive/libSSZipArchive.a(mz_compat.o)
duplicate symbol _unzReadCurrentFile in:
.../RNZipArchive/libRNZipArchive.a(unzip.o)
.../SSZipArchive/libSSZipArchive.a(mz_compat.o)
duplicate symbol _unzLocateFile in:
.../RNZipArchive/libRNZipArchive.a(unzip.o)
.../SSZipArchive/libSSZipArchive.a(mz_compat.o)
duplicate symbol _unzOpenCurrentFilePassword in:
.../RNZipArchive/libRNZipArchive.a(unzip.o)
.../SSZipArchive/libSSZipArchive.a(mz_compat.o)
duplicate symbol _unzGetLocalExtrafield in:
.../RNZipArchive/libRNZipArchive.a(unzip.o)
.../SSZipArchive/libSSZipArchive.a(mz_compat.o)
duplicate symbol _zipCloseFileInZipRaw64 in:
.../RNZipArchive/libRNZipArchive.a(zip.o)
.../SSZipArchive/libSSZipArchive.a(mz_compat.o)
duplicate symbol _unzSetOffset64 in:
.../RNZipArchive/libRNZipArchive.a(unzip.o)
.../SSZipArchive/libSSZipArchive.a(mz_compat.o)
duplicate symbol _unzGetOffset64 in:
.../RNZipArchive/libRNZipArchive.a(unzip.o)
.../SSZipArchive/libSSZipArchive.a(mz_compat.o)
duplicate symbol _unzGetFilePos64 in:
.../RNZipArchive/libRNZipArchive.a(unzip.o)
.../SSZipArchive/libSSZipArchive.a(mz_compat.o)
duplicate symbol _unzGoToFilePos64 in:
.../RNZipArchive/libRNZipArchive.a(unzip.o)
.../SSZipArchive/libSSZipArchive.a(mz_compat.o)
duplicate symbol _unzGetGlobalInfo64 in:
.../RNZipArchive/libRNZipArchive.a(unzip.o)
.../SSZipArchive/libSSZipArchive.a(mz_compat.o)
duplicate symbol _unzGetCurrentFileInfo64 in:
.../RNZipArchive/libRNZipArchive.a(unzip.o)
.../SSZipArchive/libSSZipArchive.a(mz_compat.o)
duplicate symbol _unzOpen64 in:
.../RNZipArchive/libRNZipArchive.a(unzip.o)
.../SSZipArchive/libSSZipArchive.a(mz_compat.o)
duplicate symbol _zipOpen64 in:
.../RNZipArchive/libRNZipArchive.a(zip.o)
.../SSZipArchive/libSSZipArchive.a(mz_compat.o)
duplicate symbol _unzOpen2_64 in:
.../RNZipArchive/libRNZipArchive.a(unzip.o)
.../SSZipArchive/libSSZipArchive.a(mz_compat.o)
duplicate symbol _zipOpen2_64 in:
.../RNZipArchive/libRNZipArchive.a(zip.o)
.../SSZipArchive/libSSZipArchive.a(mz_compat.o)
duplicate symbol _unzOpenCurrentFile3 in:
.../RNZipArchive/libRNZipArchive.a(unzip.o)
.../SSZipArchive/libSSZipArchive.a(mz_compat.o)
duplicate symbol _unzOpen2 in:
.../RNZipArchive/libRNZipArchive.a(unzip.o)
.../SSZipArchive/libSSZipArchive.a(mz_compat.o)
duplicate symbol _zipOpen2 in:
.../RNZipArchive/libRNZipArchive.a(zip.o)
.../SSZipArchive/libSSZipArchive.a(mz_compat.o)
duplicate symbol _unzOpenCurrentFile2 in:
.../RNZipArchive/libRNZipArchive.a(unzip.o)
.../SSZipArchive/libSSZipArchive.a(mz_compat.o)
I know there was a subset approach, that was removed, but there's no documentation how to work around it in a good way.
Assuming you're using RN 0.60 here, the easiest solution would probably be to disable auto linking for this library on iOS.
react-native.config.js
module.exports = {
dependencies: {
'react-native-code-push': {
platforms: {
ios: null,
},
},
},
}
https://github.com/react-native-community/cli/blob/master/docs/autolinking.md#how-can-i-disable-autolinking-for-unsupported-library
Still using 0.59... :/
@sidferreira Have you fixed it? Same error here.
@FansPro Nop... I had to give up for now
This script fixed it for me:
echo "Modifying Codepush iOS HEADER_SEARCH_PATHS..."
sed -ie 's/\([[:space:]]HEADER_SEARCH_PATHS = (\)$/\1"$(SRCROOT)\/..\/..\/react-native-zip-archive",/g' ./node_modules/react-native-code-push/ios/CodePush.xcodeproj/project.pbxproj
echo "Removing Codepush iOS zip sources..."
sed -ie '/\/\* SSZipArchive\.m in Sources \*\//d' ./node_modules/react-native-code-push/ios/CodePush.xcodeproj/project.pbxproj
sed -ie '/\/\* aescrypt\.c in Sources \*\//d' ./node_modules/react-native-code-push/ios/CodePush.xcodeproj/project.pbxproj
sed -ie '/\/\* aeskey\.c in Sources \*\//d' ./node_modules/react-native-code-push/ios/CodePush.xcodeproj/project.pbxproj
sed -ie '/\/\* aestab\.c in Sources \*\//d' ./node_modules/react-native-code-push/ios/CodePush.xcodeproj/project.pbxproj
sed -ie '/\/\* entropy\.c in Sources \*\//d' ./node_modules/react-native-code-push/ios/CodePush.xcodeproj/project.pbxproj
sed -ie '/\/\* fileenc\.c in Sources \*\//d' ./node_modules/react-native-code-push/ios/CodePush.xcodeproj/project.pbxproj
sed -ie '/\/\* hmac\.c in Sources \*\//d' ./node_modules/react-native-code-push/ios/CodePush.xcodeproj/project.pbxproj
sed -ie '/\/\* prng\.c in Sources \*\//d' ./node_modules/react-native-code-push/ios/CodePush.xcodeproj/project.pbxproj
sed -ie '/\/\* pwd2key\.c in Sources \*\//d' ./node_modules/react-native-code-push/ios/CodePush.xcodeproj/project.pbxproj
sed -ie '/\/\* sha1\.c in Sources \*\//d' ./node_modules/react-native-code-push/ios/CodePush.xcodeproj/project.pbxproj
sed -ie '/\/\* ioapi\.c in Sources \*\//d' ./node_modules/react-native-code-push/ios/CodePush.xcodeproj/project.pbxproj
sed -ie '/\/\* mztools\.c in Sources \*\//d' ./node_modules/react-native-code-push/ios/CodePush.xcodeproj/project.pbxproj
sed -ie '/\/\* unzip\.c in Sources \*\//d' ./node_modules/react-native-code-push/ios/CodePush.xcodeproj/project.pbxproj
sed -ie '/\/\* zip\.c in Sources \*\//d' ./node_modules/react-native-code-push/ios/CodePush.xcodeproj/project.pbxproj
echo "Successfully modified Codepush iOS project! This fixes this issue: https://github.com/microsoft/react-native-code-push/issues/1630"
You can add this to package.json as install script.
@SimonSimya it might work, but still far from an optimal solution
is there any good solution to fix this problem?
occurred error Duplicate symbols JWT & SSZipArchive
react-native: 0.60.5
react-native-code-push": 5.7.0
# react-native.config.js
module.exports = {
project: {
ios: {},
android: {}
},
dependencies: {
"react-native-code-push": {
platforms: {
android: null // disable autolink for android
}
}
},
assets: ["App/Fonts"]
}
Podfile
# Uncomment the next line to define a global platform for your project
platform :ios, '9.0'
require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules'
target 'MyApp' do
# Uncomment the next line if you're using Swift or would like to use dynamic frameworks
# use_frameworks!
pod 'React', :path => '../node_modules/react-native/'
pod 'React-Core', :path => '../node_modules/react-native/React'
pod 'React-DevSupport', :path => '../node_modules/react-native/React'
pod 'React-RCTActionSheet', :path => '../node_modules/react-native/Libraries/ActionSheetIOS'
pod 'React-RCTAnimation', :path => '../node_modules/react-native/Libraries/NativeAnimation'
pod 'React-RCTBlob', :path => '../node_modules/react-native/Libraries/Blob'
pod 'React-RCTImage', :path => '../node_modules/react-native/Libraries/Image'
pod 'React-RCTLinking', :path => '../node_modules/react-native/Libraries/LinkingIOS'
pod 'React-RCTNetwork', :path => '../node_modules/react-native/Libraries/Network'
pod 'React-RCTSettings', :path => '../node_modules/react-native/Libraries/Settings'
pod 'React-RCTText', :path => '../node_modules/react-native/Libraries/Text'
pod 'React-RCTVibration', :path => '../node_modules/react-native/Libraries/Vibration'
pod 'React-RCTWebSocket', :path => '../node_modules/react-native/Libraries/WebSocket'
pod 'React-cxxreact', :path => '../node_modules/react-native/ReactCommon/cxxreact'
pod 'React-jsi', :path => '../node_modules/react-native/ReactCommon/jsi'
pod 'React-jsiexecutor', :path => '../node_modules/react-native/ReactCommon/jsiexecutor'
pod 'React-jsinspector', :path => '../node_modules/react-native/ReactCommon/jsinspector'
# Explicitly include Yoga if you are using RN >= 0.42.0
pod 'yoga', :path => '../node_modules/react-native/ReactCommon/yoga'
# Third party deps podspec link
pod 'DoubleConversion', :podspec => '../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec'
pod 'glog', :podspec => '../node_modules/react-native/third-party-podspecs/glog.podspec'
pod 'Folly', :podspec => '../node_modules/react-native/third-party-podspecs/Folly.podspec'
pod 'RNImageCropPicker', :path => '../node_modules/react-native-image-crop-picker'
pod 'A0Auth0', :path => '../node_modules/react-native-auth0'
pod 'RNGestureHandler', :path => '../node_modules/react-native-gesture-handler'
pod 'RNScreens', :path => '../node_modules/react-native-screens'
pod 'react-native-camera', path: '../node_modules/react-native-camera'
pod 'BVLinearGradient', :path => '../node_modules/react-native-linear-gradient'
pod 'RNReanimated', :path => '../node_modules/react-native-reanimated'
pod 'RNFBApp', :path => '../node_modules/@react-native-firebase/app'
pod 'RNFBAnalytics', :path => '../node_modules/@react-native-firebase/analytics'
pod 'RNSVG', :path => '../node_modules/react-native-svg'
pod 'GoogleIDFASupport', '~> 3.14.0'
use_native_modules!
end
post_install do |installer|
installer.pods_project.targets.each do |target|
# The following is needed to ensure the "archive" step works in XCode.
# It removes React & Yoga from the Pods project, as it is already included in the main project.
# Without this, you'd see errors when you archive like:
# "Multiple commands produce ... libReact.a"
# "Multiple commands produce ... libyoga.a"
targets_to_ignore = %w(React SSZipArchive JWT)
if targets_to_ignore.include? target.name
target.remove_from_project
end
if target.name == 'react-native-config'
phase = target.project.new(Xcodeproj::Project::Object::PBXShellScriptBuildPhase)
phase.shell_script = "cd ../../"\
" && RNC_ROOT=./node_modules/react-native-config/"\
" && export SYMROOT=$RNC_ROOT/ios/ReactNativeConfig"\
" && ruby $RNC_ROOT/ios/ReactNativeConfig/BuildDotenvConfig.ruby"
target.build_phases << phase
target.build_phases.move(phase,0)
end
end
end
steps to reproduce
react-native link
cd ios & pod install
I am facing the same issue..
Updating react-native-zip-archive and react-native-code-push will do the trick!
Updating
react-native-zip-archiveandreact-native-code-pushwill do the trick!
@sidferreira I did not use react-native-zip-archive at all, and upgraded react-native-code-push to v5.7.0. It does not work.
Updating
react-native-zip-archiveandreact-native-code-pushwill do the trick!
works after added the latest react-native-zip-archive
@sidferreira react native 0.59. Have you fixed it? Same error here.
For me removing the folder "rn-project/ios/build" and rebuilding worked.
Most helpful comment
Still using 0.59... :/