fullstackduck
fullstackduck

Reputation: 1949

xcode 7.1 swift framework app builds but not archiving

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

Answers (2)

hbk
hbk

Reputation: 11184

You can make the following if you can build the framework (for example if you use your own framework)

enter image description here

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

Daij-Djan
Daij-Djan

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

Related Questions