58

I have a problem while archiving my app.

I created a new target for an iOS 8 extension.

When I archive the app, I receive a warning.

The warning is

"PBXCp Warning", "warning: skipping copy phase strip, binary is code signed: /Users/Library/Developer/Xcode/DerivedData/App/Build/Intermediates/ArchiveInter mediates/AppName/IntermediateBuildFilesPath/UninstalledProducts/AppExtappex/AppE xt"

The app is in Objective-C.

mfaani
  • 33,269
  • 19
  • 164
  • 293
gianpispi
  • 611
  • 1
  • 5
  • 10

9 Answers9

25

Check the "Strip Debug Symbols During Copy" option in your Xcode target's build settings. Its saying that it cant strip debug symbols because the extension was already signed.

perezda
  • 496
  • 4
  • 11
8

If you create a brand new sample project and a Today Extension in Xcode 6.2, the default values are set to NO for stripping of debug symbols.

enter image description here

Collin
  • 6,720
  • 4
  • 26
  • 29
8

Copied from: https://stackoverflow.com/a/30459703/736384

"Compiled code usually contains debug information. This debug stuff is helpful for inspecting running code in debugger, but less so for the optimized code you would ship in distribution builds. Therefore it gets stripped out when doing an Archive build.

The problem here is that PBXCp is unable to strip out debug symbols from signed binaries because this would invalidate the digital signature. So if you have a project that was created before Xcode 6.3 you will now get a warning like this.

To fix the warning simply change both values to NO. Removing them does not work because the default value is still YES for both. The project templates that came with Xcode 6.3 have these turned off by default. Only projects that were started with older templates still have YES on the Release line."

Source: https://www.cocoanetics.com/2015/04/skipping-copy-phase-strip/

Community
  • 1
  • 1
Luis Ascorbe
  • 1,985
  • 1
  • 22
  • 36
6

The framework / extension is already stripped and code signed by default. The application project cannot detect that the framework has already been stripped and throws a harmless warning. You should not disable it or your application will not be stripped.

Monstieur
  • 7,992
  • 10
  • 51
  • 77
  • this seems like it could be the correct explanation because none of the other answers resolved the issue. but do you have any documentation that "the framework / extension is already stripped and code signed by default?" – Ilias Karim May 19 '15 at 17:49
  • 1
    The projects (framework and app) in the workspace are individually built. The app project references only the output binary from the framework project. In a release configuration the framework binary will be stripped (if the setting is enabled) and code signed. The same thing happens for the app project, except the framework binary is re-signed with the app project certificate. You could technically supply the app project with a debug framework binary that is unstripped and unsigned and the app project would strip and sign it. – Monstieur May 19 '15 at 22:00
  • when you say you should not disable it, do you mean we should leave its value as `NO` or `YES`? – mfaani Jun 29 '20 at 16:38
3

There seems to be some confusion surrounding the effect of the Strip Debug Symbols During Copy build setting, I recommend reading this article for additional information: Skipping Copy Phase Strip.

Here are my key takeaways from researching this question:

  • When you create a new project with Xcode 6.2 or later the values inserted into the project file are NO for both of the default build configurations (Debug and Release) for this setting.
  • Setting the value to YES in the Release configuration and the performing a Product Archive has no effect on the generated application binary size (I encourage you to verify this through a test on your own projects).
  • Debug symbols used for Sybolication of iOS crash reports come from an external .dsym file which is separate from the application bundle so I would not expect the symbol table to be included in the binary.
Mark Edington
  • 6,484
  • 3
  • 33
  • 33
1

Check the "Strip Style"option in Xcode target's build Setting. If it is "Non-Global Symbols", change it to "All Symbols". this can solve the problem, but I don't know if there are other problems caused by this change.

1

In the "Deployment" section in your target´s build setting look for Strip Debug Symbols During Copy and set it to YES for any production builds.

enter image description here

ehrpaulhardt
  • 1,607
  • 12
  • 19
  • I set the Release to Yes in WatchKit Extension and WatchKit App, and got more of the same warnings, this time for the Extension as well as the App proper. I also did not see the AppStore line in the Deployment section. – Andrew Duncan Apr 23 '15 at 17:44
  • @AndrewDuncan The **AppStore** configuration is not created by XCode it was added by the develop or another tool. It's something I've seen fairly commonly when looking at iOS projects. It provides more flexibility when doing automated App Store builds. – Mark Edington May 08 '15 at 23:04
0

What worked for me was the following:

I edited the scheme that I was archiving. In that window, I selected 'Run' and then the tab 'Info'. In 'Build Configuration' I had changed it to 'Release'. I just changed it to 'Debug' (option by default) and that warning went away.

I hope this helps.

ajpallares
  • 777
  • 4
  • 16
-2

This is probably because you archive with the the DEBUG scheme. If you select the RELEASE scheme, then the option "strip debug symbols during copy" is set to YES and you do not have this warning.

I suggest to archive with DEBUG settings for beta testing, but with RELEASE settings for publication in the App Store.

Darth Philou
  • 134
  • 1
  • 9