Reputation: 1949
I have created a sample Framework in Swift, xcode 7.1. The framework is then built for Profiling, released version. Released framework then added(embedded) to an iOS test app.
The app builds fine, but when trying to archive it. An error occurs, stating "bitcode bundle could not be generated because '.../Test/FW.framework/FW' was built without full bitcode. All frameworks and dylibs for bitcode must be generated from Xcode Archive or Install build for architecture arm64"
The Framework and app projects are on default settings, Bitcode enabled for both.
To make sure Framework have bitcode, this command on Framework
"otool -l FW.framework/FW | grep __LLVM"
yields
segname __LLVM
segname __LLVM
segname __LLVM
segname __LLVM
What am I missing? I have included both projects here, you can download them and try archiving.
Upvotes: 15
Views: 15395
Reputation: 11184
You can make the following if you can build the framework (for example if you use your own framework)
This will allow your framework to provide the required bitcode.
Another alternative option may be applicable if you dont have watchOS and Apple TV (according to docs)
For iOS apps, bitcode is the default, but optional. If you provide bitcode, all apps and frameworks in the app bundle need to include bitcode. For watchOS and tvOS apps, bitcode is required.
this option require to set ENABLE_BITCODE
for every target in buildSetting to NO
, but as expected this forbid to use bitcode functionality.
More about bitcode here
Upvotes: 36
Reputation: 50129
xcode requires that bitcode for all embedded frameworks is generated during archiving.
Copying the release build of framework/dylib isn't enough
do
archive the framework and THEN use the archived version of the framework from then on.
to get xcode to archive a framework (normally it only archives apps), set the build setting 'skip install' to NO for the framework target!
Upvotes: 37