Friday, December 18, 2015

Xcode 7.1 iOS 9 Build Issue Solutions

Below are solutions to common issues encountered when building an iOS app with Xcode 7.1 and targeting iOS 9.


1. CFBundleExecutable Key Duplication

If your app includes the GooglePlus.bundle and the CFBundleExecutable key is present in its Info.plist, you may encounter the following error during binary upload:

Error:
ITMS-90535: "Unexpected CFBundleExecutable Key. The bundle at 'GooglePlus.bundle' does not contain a bundle executable..."

Solution:

  1. Navigate to GooglePlus.bundle.
  2. Open the Info.plist file and remove the CFBundleExecutable key.
  3. Check inside GooglePlus.bundle for any sub-bundles with their own Info.plist files and repeat this process for those files as well.

If the bundle is part of a third-party framework, contact the framework's developer for an updated version.


2. App Transport Security (ATS) Configuration

iOS 9 introduced App Transport Security (ATS), which enforces stricter network security policies. This may block certain network requests by default.

Steps to Configure ATS:

  1. Open your app's Info.plist.

  2. Add the following keys to bypass ATS globally:

    <key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key> <true/> </dict>

    This setting allows all network requests. Use it cautiously, as it disables ATS protections globally.

  3. If you need to define exceptions for specific domains:

    <key>NSAppTransportSecurity</key> <dict> <key>NSExceptionDomains</key> <dict> <key>example.com</key> <dict> <key>NSIncludesSubdomains</key> <true/> <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key> <true/> </dict> </dict> </dict>

Important Note: If you set NSAllowsArbitraryLoads to true, ensure all domains in NSExceptionDomains are explicitly configured to avoid unintended default behavior.


3. Disabling iPad Multitasking

For iPad apps that do not support multitasking, you must disable this feature. Failure to do so will result in warnings during binary upload.

Option 1: Through Xcode

  • Go to the General tab of your app target.
  • Check the Requires full screen option.

Option 2: Modify Info.plist Add the following key-value pair to disable multitasking programmatically:

<key>UIRequiresFullScreen</key> <true/>

By following these steps, you can address the common build and submission issues encountered with Xcode 7.1 and iOS 9.