Contact Us

Use the form on the right to contact us.

You can edit the text in this area, and change where the contact form on the right submits to, by entering edit mode using the modes on the bottom right. 


Oak Ridge, TN, 37830
United States

Swift-Snips

Filtering by Tag: iOS9

Error : does not contain bitcode!

Wade Cantley

Ok, so here is the full error.


ld: ‘/Users/chriscantley/Documents/GITXCodeRepository/ MyMobi/Pods/Google/Libraries/libGGLAnalytics.a(GGLContext+Analytics.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)

But why?

Turns out that not all of the frameworks I am using are Bitcode savvy. 

But what is this Bitcode thing?

Having Bitcode on compiles an app out to a format that allows apple to thin out the application and make it more efficient.  This is on by default as far as I can tell in XCode 7.  However if you are using frameworks that don't use bitcode, this conflict will come up.  So evidently it needs to be all or nothing when it comes to bitcode.  

In this case I am using Google analytics and it is NOT using bitcode.  So the solution turns out to be pretty simple.

  1. Find bitcode under your build settings
    1. Click on your project
    2. Select you app target.
    3. select "Build Settings"
    4. Search for "bitcode" which should present the setting under "Build Options"
    5. Set "Enable Bitcode" to "No"

1. Click on your project

1. Click on your project

2. Select your app target

2. Select your app target

3) select "Build Settings"

3) select "Build Settings"


4) Search for "Bitcode"

4) Search for "Bitcode"

5) Set "Enable Bitcode" to "no"

5) Set "Enable Bitcode" to "no"


Archive and the error should go away.

 

The files libswiftCoreLocation.dylib, etc... don’t match

Wade Cantley

The ongoing struggle to build under a new IDE, Language, and iOS version at the same damn time.

Like anyone else who had to jump into the pool, I have had to clean up code that was no longer in compliance with the way things are to be done.

On submitting I ran into this issue where library files don't match when submitting to apple.  

Here is some background:

  1. I am using Cocoa Pods
  2. I have installed Google Analytics framework.
  3. I have installed Henake image cacheing framework. 
  4. I have installed SwiftyJSON data management and conversion framework.

These frameworks by the way are Great!

But now there is this... error.

How I felt getting this response from Apple

Dear developer,
We have discovered one or more issues with your recent delivery for “MyMobi Home Finder”. To process your delivery, the following issues must be corrected:

Invalid Swift Support - The files libswiftCoreData.dylib, libswiftCoreLocation.dylib don’t match

/Payload/MyMobi.app/Frameworks/libswiftCoreData.dylib, /Payload/MyMobi.app/Frameworks/libswiftCoreLocation.dylib. Make sure the files are correct, rebuild your app, and resubmit it. Don’t apply post-processing to /Payload/MyMobi.app/Frameworks/libswiftCoreData.dylib, /Payload/MyMobi.app/Frameworks/libswiftCoreLocation.dylib.

Once these issues have been corrected, you can then redeliver the corrected binary.

Regards,
The App Store team

After I embraced the situation, I did a search to hunt for a solution.  

Solution

  1. In XCode, Do a search for "local swift_runtime_libs" across your project.  It should bring up a single result in a file called "Pods-[yourProjectHere]-frameworks.sh"
  2. You want to silence the following code because it appears to be embedding the Swift runtime libraries , libraries that don't currently match what Apple expects. (see picture)
  3. Save it and resubmit.

The code looks like this...

  # Embed linked Swift runtime libraries
#local basename
#  basename="$(basename "$1" | sed -E s/\\..+// && exit ${PIPESTATUS[0]})"
#  local swift_runtime_libs
#  swift_runtime_libs=$(xcrun otool -LX "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/${basename}.framework/${basename}" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u  && exit ${PIPESTATUS[0]})
#  for lib in $swift_runtime_libs; do
#    echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\""
#    rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}"
#    code_sign_if_enabled "${destination}/${lib}"
#  done

Thanks to the people who answered at this link.
 

That should do it but we will see what Apple says.