iOS Device Summary: September 2016 Updates

I’ve updated my iOS Device Summary with hardware announced at the Apple event on September 7, 2016.

Check out the iOS Device Summary page for more info about the idea behind the summary as well as PDF downloads—including optimized files for printing.

A few notes:

Sometimes fall brings new iOS hardware across all product lines. This year, only new iPhone versions were released.

In terms of legacy hardware support, iOS 10 drops support for devices running the A5 and A5X processor. This includes iPhone 4S , which means that there are no devices with a 3.5-inch screen that support iOS 10.

.Don’t feel badly for devices with the A5 chip—they have had a very good run. The iPhone 4S debuted running iOS 5 and iPad 2 debuted with iOS 4.2.1. Both were supported up through iOS 9.

Time will tell if the next version of iOS drops support for A6 and A6X devices. When support for those devices is dropped, iOS devices will be 64-bit only.

In the meantime, of course, it is important to test on older devices running the oldest version of iOS that you support.

I hope you find this version of the chart helpful. •

Chart depicting iOS devices by screen size, processor and supported OS version

 

tvOS and watchOS Device Summary: April Edition

After updating the popular iOS Device Summary in March, it seemed the beginning of April would be a good time to introduce summaries for devices running the most recently introduced Apple operating systems: tvOS and watchOS.

I hope you find these as useful as I have. •

Chart depicting tvOS devices by screen size, processor and supported OS version

Chart depicting watchOS devices by screen size, processor and supported OS version

iOS Device Summary: March 2016 Updates

I’ve updated my iOS Device Summary with hardware announced at the Apple event on March 21, 2016.

Check out the iOS Device Summary page for more info about the idea behind the summary as well as PDF downloads—including optimized files for printing.

A few notes on the newly introduced hardware:

The introduction of the 9.7-inch iPad Pro means even more users will be putting the Apple Pencil and Smart Keyboard through its paces. Even if your app is not a drawing or text-centric, you might consider having at least one size of iPad Pro with these accessories for development and testing.

The iPhone SE brings paris a well-established iOS screen resolution with a faster processor. From a testing perspective, apps that perform well on previous 4-inch devices should perform even better on the new hardware.

Only the display of the 9.7-inch iPad Pro has the new True Tone feature.

The Night Shift feature introduced in iOS 9.3 is available to devices using at least an A7 chip—every device on the 64-bit side of the divide on the summary chart.

I hope you find this version of the chart helpful. •

Chart depicting iOS devices by screen size, processor and supported OS version

 

iOS Device Summary: Fall 2015 Updates

I’ve updated my iOS Device Summary with hardware announced at the Apple event on September 9, 2015. This edition drops iOS 5 and A4-based devices to make way for iOS 9 and the A9 and A9X.

(This update has taken a little while—I’ve been busy helping to build a new cloud computer at Upthere.  I’m excited to say that we launched yesterday. I encourage you to learn more and join the beta at upthere.com.)

Check out the iOS Device Summary page for more info about the idea behind the summary as well as PDF downloads—including optimized files for printing.

The biggest news this fall is the iPad Pro, which introduces the largest iOS screen size ever, but also two new Apple accessories that may be important to test your app with: the Apple Pencil and the Smart Keyboard. On the other new devices, iPhone and iPad screen resolutions remain the same and get faster processors. From a testing perspective, things that perform well on last year’s models should perform even better on the new hardware.

It is also interesting to note that all of the devices that can run iOS 6 are on the 32-bit side of the processor divide.

I hope you find this version of the chart helpful. •

Chart depicting iOS devices by screen size, processor and supported OS version

iOS Device Summary: A8 iPod Touch Update

I’ve updated my iOS Device Summary with the newly announced iPod touch.

You can check out the iOS Device Summary page for more info about the summary plus PDF downloads—including optimized files for printing.

For developers, the iPod touch has been a useful, relatively inexpensive compact device for testing. The previous model was released almost four years ago and sits at the very low end of devices that support iOS 8 and iOS 9.  The new sixth generation iPod touch is a welcome addition as a more affordable testing device with a recent 64-bit processor.  Like previous generations, the new iPod touch has a 4-inch display, so an iPhone is still needed for on-device testing of larger screen resolutions.

It is interesting to note that every iOS device that Apple currently sells, except the iPhone 5c, has a 64-bit processor.

This also means that if you need to acquire older models for testing iOS 8 and iOS 9, you will need to turn to refurbished or used devices.

I hope you find this version of the chart helpful. •

Chart depicting iOS devices by screen size, processor and supported OS version

iOS Device Summary: iOS 9 Update

I’ve updated my iOS Device Summary with the iOS 9 info Apple has publicly posted.

Check out the iOS Device Summary page for the rationale behind the summary plus PDF downloads—including optimized files for printing.

Some things to note from WWDC announcements and Apple product lineup changes:

All devices that support iOS 8 will also support iOS 9.

Apps are currently required to support both 32-bit and 64-bit processors. With iOS 9, the App Store will also accept apps that are 64-bit only. This allows developers to limit deployment of an app to more recent devices with faster CPUs and GPUs. The device summary now has a line showing where 32-bit ends and 64-bit begins.

Finally, devices for testing:

  • At $199, the 16 GB, 5th generation iPod touch is still the most affordable compact iOS 9 device
  • At $299, the 16 GB, WiFi iPad mini 2 is now the most affordable iOS 9 iPad
  • As of 6/19/15, the original iPad mini is discontinued—try used and refurbished devices for low-end iPad testing.

I hope you find this version of the chart helpful. •

Chart depicting iOS devices by screen size, processor and supported OS version

Where I’ll be at WWDC 2015

I’ll be doing a few things next week at WWDC and wanted to pass along my schedule. Hope to see you at one or more of these happenings!

Monday: NeXTEVNT Fundraiser for the Cartoon Art Museum

NeXTEVNT Logo
I’ll be doing a short set of James Dempsey and the Breakpoints songs at this fundraising event at the Cartoon Art Museum.

This event has been a lot of fun each year, always with great speakers and plenty of time to meet and mingle with very interesting folks. If you are a fan of comics, cartoons, or animation — or have an interest in where the technology we use every day comes from — this is a great event for a great cause.

I highly encourage you to check out the details and come to the event.

NeXTEVNT Fundraiser for the Cartoon Art Museum
Monday, June 8th, 4:00 PM – 9:00 PM

Wednesday: LIVE near WWDC 2015 (aka The Big Show!)

Logo for James Dempsey and the Breakpoints, LIVE near WWDC 2015
Our LIVE near WWDC show is the biggest James Dempsey and the Breakpoints performance of the year — and this year’s show is our biggest ever.  Thanks to our fabulous sponsors, we’re at a bigger venue and the drinks are on us!

The event is free, but registration is required.  We are handling admission the way AltConf does.  Registration does not guarantee admission.  For general admission registrations, we will fill the venue on a first come, first admitted basis.

You can read all of the details and register for the event here.

James Dempsey and the Breakpoints, LIVE near WWDC presented by Capital One
Wednesday, June 10th, Doors open at 7:30 PM, show starts at 8:00 PM. Event goes until 10:30 PM

Friday: Closing session at AltConf 2015

AltConf Logo
I’ll be closing out the week at AltConf 2015 again this year with an easy-going look back at the announcements of WWDC 2015 and their possible implications in a session entitled So, That Just Happened.

This session is a talk about the week in review and not a set of James Dempsey and the Breakpoints songs.

However, there may also be a bit involving a ukulele.

AltConf 2015, June 8 – June 12, 2015
Closing Session, Friday, June 12th, 3:15 PM, Theater 15

A Busy WWDC 2015 Week

It will be a busy WWDC week as we walk around with our heads swimming trying to soak in all of the new announcements.

I hope you can make it out to one or more of these events!  And if you do, please say hello! •


Going Upthere

I’m very happy to announce that I have joined the team at Upthere.

Here’s the gist from upthere.com:

Our team is hard at work in Palo Alto, CA, building out the future of the cloud. We can‘t wait to tell you more, but right now we‘re working very quietly. Some really great engineers and designers who‘ve built some of the world‘s most successful products are already here.

Even though I’m now at a stealth mode startup, I’m not dropping completely out of sight.

I’ll still be speaking at conferences and James Dempsey and the Breakpoints will continue performing and writing new songs whenever inspiration strikes.

In fact, I’m gearing up for a spring tour that starts in England and then criss-crosses the USA. At each stop I’ll be speaking and performing in a Breakpoint Jam — a set of songs from our iTunes chart-topping album Backtrace.

I hope you are able to make it out to one of these excellent conferences. If you do, please say hello! •

Learning More About Xcode Build Settings with BuildSettingExtractor

Last week I posted about BuildSettingExtractor, a utility that makes it easy to pull the build settings out of an Xcode project file and into xcconfig build configuration files. (The post also mentions some xcconfig file benefits with links to ‘how to’ information. Read the earlier post here.)

I also wanted BuildSettingExtractor to be useful for anyone who wants to learn more about the build settings in their projects. To that end, the latest version, available on github, generates build setting descriptions gleaned from the installed version of Xcode.

For example:

// Framework Search Paths
// 
// This is a list of paths to folders containing frameworks to be
// searched by the compiler for both included or imported header
// files when compiling C, Objective-C, C++, or Objective-C++, and by
// the linker for frameworks used by the product. Paths are delimited
// by whitespace, so any paths with spaces in them need to be
// properly quoted. [-F]

FRAMEWORK_SEARCH_PATHS = $(DEVELOPER_FRAMEWORKS_DIR) $(inherited)
	

// Info.plist File
// 
// This is the project-relative path to the plist file that contains
// the Info.plist information used by bundles.

INFOPLIST_FILE = BuildSettingExtractorTests/BuildSettingExtractorTests-Info.plist

Inline Build Setting Info

To learn more about build settings, Apple provides the Build Setting Reference (Apple developer documentation links are notoriously fragile, just search for the document) as well as Quick Help in Xcode when a build setting is selected. (In Xcode choose View > Utilities > Show Quick Help Inspector (Cmd-Opt-2))

In addition to these ways of learning more, BuildSettingExtractor gleans the build setting info from Xcode and puts it inline in the generated xcconfig files. This has a few benefits:

  • Read about each build setting without selecting setting one by one in Xcode
  • Read about only the build settings currently set in your project and targets
  • Information about build settings is available wherever you are looking at the xcconfig file: github, text editors, diff tools, etc.

What if I don’t want this lovely but verbose feature?

If you want BuildSettingExtractor to generate pithy xcconfig files without the build setting info, Choose BuildSettingExtractor > Preferences… (Command-,) for the new preferences sheet and turn it off.

BuildSettingExtractor Preferences Sheet

Happy Building! (and a call for help)

I hope you find BuildSettingExtractor useful, either as a learning tool, or to get rolling with xcconfig files. If you do find it useful, please spread the word about it: https://github.com/dempseyatgithub/BuildSettingExtractor.

As for the call for help, if you would like to help out with a basic app icon for BuildSettingExtractor, the utility can emerge from the primordial world of the generic app icon. Contact me if you are interested. •

Generating Xcode Build Configuration Files with BuildSettingExtractor (xcodeproj → xcconfig)

The most recent NSScreencast covered using build configuration files to specify build settings in Xcode. (Episode #154)

Using build configuration files—or xcconfig files as they are known—has some definite benefits.  However, as seen in the screencast, the initial process of copying the current build settings out of an Xcode project into xcconfig files is tedious and potentially error-prone.

Screenshot of Build Setting Extractor 1.0

Nuthin’ fancy. Drop an xcodeproj file on it—it spits out xcconfig files.

To aid in that initial extraction process, I wrote a utility app called BuildSettingExtractor.  It is available on github at https://github.com/dempseyatgithub/BuildSettingExtractor.

The app is a simple droplet utility: drop an xcodeproj file on it, choose a destination folder, BuildSettingExtractor will extract the build settings from the project and generate xcconfig files.

A set of files is generated for each target in the project and for the project itself.  Each set of files includes one xcconfig file per build configuration and one xcconfig file of shared settings. For example, a typical Xcode project will generate nine xcconfig files: three sets of files for the app target, test target, and project with three files for Debug, Release and Shared in each set.

I hope you find BuildSettingExtractor useful. Even if you are just curious about project build settings, this is an easy way to inspect a project’s build settings without fear of accidentally changing them.

A little more about xcconfig files

By default, Xcode stores all build configuration settings in the project file itself. However, you can tell Xcode to base a build configuration’s settings on a build configuration file instead.

A build configuration file is a text file of key-value pairs. An xcconfig file can also contain comments and include other xcconfig files.

//
// Project-Debug.xcconfig
//

#include "Project-Shared.xcconfig” // Include other xcconfig files

// An xcconfig file is a text file of key-value pairs.
// Use comments to record why you are using certain build values.
// The /*comment*/ and #comment styles are not valid in an xcconfig file.

COPY_PHASE_STRIP = NO
GCC_DYNAMIC_NO_PIC = NO
GCC_OPTIMIZATION_LEVEL = 0
GCC_PREPROCESSOR_DEFINITIONS = DEBUG=1 $(inherited)
GCC_SYMBOLS_PRIVATE_EXTERN = NO
MTL_ENABLE_DEBUG_INFO = YES
ONLY_ACTIVE_ARCH = YES

There are some benefits to using xcconfig files:

  • Build settings are not in project file—this removes one source of project file merge conflicts
  • Build settings can be documented using comments
  • An xcconfig file of shared settings can be included in each build configuration

There are also potential drawbacks to using xcconfig files.  One potential pitfall is that the build settings for a configuration are based on the xcconfig file—but settings set in Xcode override the xcconfig file settings. This can leave you with unexpected build behavior because an errant build setting set in Xcode is overriding the xcconfig file setting.

This issue is compounded by the fact that when new Xcode versions update project settings, the settings are added to the project, not to an xcconfig file.  So when using xcconfig files, some vigilance is required to keep an eye out for build settings being added to the project.  These stray build settings should be moved from the project to the appropriate xcconfig file.

What Next?

BuildSettingExtractor generates xcconfig files from a project—it does not set your project up to use them.  Here are few resources that walk through that process:

I was inspired to release BuildSettingExtractor by Episode #154 of NSScreencast. The episode is a step by step demo walking through the process.

By the way, if you aren’t familiar with NSScreencast, I recommend taking a look. Ben Scheirman (@subdigital) presents weekly bite-sized screencasts covering a wide range of development topics. Some screencasts are free and some, like Episode #154, require a subscription. (Ben also plays guitar with James Dempsey and the Breakpoints, but that has yet to be the subject of a screencast.)

The blog post Using xcconfig Files For Your Xcode Project by Jont Olof Lyttkens (@jontolof) explains how to set up a project to use xcconfig files in Xcode 6.

Finally, Building the Build System by Rob Napier (@cocoaphony) is an older post, written for an older version of Xcode, but the overall concepts and explanation of the benefits are still relevant.

In each of these walkthroughs, instead making a bunch of xcconfig files by hand and then copying and pasting from the project into the correct file, you would use BuildSettingExtractor instead. •