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.
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.
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.
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/
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.
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.
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.
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.
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.
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.