1

I have an iOS app developed in Swift 2.1.1 with Xcode 7.2. The app runs perfectly and Xcode creates an archive with no problem, but upon uploading it to the app store (iTunes Connect) I get the following error:

ERROR ITMS-90207: "Invalid Bundle. The bundle at 'My App Name.app' does not contain a bundle executable."

I have tried any suggestions I could find with no improvement whatsoever. How do I fix this issue? How can I find the cause? Is there a workaround?

I use several libraries with CocoaPods, my Podfile:

platform :ios, '8.0'
use_frameworks!

target 'My App Name' do
    pod 'RealmSwift'
    pod 'SwiftDateExtension'
    pod "JDFTooltips"
end
target 'My App NameTests' do
    pod 'RealmSwift'
end

My Info.plist:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>CFBundleDevelopmentRegion</key>
    <string>en</string>
    <key>CFBundleExecutable</key>
    <string>$(EXECUTABLE_NAME)</string>
    <key>CFBundleIdentifier</key>
    <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
    <key>CFBundleInfoDictionaryVersion</key>
    <string>6.0</string>
    <key>CFBundleName</key>
    <string>$(PRODUCT_NAME)</string>
    <key>CFBundlePackageType</key>
    <string>APPL</string>
    <key>CFBundleShortVersionString</key>
    <string>1.0</string>
    <key>CFBundleSignature</key>
    <string>????</string>
    <key>CFBundleVersion</key>
    <string>1</string>
    <key>LSRequiresIPhoneOS</key>
    <true/>
    <key>NSHumanReadableCopyright</key>
    <string>Text removed</string>
    <key>NSLocationAlwaysUsageDescription</key>
    <string>Text removed</string>
    <key>UILaunchStoryboardName</key>
    <string>Launch Screen</string>
    <key>UIMainStoryboardFile</key>
    <string>Main</string>
    <key>UIRequiredDeviceCapabilities</key>
    <array>
        <string>armv7</string>
    </array>
    <key>UISupportedInterfaceOrientations</key>
    <array>
        <string>UIInterfaceOrientationPortrait</string>
        <string>UIInterfaceOrientationLandscapeLeft</string>
        <string>UIInterfaceOrientationLandscapeRight</string>
    </array>
</dict>
</plist>

I tried any suggestion I could find including:

  • Bundle id is set in app target, re-added info.plist (source)
  • CFBundleExecutable is set in the Info.plist (source)
  • Device connected or not makes no difference (source)
  • Disabling bit codes
  • I went into the archive to ensure it contains an executable and the Plist file links to it (from what I can gather) correctly. Even removed spaces in the name to ensure that's not the issue.
Martijn Hols
  • 1,470
  • 1
  • 10
  • 21
  • Fun fun. Made a completely new project, carefully moved all files to it and ran another `pod install` on a copy of the podfile. Same issue after archiving and uploading it so unlikely to be a configuration error. Considering my next step now, may create another new project with just enough to send it to iTunes Connect to see if it's an issue with Xcode 7.2, CocoaPods or something else. – Martijn Hols Dec 29 '15 at 16:17

1 Answers1

1

Turns out the NSHumanReadableCopyright broke the Info.plist. Completely removing the key from the Info.plist solved the issue (removing just the © character wasn't enough).

I think it's a fair suggestion to anyone experiencing a similar issue to try to submit an archive with a default, unmodified, Info.plist to see if that works. From my experience you can submit as many times as you want so don't hesitate to experiment.

I added the key because Apple suggests doing so in their documentation: https://developer.apple.com/library/ios/documentation/IDEs/Conceptual/AppDistributionGuide/ConfiguringYourApp/ConfiguringYourApp.html#//apple_ref/doc/uid/TP40012582-CH28-SW29. Seems weird and stupid for their verification process to break and point to the executable when they can't interpret the Info.plist.

Martijn Hols
  • 1,470
  • 1
  • 10
  • 21