Reputation: 20442
I am targeting iOS 11, and now after submitting the app I receive an email from Apple with the warning "Too many symbol files".
It looks like CocoaPods frameworks are included for unneeded architectures.
Can anyone show what the proper settings are, in order to avoid including unneeded frameworks on iOS 11?
Upvotes: 8
Views: 5722
Reputation: 31
It is the issue of valid architecture and occurs when you have ‘Valid Architecture’ like armv7 and armv7s. To resolved this Follow the steps
Step 1: First we check that where we get “UUID strings” reported by Apple.
Step 2:
Go to Project → Build settings → search for ‘Valid Architecture’ and set it to ‘arm64’ (Debug and Release both).
Go to Project → Build settings → search for ‘debug information format’ and set it to ‘DWARF’
Step 3:
Go to podfile and add below code in it, because Pods have valid architecture arm64, armv7 and armv7s.
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['ENABLE_BITCODE'] = 'NO'
config.build_settings['ARCHS'] = 'arm64'
end
end
end
Step 4:
Got to project's info.plist and add/set ‘UIRequiredDeviceCapabilities’ to ‘arm64’. This is code
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>arm64</string>
</array>
Step 5:
Now prepare build and repeat “Step 1” to check UUID strings in you build.
Upvotes: 1
Reputation: 1030
"Too many symbol files" warning is telling you that your project has more restrictive constraints than the CocoaPods frameworks. You are targeting iOS 11 but your CocoaPods frameworks might have a minimum deployment target that is less than iOS 11.
If that's the case, then add this at the end of your podfile:
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '11.0'
end
end
end
Upvotes: 5
Reputation: 554
To avoid this warning you need to archive only dSYM file of your application but not libraries. For this, you need change build configuration of the libraries do not generate a dSYM file. Just search for "debug information format" in configuration and change it from DWARF with dSYM File to DWARF only. On the screenshot, you will find an example for Stripe iOS framework.
Upvotes: 3
Reputation: 107
If you put the following lines into the podfile you didn't get the warning :
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['DEBUG_INFORMATION_FORMAT'] = 'dwarf'
end
end
end
Upvotes: 2