Version Support

For PSPDFKit for iOS, we generally support n-1 versions of Apple’s iOS operating system. iOS is a fast-moving target, and Apple is rather aggressive in moving to newer versions. There’s also an important difference in behavior depending upon which SDK version the application is linked to:

  • PSPDFKit 8 for iOS — made for Xcode 10.x (SDK 12), works with iOS 10.x/11.x/12.x. We plan to drop iOS 10 in Q1 2019, depending on iOS 11/12 adoption.
  • PSPDFKit 7 for iOS — made for Xcode 9.x (SDK 11), works with iOS 10.x/11.x/(12*). iOS 9 has been dropped in 7.6.0. Preliminary iOS 12 support has been added in 7.7.
  • PSPDFKit 6 for iOS — made for Xcode 8.x (SDK 10), works with iOS 9.x/10.x/(11*)
  • PSPDFKit 5 for iOS — made for Xcode 7.x (SDK 9), works with iOS 8.x/9.x/(10*)
  • PSPDFKit 4 for iOS — made for Xcode 6.x (SDK 8), works with iOS 7.x/8.x/(9*)
  • PSPDFKit 3 for iOS — made for Xcode 5.x (SDK 7), works with iOS 6.x/7.x/(8*)
  • PSPDFKit 2 for iOS — made for Xcode 4.x (SDK 6), works with iOS 5.x/6.x
  • PSPDFKit 1 for iOS — made for Xcode 4.x (SDK 5), works with iOS 4.x/5.x

Unsure which version you currently use? Learn how you can identify your current version.

Bitcode is included beginning with PSPDFKit 5. Bitcode is architecture dependent, and we ship bitcode slices for both armv7 and arm64. Since bitcode is an intermediary format, it’s larger and is responsible for about 80 percent of our framework size. This code is automatically stripped in the App Store and can easily be removed manually if you do not yet support bitcode or use enterprise installs.

As of January 2017, more than 95 percent of all active devices can use your product if your app supports iOS 10 upward. (iOS 9 is no longer separately disclosed; in November 2017 it was at 6 percent and falling.) See Mixpanel statistics or Apple’s official device statistics for details.

In general, the most recent build will always require the most recent stable version of Xcode, so we can utilize all improvements Apple is making on its tools and compiler infrastructure.

Base SDK

The base SDK is usually tied to a version of Xcode and includes specific compiler and linker versions. Apple encodes the base SDK into your application, and frameworks often have behavior specific to a base SDK version to ensure backward compatibility. This is the main reason PSPDFKit is tied to a specific version of Xcode. We use the latest compiler and language improvements and have a very sophisticated usage of UIKit, which means we often have to tweak things so that everything runs perfectly whenever the base SDK is updated.

Deployment Target

The deployment target is the minimum version supported by your application. If you see this warning, PSPDFKit detected that the Xcode version used is not the one we recommend:

Copy
1
2
3
4
5
PSPDFKit was built to be linked with Xcode X.X. (X).
Your application has been built and linked with a different version (X).
This may result in undefined behavior and bugs and is not supported.
We strongly recommend updating PSPDFKit to a newer version that matches your current Xcode version.
See https://pspdfkit.com/guides/ios/current/announcements/version-support for details.

This is a conservative warning, as Apple changes behavior based on the base SDK, including minor versions. This might trigger bugs in either Apple’s or PSPDFKit’s frameworks. We err on the side of extreme caution and issue a developer-only warning. We do not block you from compiling a version of PSPDFKit with a newer version of the SDK; we just discourage it and print a warning.

Device Support

PSPDFKit for iOS supports all available iOS devices and form factors and includes many adjustments for optimal display for small and large screens: iPhone, iPhone Plus, iPod Touch, iPad, iPad Pro. (Binary ships with armv7/arm64/i386/x86_64.)

The "arm64e" 64-bit ARMv8.3-A architecture has been introduced with the Apple A12 chip. It first appeared in the iPhone XS, XS Max and XR which were introduced on September 12, 2018. This is currently a preview feature on Xcode 10.1. Once Apple makes this stable, we will add this new architecture slice.

The iPhone 4S, iPad 2, iPad 3, iPad mini, and fifth-generation iPod Touch will not run iOS 10.

The iPhone 5, iPad 4, and iPhone 5C will not run iOS 11. (32-bit hardware has been dropped completely.)

All the iPads and iPhones that were compatible with iOS 11 are also compatible with iOS 12.

For a detailed overview, see the iOS Support Matrix.

Troubleshooting 64-bit Requirements

Apple requires 64-bit binaries starting 1 February 2015. Support for 32-bit binaries was droppped with iOS 11. If your target deployment target is iOS 11 or later, you must have arm64 in your Info.plist file. Make sure it contains the following entry:

1
2
3
4
<key>UIRequiredDeviceCapabilities</key>
<array>
    <string>arm64</string>
</array>

The App Store indicates this as ERROR ITMS-90502: "Invalid Bundle. Apps that only contain the arm64 slice must also have 'arm64' in the list of UIRequiredDeviceCapabilities in Info.plist."

Wikipedia’s List of iOS devices also features an in-depth capability overview.