Daniele B
Daniele B

Reputation: 20442

iOS 11 app submission: "Too many symbol files"

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

Answers (4)

Yogesh Saindane
Yogesh Saindane

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.

  1. Open Xcode → Organizer window → Select App → Select Archive which has this issue.
  2. Right-click on that archive → select "Show in Finder"
  3. Right-click on the archive file → select "Show Package Contents"
  4. In the "dSYMs" folder you will see several files.
  5. Open terminal and change path to "dSYMs"
  6. Now run this command ‘dwarfdump -u FileName.dSYM’ this will give you list of UUID strings which includes (arm64), (arm7) etc. (Check for all files if you want)

Step 2:

  1. Go to Project → Build settings → search for ‘Valid Architecture’ and set it to ‘arm64’ (Debug and Release both). enter image description here

  2. Go to Project → Build settings → search for ‘debug information format’ and set it to ‘DWARF’ enter image description here

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>

enter image description here

Step 5:

Now prepare build and repeat “Step 1” to check UUID strings in you build.

Upvotes: 1

Onnmir
Onnmir

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

podfile screenshot showing post_install

Upvotes: 5

Christopher Nassar
Christopher Nassar

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. enter image description here

Upvotes: 3

Rolf Warnecke
Rolf Warnecke

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

Related Questions