I need to release a framework with bitcode enabled which turns out as a hassle. I set 'Enable Bitcode' in the project's settings to 'YES' and it builds cleanly for both a real device and a simulator.
I wanted to test the library so I integrated it to a new app I created for this purpose but now it only build for simulators. When I try to build for a real device I get:
ld: '/path/to/Framework.framework/Company(File.o)' does not contain bitcode. You must rebuild it with bitcode enabled (Xcode setting ENABLE_BITCODE), obtain an updated library from the vendor, or disable bitcode for this target. for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Like I said, I had built it with Bitcode enabled so I'm not sure why this happens.
Any ideas? thanks
AFAIK, when you build app with Xcode it includes Bitcode only when you make archive, the reason - decrease compile time when just want to debug or test the app/library.
To ensure that Xcode emits bitcode at each build you can add
-fembed-bitcode
flag toOther C flags
andOther linker flags
:Also, the easiest way to check if the binary contains bitcode is to use
otool
andgrep
:otool -l binary_name | grep __LLVM
you will see one or more
segname __LLVM
entries if it does have bitcode or empty output if does not.Another way with RunScript code: (build setting -- Build Phases RunScript)
For enabling bitcode using xcodebuild command you have to add
find the below command