Reputation: 1
I have a pod project, containing an example that demonstrates the usage of the pod. The bitcode enabled setting is set to yes, both on the example and Pod targets. The following is the Podfile of the example:
use_frameworks!
platform :ios, '10.0'
target 'MyPod_Example' do
pod 'MyPod', :path => '../'
target 'MyPod_Tests' do
inherit! :search_paths
end
end
The example app runs well on the Simulator, but while trying to run it on an iPhone 6S, I get the following build error:
ld: -bundle and -bitcode_bundle (Xcode setting ENABLE_BITCODE=YES) cannot be used together clang: error: linker command failed with exit code 1 (use -v to see invocation).
How do I fix this? Another project that I have that has the same pod, but downloads the pod from its repo works fine on iPhone, with bitcode enabled. The following shows the Podfile structure of the app that works:
source '<my pod spec repo>'
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '10.0'
target 'MyPodTest' do
use_frameworks!
# Pods for MyPodTest
pod 'MyPod'
target 'MyPodTestTests' do
inherit! :search_paths
# Pods for testing
end
target 'MyPodTestUITests' do
inherit! :search_paths
# Pods for testing
end
end
Upvotes: 0
Views: 620
Reputation: 16841
The -bitcode_bundle
flag being passed to ld
is described in the error message ("Xcode setting ENABLE_BITCODE=YES"), but the -bundle
flag is not, which can make this confusing and hard to debug.
If you look at the lines preceding this error, you will likely see two important ones:
These two lines are the real meat of your problem. Your bundle, which formerly had no binary files in it (only PNGs, XIBs, and other resources), now has a binary file. One that was created by Xcode. Because this binary was created as part of a resource bundle target, it's compiled as a CFBundleExecutable using the -bundle
flag, which is incompatible with ENABLE_BITCODE
. Instead of disabling bitcode, though, you should prevent this binary from being generated in the first place.
This binary is being created by Apple Generic Versioning. To get rid of it, go to your build settings tab (on your resource bundle target), click the "all" button to see all settings, then search for "versioning system". Change this from "Apple Generic" to "None". Resource bundles do not properly support versioning.
Upvotes: 7